--- /dev/null
+[From a posting in rec.music.classical.guitar]
+
+I started coding on Lilypond because I am fascinated by music and by
+typography. I have never used any egngraving software, and do not
+feel the need to investigate other programs, for the simple reason
+that I have no need of typesetting music. In fact, I almost never use
+Lilypond. I believe that the largest thing I ever entered was Bach's
+WTK-I fugue 2, two pages of piano music. I entered it about 1.5 years
+ago.
+
+I am fascinated by this complicated problem, typesetting music with a
+computer. And that is why I started writing Lilypond: purely for the
+hack value, for the fun of coding. To me, music notation is like a
+giant puzzle. I have been coding on Lilypond and studying music
+notation in my spare time for the past three years. Since this is my
+hobby, strictly spoken I have no obligations concerning Lily, neither
+moral, nor legal. Of course, I am open to pleas and requests and
+often do respond to them, but I have the choice to ignore them, and
+occasionally I do.
+
+Lilypond tries to typeset music *automatically*. We (*) try to put as
+much of our knowledge of music typography into the program as
+possible, and have as little typographical information in the input as
+possible. Basically, you ought to be able to produce nicely printed
+scores with Lilypond without knowing anything about engraving.
+
+ footnote (*): We = me and Jan Nieuwenhuizen, who wrote about
+ 30% of the code, and provided most of the examples.)
+
+A second important issue is that Lilypond is free. Not only in the
+sense that you can download Lilypond at no charge, but it is also free
+as in "free speech". User are free to modify the program to suit
+their needs, and redistribute or sell the program. Moreover, since
+the program can be downloaded at no cost, I don't gain anything if it
+gets more users. And here I mean "use" as opposed to "use and
+enhance" or "use and give helpful comments".
+
+We have not made a program for professionals, and as a result, hackers
+have begun to use it. Some of them have sent me modifications that
+improve the software. This is good for us, because it helps us solve
+our puzzle more quickly. We would have made the program useful for
+professionals like you, presumably they would start using it, be glad
+they didn't have to pay, and ignore me. That would not help me solve
+my puzzle; I don't gain anything.
+
+The system has reached a point that it is useful for quite a lot of
+people (we get about 200 downloads per month from the main FTP site),
+and a lot of my users have thanked me for rescuing them from tedious
+typesetting work using Finale, Encore and what-have-you-more. I have
+a user in Russia who tries make a living by typesetting a 260-page
+book on harmonic-theory using Lilypond. I have a user that can
+typeset his own 45 page orchestral score. Laymen have called our
+printout of the Bach Cello Suite 2 of "professional quality".
+
+This program is now useful to more people than a program solely aimed
+at professional use.
+
+Obviously, we're not finished yet, since the program still contains
+quite a lot bugs. We know the examples on the website contain lots of
+errors. Tweaking the input to fix up and hide the errors would cost
+us a lot of time. Time that is better spent improving the program
+itself. So, we don't hide the errors.
+
+Most of the errors that are shown on the website are not caused by our
+lack of knowledge, but rather by a lack of time and the sheer
+complexity of this big puzzle we're solving.
+
+In the end, we also want a system that is fully tweakable, so you can
+also produce professional quality typesetting. But being
+straightforward to use for non-professionals is more important now.
+
+Finally, I would like to stress that my goals while programming on
+LilyPond are separate from my beliefs of what should be done with the
+program. I can not control what the program is used for, nor do I want
+to. People can typeset lullabies for their baby daughters or racist
+warsongs to help fascist leaders.
+
+A fortiori, I can not control what copyright users place on their
+input and output. If you want to do commercial music editing (with
+LilyPond) you can publish scores on paper and keep the input and
+output to your self. You can publish the score online, and keep the
+input to yourself. You can put the input online as well, while
+forbidding modifications. You can publish the input and allow
+modifications.
+
+This is all up to the user of the software, not to me.
+
+
+Han-Wen Nienhuys,
+
+April 11, 1999
+
--- /dev/null
+Keywords: midi notation music typesetting gnu
+Subject: LilyPond 0.1 released - The GNU Project music typesetter
+
+ BORN
+
+ August 1, 1997
+
+ Lily
+
+ (GNU LilyPond 0.1)
+
+ daughter to Jan 'Janneke' Nieuwenhuizen and Han-Wen 'Wendy' Nienhuys
+
+Lily is a healthy, bouncing baby weighing 345 kilobytes
+
+Visiting hours: 24 hours a day at
+
+ ftp://pcnov095.win.tue.nl/pub/lilypond/lilypond-0.1.0.tar.gz (Europe)
+ ftp://alpha.gnu.ai.mit.edu/gnu/lilypond-0.1.0.tar.gz (US)
+
+You can see some babyfood, diapers and pictures at
+
+ http://www.stack.nl/~hanwen/lilypond/index.html
+
+You can send your congratulations to Janneke (janneke@gnu.org) and
+Wendy (hanwen@stack.nl)
+
+
+GNU LilyPond - The GNU Project Music Typesetter
+
+
+
+``WHAT IS GNU LilyPond?''
+
+Well Mike, GNU LilyPond is a program which converts music definition
+files into visual or auditive output: it can typeset formatted sheet
+music to a TeX file and (mechanical) performances to MIDI files.
+
+
+We have been working very hard on this system for the past year, and
+we finally think that it is ready to be used and hacked at by a larger
+public than us.
+
+
+WHY ?
+
+We want to create tools to produce production quality scores and parts
+of public domain music.
+
+
+BUT ..
+
+We haven't yet reached that goal:
+
+* The quality of the output isn't good enough yet due to some
+unsophisticated algorithms
+
+* Some features haven't been implemented, due to lack of time; most of
+them can be done quite simply
+
+This is why we don't consider this software stable yet. It generally
+does what it is supposed to, but we reserve the right to make
+(incompatible) changes to the input format. We consider it
+of BETA quality.
+
+
+WE WANT YOU!
+
+You can become a user, but we'd really appreciate it if you would start
+hacking at Lily, and help us advance our project more quickly.
+
+
+``YES, IT IS FANTASTIC! WHAT DO I NEED?''
+
+For compilation you need
+
+ Unix. (windows32 is known to work, too)
+ GNU C++ v2.7 or better, with libg++ installed.
+ GNU make.
+ Flex (2.5.1 or better).
+ Bison. (1.25 or better)
+
+For running you need
+
+ TeX
+ MusiXTeX fonts
+
+The MusiXTeX fonts are part of the MusiXTeX package version T.73,
+available at any CTAN mirror, or http://www.gmd.de/Misc/Music/
+
+
+``WHAT CAN LILYPOND DO?''
+
+ASCII script input (mudela), with identifiers (for music reuse),
+customizable notenames.
+
+MIDI output lets you check if you have entered the correct notes.
+MIDI to Mudela conversion through the mi2mu program.
+
+Multiple staffs in one score. Each staff can have a different meters.
+Multiple voices within one staff (up to four handled graciously);
+beams optionally shared between voices. Multiple scores within one
+input file. Each score is output to a different file.
+
+Beams, slurs, chords, super/subscripts (accents and text),
+general n-plet (triplet, quadruplets, etc.), lyrics, transposition,
+dynamics (both absolute and hairpin style), clef changes, meter
+changes, cadenza-mode, key changes, repeat bars.
+
+Integration with LaTeX through Perl scripts.
+
+
+``WHERE CAN I FIND MORE INFO?''
+
+Sources for this project are on
+
+ ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
+ ftp://alpha.gnu.ai.mit.edu/gnu/ (US)
+
+More detailed info and examples can be found on the webpage at
+
+ http://www.stack.nl/~hanwen/lilypond/index.html
+
+
+THANK YOU,
+
+Thanks go out to Mats Bengtsson, Werner Lemberg and Richard Stallman
+for comments and contributions.
+
+
+**** NOTE
+
+LilyPond might have a minor bug if you use glibc-2; we will look into it
+If you use glibc-2, please try 0.1.0 to see if it works and, download 0.1.1
+when it's available.
+
+LilyPond might exhibit a g++ bug on Solaris 1.5 (The stack frame gets corrupted
+by a constructor) if you compile with -O2. We don't know workarounds.
+
+ --- * ---
+
+ We would like to dedicate this program to all the friends that we
+ met through music.
+
+
+ Those deserving special mention (in no particular order):
+Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn,
+Maartje, Suzanne, Ilse (gee, again?) and last (but certainly not least)
+Janneke!
+
+ HWN
+
+ That's a nice thought, Wendy. I've got a few too, to spread
+the credits a bit (Again, no particular order) Michelle, Illushka,
+Ruth, Eva, Fro/ydis, Monique, Noor, Sascha, Monique, Ilse, Monique,
+Eva, Roos, Judith, Tim and, of course, Wendy!
+
+ JCN
+
+
+Of course, our other friends in the `Eindhovens Jongeren Ensemble'
+(http://www.stack.nl/~hanwen/eje.html) cannot go unmentioned either.
+
+
+ --- * ---
--- /dev/null
+Keywords: midi notation music typesetting gnu font engraving
+Subject: GNU LilyPond 1.0 released - The Music Typesetter
+
+GNU LilyPond - The Music Typesetter
+
+
+WHAT IS LilyPond?
+
+LilyPond is the GNU Project music typesetter. This program can print
+beautiful sheet music from a music definition file. It can also play
+performances to a MIDI file.
+
+
+WHAT'S NEW SINCE VERSION 0.1?
+
+* LilyPond now includes a completely new music font: the Feta font.
+ We were quite disappointed with available music fonts, so we rolled
+ our own. We did our best to copy the best symbol designs available,
+ and we think that we've succeeded in doing so. We're proud of the
+ result, and we hope you agree, so go check it out!
+
+* More elegant output due to
+
+ * more sophisticated beam/slur formatting
+ * better spacing
+ * better line breaking
+ * better font design
+ * PostScript output for variable symbols
+
+* Lots of bugfixes
+
+* More robust, flexible and tweakable design
+
+* Better MIDI file importing
+
+* Easier to use due to better shell scripts and input format
+enhancements
+
+* MusixTeX is not needed anymore
+
+* Faster
+
+
+
+FEATURES
+
+* Multiple staffs, polyphonic music (more voices on one staff),
+Polymetric music.
+
+* Support for full orchestral score: Hara_kiri systems (lines with
+only rests are automatically skipped), multi-measure rests, bar
+numbering, brackets at the left.
+
+* Optimal beam slopes, slur/notehead collision resolution, dashed
+slurs. Formatting parameters are runtime tunable
+
+* Very beautiful symbols. Variable size symbols generated on the fly
+as embedded postscript.
+
+* MIDI output
+
+* Optimal linebreaking, manual intervention possible. Linelength is
+settable per line.
+
+* Readable yet very fast to type input language. With configurable
+note names and identifiers. Comes with an emacs-mode
+
+* With lots of examples (among others a fragment of Van Beethoven's
+Coriolan, J.S.Bach Cello Suite II, F. Schubert "Leise flehen meine
+Lieder")
+
+* Runs on UNIX and Windows-32.
+
+* Easy generation of titling.
+
+* WWW browsable documentation.
+
+* Support for Urtext: separation of modern and original interpretation.
+
+* Polyphonic music (with automatic collision resolution)
+
+* Spacing and collision resolution of accidentals and syllables is
+done automatically
+
+* Internationalisation support (Italian, Dutch)
+
+* Multiple font sizes within one piece
+
+* Integration with LaTeX and YODL
+
+
+MORE INFO
+
+Sources for this project are on
+
+ ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
+ ftp://ftp.gnu.org/pub/gnu/
+
+More detailed info and examples can be found on the webpage at
+
+ http://www.cs.uu.nl/~hanwen/lilypond/index.html
+
--- /dev/null
+-*- text -*-
+
+
+Keywords: midi notation music typesetting gnu font engraving
+Subject: GNU LilyPond 1.2 released - The Music Typesetter
+
+GNU LilyPond - The Music Typesetter
+
+
+WHAT IS LilyPond?
+
+LilyPond is the GNU Project music typesetter.
+
+LilyPond produces beautiful sheet music using a high level description
+file as input.
+
+
+BROWSE
+
+Documentation and examples can be found on
+
+ http://www.cs.uu.nl/~hanwen/lilypond/
+
+
+DOWNLOAD
+
+Sources for this project are on
+
+ ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/v1.2/ (Europe)
+ ftp://ftp.gnu.org/pub/lilypond/
+
+Prepackaged i386 and PPC packages for both Debian and RedHat GNU are
+also available.
+
+
+WHAT'S NEW?
+
+* Large cleanups, enhanced design and GUILE integration for smaller
+ memory footprint and more flexible code.
+
+* Direct output to PostScript (optional), PDFTeX or as GUILE script
+ (default output still to plain TeX).
+
+* Convertors for ABC and MUP formats.
+
+* Font: now available as scalable PostScript. New glyphs: time
+ signature, more note heads.
+
+* Enhanced input: semi-automatic beaming, (nested) tuplets, (nested)
+ repeats, chordnames, automatic Lyrics durations.
+
+* Grace notes, volta brackets, multiple styles for note heads and
+ time signatures, breathing signs, lyric extenders, cross staff
+ beaming and slurring.
+
+* --safe option for the paranoid.
+
+* More elegant spacing. Text is spaced exactly.
+
+* Lots of bugfixes.
+
+
--- /dev/null
+
+This file documents changes in version 0.0
+
+august 1
+
+VERSION 0.1.0
+
+ - bf: output tempo to track 0 too
+ - bf: don't forget to copy id_str_, so moved into Music
+
+pl 78.jcn2
+ - INFTY doze fixes
+
+pl 78.jcn1
+ - fix for multi-staff midi: wohltemperirt.ly, standchen.ly
+ - doze fixes
+ - bf: conflily, configure (text)
+*****
+july 31
+pl 78
+ - bf: Midi_instrument
+ - added enable/disable defaults to help.
+ - incredibly ugly NAME_MEMBERS(); bug. Immediately changed to
+DECLARE_MY_RUNTIME_TYPEINFO;
+ - \stem -1 -> \stem \down in input
+ - bf: slurchar index
+ - configure warnings
+ - preliminary stuff for multiarch building
+ - #!/usr/bin/perl fixes (AO)
+ - some Makefile cleanups: now faster.
+
+pl 77.jcn2
+ - Midi_instrument
+
+******
+july 29
+pl 77
+ - some fixes for internal compiler errors
+derive from Pointer_list with default dtor gives error with -O2
+ - .ini -> .ly
+ - lyrics fix
+ - Performer beautification: got rid of set_track(), midi_output()
+ - pseudo RTTI for midi-items
+ - bf: Performer*::print()
+ - links.pod
+ - Voice_element -> Request_chord
+ - fixed flex problems: stdin input works again
+ - Documentation/Rules.make, make-website via make
+ - spacing: now add basicspace
+
+*******
+july 28
+pl 76
+ - mudela version bumped to 0.1
+ - mudela-book
+ - doco updates, now some stuff in LaTeX
+ - junked book.{ly,tex} example
+ - progress indicator
+ - rhythm.ly updated
+ - removed mf sources from distribution due to (c) stuff
+ - allowal of breaks handled cleanly
+ - junked Subtle_reqs, junked Request_iterator. Request
+ iteration now by Voice_element_iterator
+ - Piano_bar, Piano_bar_engraver, Span_score_bar_engraver,
+ Span_score_bar
+ - Swallow_performer
+ - removed Staff_engravers, grouping into Line_group_engraver
+ - Head_column as base for Rest_column,Note_column
+ - Score_column derived from PCol
+ - regurgled Line spacing: interface and implementation
+ separate. Idealspacing moved into Spring_spacer
+ - Gourlay style linespacing
+
+pl 75.jcn6
+ - {lyric,meter,key}-performer
+ - span-brace-* (Removed again. Such is life)
+ - doze compile
+ - midi output, notes only
+ - working midi output -- hacked
+ - doze compile, mingw32 configure (still triggers gcc int. comp err)
+
+pl 74pre.jcn2
+ - mi2mu fixes after scott snyder <snyder@d0sgif.fnal.gov> [sss]
+ - mi2mu update for mudela 0.0.61
+ - conflily fixes
+
+*******
+july 21
+
+pl 75
+ - inbook.ly & book.tex example.
+ - natural width: linewidth = -1.0\cm
+
+pl 74pre.jcn1
+ - oversimplified midi output thru performer hierarchy
+ - bf: Spanner::doprint
+
+pl 72pre.jcn1
+ - naming fixes; some iter*() explicitations
+ - removed acceptor.hh
+ - *performer*: second draft of midi (audio/...)
+
+*******
+july 9
+
+pl 74pre
+ - Input_engraver -> Input_translator
+ - bf: span start/stop is now a "used" col.
+ - Rest_column/Rest_collisions bugfixes
+ - bf: crescendi.
+ - Spanner do_print()
+
+******
+july 7
+pl 73pre
+ - some refs doco.
+ - move Input_engraver into Paper_def
+ - junk Interpreter
+ - naming: Request_engraver -> Engraver,
+ - Music_iterator::next() -> process_and_next()
+ - junk Voice_engravers
+ - Span_bar, Span_bar_engraver
+ - Vertical_align_engraver
+
+*******
+july 2
+pl 72pre
+ - \paper{} syntax: var = 1.0\pt;, with an Assoc array
+ - sketch of MIDI Performer classes.
+ - bf: memleak in parser
+ - naming: Acceptor -> Translator
+ - input: bf collisions.ly, scales.ly
+ - bf: [r8 c8]
+ - naming: Register -> Engraver
+ - force \\ on identifiers
+ - doco updates
+ - musixtex T73 fonts
+
+pl 70.mb
+ - bf: find syntax in Variables.make
+*****
+july 1
+pl 71pre
+ - nested \melodic and \lyric constructs
+ - init id's, Input_register aliases.
+ - bf: notehead x-swap
+ - bf: auto-keys.
+ - bf: first clef
+ - junked \init_end; construct
+ - Preparatory work for MIDI output:
+ * Acceptor as baseclass for Register_group_register
+ * Global_acceptor as interface of Register to Score
+ - bf: empty voice
+ - Lyrics: partially working
+ - some doco updates (junks, mostly)
+
+
+******
+june 30
+
+
+pl 70pre
+ - bf: text Script
+ - bf: Script::dir_i_ checks.
+ - bf: script stacking
+ - bf: Text_spanner::do_subst.
+ - bf: Text_spanner::Text_spanner(Text_spanner&)
+ - bf: script priority read from script.ini
+ - bf: Script_def::do_equal_b
+ - bf: script dims.
+ - mudela: ; obligatory for \paper {}.
+ - some cosmetic changes involving RTTI macros
+
+*******
+june 29
+pl 69pre
+ - bf: whole rest position, whole/half rest dots.
+ - bf: scripts
+ - reg termination
+ - centered bars
+ - bf: init of Tie::dir_i_
+ - bf: Staff_side depends on staff_sym_
+ - bf: Script::do_substitute_dependency() now implemented
+ - more print info (also in output)
+ - bf: Vertical_align_element
+ - stemless beams now allowed (with warning)
+ - bf: Rest_column::stem_l_ init
+ - merge rests.ly with collisions.ly
+
+pl 67.jcn3
+ - rests under beam [c8 r c]
+
+pl 67.jcn2
+ - first attempt at rest collisions
+ - rests.ly
+
+pl 67.jcn1
+ - beam stem length: beams.ly
+ - bf: mingw configure
+ - re: conflily
+
+******
+june 26
+pl 68pre
+ - doco: other-packages.pod, lots of lilyliterature.pod
+ - last duration mode now is default.
+ - some OpusTeX stuff.
+ - bf Y2K in convert-mudela
+ - Grand rewrite of Music/Register stuff:
+ * separation of Y and X-elt-groups
+ * Registers: info up: broadcasts, info down: get_xxx_info()
+ * Registers: try_request works from bottom to top of tree.
+ * Score_elem empty_b_ and transparent_b_ flag
+ * Junk Staff_column, and find the requests while walking the
+ Voices.
+ * Score_register
+ * Staff_group, Score_request_register.
+ * align key/Meters/bar across staffs
+ * junked Staff, Staff_column, Staff_walker, Complex_walker,
+ Request_column Pulk_voice, Pulk_voices, Walker_registers,
+ Voice_element,
+ Input_score, Input_staff, Input_music and a lot of
+ parserjunk.
+ * mudela: lots of structure changes : now much simpler
+ * generation of pre/postbreak items now in Score_elem with deps.
+
+ - bf: make_patch explanation
+ - bf: make install TeX stuff
+ - mudela: . mandatory for REALs
+
+
+pl 67
+ - damped beamslope after wanske
+
+******
+june 3
+pl 67
+ - sketch of Music classes
+ - General_script_def as baseclass for Text_def and Script_def
+ - bf: clean lib/out/liblily.a
+ - bf: rests shorter than 1/4
+
+pl 66.jcn3
+ - bf: make uninstall
+ - conflily
+ - f: some pedaling
+ - plet hack removed :-( [ c c c ]2/3 -> [2/3 c c c ]1/1
+
+pl 66.jcn2
+ - bf: bar, Hilfslinie
+ - bf: configure for mingw32
+
+pl 66.jcn1
+ - WIN32 -> WINDOWS32, more win32->windows32
+ - some GNU/Linux changes
+ - cygnus b18 / mingw update
+ - doze compile; bf: p-score.cc compares
+ - reincluded toccata fixes
+ - small stuff: vi tags, typos, bibl
+
+******
+may 27
+pl 66
+ - make_website --jpeg, --png and --gif
+ - win32 -> windows32
+ - bf: Score_elem::TeXstring assert fail
+ - bf: headswap with stemdown
+ - bf: broken tie
+ - bf: broken slur
+ - bf: accidental dims
+ - bf: measure bar width
+
+
+******
+may 26
+
+pl 65
+ - bf pathfind /root/file
+ - massive Score_elem rewrite:
+ * group_element_i_ count
+ * support for removing an individual Score_elem cleanly.
+ * moved dep stuff into class Directed_graph_node
+ * Score_elems can be copied and deleted freely.
+ * junk PStaff
+ * Spanner_elem_group
+ * Line_of_{score,staff} now are Score_elems
+ * clean dep handling upon deletion
+ * delete unbroken spanners
+ * added a break_processing round.
+ * Super_elem
+ - junk Complex_staff,
+ - clean {lily}?proto.hh
+ - Element_group
+ - Score_elem now as virtual base class everywhere
+ - naming: Staff_elem -> Score_elem
+ - bf: make in toplevel dir
+ - bf: broken tie y-pos
+ - bf: sharing 4th, 8th and 16th noteheads
+ - bf: overlapping chords. <\multivoice c d >
+
+pl 64.wl
+ - new stem direction code
+ - bfs: wohltemperirt.ly (thanks, Werner)
+ - bf: stem direction
+
+pl 63.jcn2
+ - doze compile
+
+pl 63.jcn1
+ - bf: mi2mu mudela commands
+ - bf: mi2mu tracks
+ - mi2mu quantify tuning
+ - mi2mu TODO
+
+*********
+may 16
+pl 64
+ - exe's now built in out/
+ - toplevel Makefile dep from make/Toplevel.make.in
+ - make_website: add version footer
+ - make_website: bf dist *.txt
+ - bf: fix loose bars : \meter 4/4; c1.
+ - Staff_elem -> Score_elem
+ - bf <cis cis>
+ - vbrace lookup
+ - resync barcheck
+
+*******
+
+may 15
+pl 63
+ - bf: segfault during MIDI output with mi2mu output.
+ - kludge: parse error beyond eof
+ - don't read ini if toplevel file not found
+ - accumulate \kern in TeX output.
+ - bf: try to prevent long lines; TeX breaks on them.
+ - naming: Pointer->Link, IPointer->Pointer
+ - bf: \plet didn't work (MB)
+ - GMP manifesto.
+
+pl 61.jcn4
+ - mi2mu -p -s16 fugua2.midi getting better!
+ plus factor 2 mi2mu speedup (fugue2.midi 5.50user)
+ - bf: Duration_convert quantify threshold down
+ - bf: (on quantify): tcols quantified; no silly voices
+
+pl 61.jcn3
+ - lily parsing speedup: backup rules for lexer.l
+ - bf: mi2mu, using midi_voice list...
+
+pl 61.jcn2
+ - all in all mi2mu speedup of about factor 8 since pl61
+ (fugue.midi 82.72user to 10.30user on a 586.133)
+ what about lily?
+ - binary search on track-columns
+ - mi2mu IP*list to Array (implications?!) conversion
+ - mi2mu parsing speedup: backup rules for midi-lexer.l
+ - bf: zero denominator
+
+**********
+may 14
+pl 62
+ - make clean bf: remove lex & yacc files too
+ - added kludge in case measure too long
+ - added kludge in case of unconnected columns.
+ - kludged columns get error marker
+ - kludged lines get error marker
+
+
+pl 61.jcn1
+ - smarter + faster duration-convert using Array
+ - bf: mi2mu compilation/duration-conversions
+ - lots faster mi2mu, hopefully does type 1 too...
+pl 60.jcn1
+ - mi2mu handles non-quantified rests, try mi2mu -b wtk-i/fugue2.midi
+
+
+
+**********
+pl 61
+ - scales.ly bugfix: dimensions default to ((0,0), (0,0))
+ - naming: PointerList->Pointer_list
+ - tied notes don't get accidental
+ - bf: crescendo size
+ - fixes: make_patch,
+ - bf: _"text" direction
+ - mailing list into lilypond.pod
+
+pl 60.mb
+ - set_flower_debug: Warning if -d is used when NPRINT is defined.
+ - Fixed several TeX details. vcenter renamed since it interfered
+ with LaTeX. Position of accents changed.
+ - New example; scripts.ly
+ - table_sixteen: added scriptdefinition (Lilypond breaks if a
+ script is defined without dimensions).
+ - bf: ifndef typos in p-score.cc, choleski.cc
+ - bf: Slur::do_post_processing(), whole notes caused SIGSEGV.
+
+(ascension break :-)
+*******
+pl 57.jcn4
+ - mi2mu handles rests (quantified only)
+ - fixed configure buglet
+ - "!date" Fri May 2 02:18:12 MET DST 1997
+
+pl 60
+ - Request_register::get_feature(), tie direction, Slur direction
+ - lilypond output is now directly texable.
+ - make_website checks return status
+
+*******
+may 5
+pl 59
+ - Slur now into voicegroups, and take stems into account.
+ - bf: rest size in table.
+ - split Slur in baseclass Bow
+ - Tie, Tie_req, Tie_register
+
+******
+may 2
+pl 58.jcn1
+ - bf: toccata-fuga-E.ly
+
+pl 57.jcn4
+ - mi2mu handles rests (quantified only)
+ - fixed configure buglet
+ - "!date" Fri May 2 02:18:12 MET DST 1997
+
+pl 58
+ - lexer cleanup
+ - national chars in lyrics
+ - \stem 2; bf
+ - long comments: %{ %}
+ - *.ini mode bf
+ - bf: partial may be everywhere
+ - bf: meterchange not at start of measure
+ - some doc updates
+ - bf: stem too long if stem is down.
+
+pl 57.jcn3
+ - dank je schat, voor wtk-i
+ - mi2mu tries to handle rests
+ - "!date" Thu May 1 02:34:04 MET DST 1997
+ - maak je het niet te laat schat?
+ XXXX HWN
+
+pl 57.jcn2
+ - small toccata-fuga-E.ly fixes
+ - \bar "||"; is now doublebar, "|." is finishbar
+ - collision hshift fix, with on-line assistance
+******
+pl 57
+ - lots of TODO doco
+ - text alignment bugfix
+ - bugfix Voice_group_regs::get_register_p() now is actually called too
+ - bugfix init of Text_item::pos_i_
+
+pl 56.jcn1
+ - toccata-fuga-in-E.ly, excerpts with real-life collisions
+ - \{l,r}{b,f}{toe,heel} --- using cmsy fonts...
+ - pedal.ly
+
+pl 55.jcn1
+ - mi2mu man page
+ - make doc fixlet
+ - \[lr]heel \[lr]toe scripts (happy pedal studies, pa)
+ - lyric with width
+ - removal of some example files
+
+pl 56.mb:
+ - last duration fix
+ - makefile fixes
+ - space rest
+ - swedish note name update
+
+******
+pl 56
+ - Massive Rest/Stem/Collision/Note_column rewrite: resolve
+notehead/rest ambiguities and bugs. eg, [c8 r8 c8]
+
+pl 54.jcn1
+ - standchen.ly: repeats; lyricii to end
+ - convert-mudela: help + usage
+ - fixed midi key/meter-change (triggered by martien.ly) bug
+
+******
+April 23
+pl 55
+ - staff-side robustification
+ - script-on-rest bug
+ - doc update
+ - transpose syntax
+******
+pl 54
+ - bugfix Colhpos.cc::OK assert fail.
+ - Inclusion of MusixTeX MF files,
+ - detection of MF dir
+pl 53.hwn
+ - stacked lyrics
+ - configure/make buglets.
+******
+pl 53
+ - spurious accidental bug.
+ - simultaneity check.
+ - added AUTHORS.pod
+ - convert-mudela auto from guess
+ - include -> \include
+ - change order of opening parse/init file
+ - Pulk_voice, Pulk_voices
+ - Request_column
+ - revised request-from-voice extraction. Now much faster
+
+******
+april 17
+pl 52
+ - Buildroot RPM
+ - tex-prefix and tex-dir sep'd (here you are jan)
+ - convert-mudela framework
+ - Collision_register, Collision
+ - \hshift 1; input
+ - Features changed
+pl 50.jcn1
+ - LILYINCLUDE dir searched before DIR_DATADIR(?)
+ - lily reads from stdin again (but does not now when to stop)
+******
+pl 51
+ - transposition bugfix + doco
+ - LilyPond -> GNU LilyPond
+ - bugfixes for Staff_side and Note_column*
+ - wohltemperirt: complete
+
+******
+april 11
+
+pl 50
+ - merge rest / notehead.
+ - Staff_side as a base class for most "staff-side" symbols.
+ - version check
+ - Note_column_register, Note_column
+ - multiple scripts
+
+********
+april 8
+pl 49.jcn1
+Bugfix
+ - configure[.in], make/Configure_variables.make.in c++ (=doze fix)
+ - "configure; make" ok for doze, win32 target may be removed now
+ - win32/gcc 2.7.2 compile fixes -- why does this all compile
+ (without warnings, why can-t i even trigger warnings) under
+ linux/gcc-2.7.2.1? it's quite a tedious job fixing this
+ shit _on doze_ all the time.
+ * fixed #includes global-regs.cc, staff-info.cc, staff.cc
+ * key.hh:Key() -> Octave_key()
+ * added missing lily/include/input.hh: Input( Input const& )
+
+pl 49
+ - lsm template
+ - clef in cadenza mode.
+ - notename clear
+ - \command bla; for \meter, \clef, \octave etc.
+*******
+pl 48
+ - notenames init
+ - Duration order -> grouping
+ - broken key s
+ - default octave
+
+******
+april 3
+pl 47
+ - dynamic flowerlib
+ - Input mods: now use Source_file iso Sources
+ - makefile lib deps restructured
+ - make_website now produces in out/
+
+pl 46
+ - examples.pod
+ - LILYINCLUDE env var.
+ - push/popgroup
+ - website updated
+ - Swallow_register
+ - Lyric_register.
+ - Staff_sym_register
+ - user settable register config
+ - struct Input now used iso defined_ch_C_
+ - Walker_registers and Staff_registers separated
+ - dynamic-reg -> hairpins
+
+pl 44.jcn2
+ - doze configure/compile fixes
+ - doze make refixed
+ - faq
+ - install mudela manpage too
+ - RedHat spec lilypond.spec fixed
+ - target: rpm (make RedHat packages)
+
+******
+Mar 26
+pl 45
+ - Removing unused Voice_regs & Voice_groups
+ - -O2 bugfix
+
+pl 44.jcn1
+ - merged 42.3 42.jcn4 code trees (see stuff below)
+ - moving towards Mudela 0.1 (again)
+ * keyword "music" dropped for horizontal music
+ * keywords "\lyric" "\melodic" introduced, e.g.:
+ melody = \melodic { c c | g g }
+ * removed level of indirection:
+ - staff initialisable with music identifier list:
+ \staff{ global melody }
+ - \score and staffs alike
+ - gnu standard(?) help texts
+ - configure "creates" toplevel Makefile from make/Toplevel.make
+
+Bugfix
+ - fixed mi2mu
+ - write meter to track0 too...
+ - default octave
+ - new Sources in My_midi_lexer: sourcefile_p_ = get_file_l(): oeps.
+ (ain-t hungarian grand?)
+
+Examples
+ - updated for mudela 0.1
+
+******
+pl 44
+ - naming: _c_l -> _C
+ - pure parser, My_lily_parser
+ - ''a iso ``a
+ - Includable_lexer
+ - junk Input_file
+ - Duration in parser, Duration restructuring
+ - grandiose lexer hax. Flex should be fixed, really.
+ Lexer much faster now.
+ - opps. mi2mu broken
+
+******
+pl 43
+ - transposition.
+ - $variable&@name
+ - warnings if incorrect mode
+ - missing scsii measure
+ - declaration used check.
+ -
+
+pl 42.jcn4
+ - lily writes midi meter/key changes from requests
+ - mi2mu:
+ + write mudela 0.1
+ + write bar change requests
+ + more tunable quantisation
+
+Examples
+ - half-new-menuetto.ly converted to mudela -almost- 0.1
+ - new mi2mu of bach's wtk pre1/fugue1
+
+pl 42.3 (jcn version)
+ - oeps, branched source tree
+
+pl 42.hwn3
+ - const naming change (T const <-> const T)
+ - Mudela 0.1 (roughly the same as below..)
+
+pl 42.3
+ - moving towards Mudela 0.1:
+ * all keywords must be preceded by backslash '\'
+ * explicit lexer switches '$' and '@' dropped
+ * keyword "music" dropped for horizontal music
+ * keywords "\lyric" " introduced, e.g.:
+ melody = \melodic { c c | g g }
+ * staff initialisable with music identifier:
+ \staff{ melody }
+ * chords: < c e >
+ * octavate ''c``
+ * \meter{ 2/4 }
+ * \octave{ ''`` }
+ - configure sets CXX (to c++, commonly)
+Internal
+ - renamed lexer.hh, mylexer.cc My_flex_lexer to my.lily.lexer.*
+
+pl 42.2
+ - new lilyinput (Mudela 0.1) doc.
+Examples
+ - new-twinkle.ly (in Mudela 0.1, hopefully)
+
+pl 42.1
+ - further Makefile revamping.
+ - moved flowerlib
+
+*******
+pl 42
+
+
+pl 41.hwn3
+ - struct Lexer_prefs
+ - parser bug
+ - make uninstall
+
+pl 41.hwn2
+ - make file rehack
+ - spec update
+ - make install
+ - detect TeX directory
+
+pl 41.hwn1
+ - cygnus configure,
+ - updated versioning
+ - install.pod
+
+pl 41.jn1
+Bugfix
+ - doze compile
+*******
+pl 41
+ - release
+
+pl 40.3
+ - all of the above
+ - hw's configure.in
+ - p-name.xx fixes
+
+pl 40.hwn1
+ - hairpin dynamics
+ - notename now as identifier. Parser/lexer cleanup
+
+pl 40.2
+ - mi2mu --blonde-durations, --no-silly options.
+ - mi2mu starts to look promising, see examples
+Examples
+ - pre1.midi.ly, fugue.midi.ly
+Internal
+ - Duration handles blonde midi-durations
+ - More settings for Duration_convert
+ - lily writes meter too (ugh, howto?)
+Bugfix
+ - mi2mu auto track number fix
+ - mi2mu / lily Midi_tempo fixed/added
+
+pl 40.1
+Bugfix
+ - lily midi output track 0 name
+ - mi2mu tempo fixed
+ - make out/make and out/make/Site.make in configure script!
+ - mi2mu double newline fix
+
+
+******
+Mar 11
+pl 40
+ - release
+
+pl 39-5
+ - own versioning for mi2mu: 0.0.10
+ - some file renaming mi2mu
+pl 39-4
+ - all of the above
+
+pl 39-hwn2
+ - last bar bugfix
+Internal
+ - simple dynamics
+ - experimental RPM spec.
+ - doco update.
+
+pl 39-3
+ - all of the above
+ - m2m renamed to mi2mu
+ - better line breaking in mi2mu
+ - (somewhat broken) progress indicator for mi2mu
+ - mi2mu output === lily input (in names and durations,
+ always assuming voices > 1 though)
+
+Bugfix
+ - midi: note on/off only once per pitch per track
+ (sending all note-on events introduces cool mi2mu feature)
+ - make clean removes deps too
+ - mi2mu notename/accidental/octave, and key fixed
+
+Internal
+ - auto create of out-dirs, config headers, using tag file .GENERATE
+
+Examples
+ - stanchen.ly debugged
+
+pl 39-2
+ - configure script help and in topdir again, duh.
+ - auto configure upon virgin make
+ - configured makefile stuff in make/out/
+
+
+********
+pl 39-1
+ - doze target (for 16 bit dos xcompiler: gcc-go32)
+Internal
+ - make/User.make; C..FLAGS sorted out
+Bugfix
+ - make clean...
+
+pl 39
+ - new make structure, featuring:
+ * top-level/sub-level build
+ * auto custom-library dependencies/build
+ * top-level/sub-level dist
+ * minimal(? can even smaller) specific Makefiles
+ * which makes for simple lib/exe module split (make/Template.make)
+ * integrated flowerlib
+ * all stuff into subbirs (make/Stuff.make)
+ * all headers into <module>/include dirs (make/Include.make)
+ * all output into <module>/out (executables into bin/)
+ * more make features, like make config, make help
+ * small lily lib
+ * lilypond-x.x.x/.version for toplevel lily version
+ * lilypond-x.x.x/<module>/.version for <module> version (eg: flower)
+ * versioning using additional optional MY_PATCH_LEVEL
+ for easy make_patch
+
+ - bin/cptogen
+
+Internal
+ - generic m2m header: m2m.hh
+
+Bugfix
+ - small fixes, make, dist, configure
+
+pl 38-5
+ - all of the below, e.g. new filenames and new makefile
+ structure patches merged
+******
+pl 38
+
+Internal
+ - great filename renaming operation with - convention.
+ - printing methods for paper_def/lookup/symtab(s)
+ - untied all registers from complexwalker. Now registers are
+intrinsically hierarchical. All walker communication is done via a
+"top level" register.
+
+pl 37-3
+ - m2m handles voices
+ - instrument, track_name, copyright/left stuff for m2m/ly
+
+Internal
+ - Midi_voice
+
+pl 37-1
+ - text, key, tempo event in midi output/ly input
+
+Internal
+ - simple makefile structure, allows for multiple projects
+
+******
+pl 37
+
+
+Documentation
+ - language.pod as starting point for mudela devel.
+
+ - Jan's patches:
+Features
+ - m2m patchy --no-triplet option;
+ lilypond accepts m2m's real midi output (hand-add red tape)
+ - m2m output only valid durations, resync option wip
+ - m2m produces .ly output
+Internal
+ - simpler and better naming for Duration*
+ - the great String renaming / index to base=0 change
+ - Track_column, Lily_stream
+ - Duration, Plet, Duration_convert taking load off duration calc.
+Bugfix
+ - m2m duration calc
+
+
+
+******
+pl 36
+ - Jan's patches:
+ - do MIDI rests cleanly.
+ - lily/m2m: time and tempo fixed for metric timing
+Internal
+ - Midi_tempo
+ - m2m parses more midi stuff (all of bach-wtc); timing??
+ - m2m recognises some commandline options
+Examples
+ - fixed midi.ly
+
+*******
+Feb 25
+pl 35
+ - Register_group
+Bugfix
+ - alignment of breakable items.
+
+*******
+pl 34
+ - better midi syntax.
+ - --midi,-M option.
+ - preliminary midi2mudela (/mudela2midi) converter: m2m (JCN)
+Internal
+ - m2m sources: midi-*; (JCN)
+ - new Midi_walker, fixes several MIDI bugs.
+ - junked Midi_staff, Staff_column children, Midi_walker
+ - Midi_output
+
+pl 33-1
+ - m2m parses midi
+Internal
+ - Binary_source_file
+ - Source_file::error_str simplified
+*******
+pl33
+Examples
+ - Swedish notenames (MB)
+
+pl pre33-2
+
+Bugfix
+ - midi pitch
+
+Features
+ - Jan's patches, see below
+Bugfix
+ - some midi bugfixes.
+
+pl pre33-1 (JCN)
+
+
+ - midi output using pitches iso notename
+Examples
+ - added midi output (some midi output files broken?)
+ - all melodic fixed (except for error.ly:-)
+ - midi.ly
+Bugfix
+ - midiwalker line break
+ - empty/nonexistent include at top of ly
+ - midi #tracks
+ - midi pitch c0
+ - midi poor man-s staff dynamics
+Internal
+ - Midi_column, Midi_staff, Midi_walker
+
+pl pre33 (JCN)
+ - Jan's patches, see below
+
+Features
+ - simple plet notation (JCN)
+ - lyrics centred, but no fully suppored? (JCN)
+Internal
+ - Midi_stream
+ - Mididef
+ - Midi_item, Midi_pitch, Midi_duration
+ - Midi_chunk, Midi_header, Midi_track
+ - preparations for midi output
+ - no exit upon context error (JCN)
+ - converted some "warnings" to errors; no output (JCN)
+Bugfix:
+ - simple plet bugfix
+Examples
+ - updated standchen, menuetto (JCN)
+ - new plet notation (JCN)
+ - plet.ly (parse and spacing tests) (JCN)
+
+*******
+pl 32
+Features
+ - multiple meters, see rhythm.ly
+ - skip syntax/Skip_req
+ - score_wide_music: commands in staff now override commands in score.
+Internal:
+ - command carnage
+ - Key_register
+ - Bar_register
+ - Meter_register
+ - meters now kept in baseclass Staff_walker
+ - Score_walker (to ease MIDI output)
+Doc:
+ - Hungarian doco added to CodingStyle
+
+pl 32-1
+ - music processing speedup
+ - website added to doco
+ - clef must *inside* music
+ - fixed spurious "beam too narrow" messages.
+Internal:
+ - merge musical / non-musical staff_column
+ - musical/ non-musical requests
+ - Clef_register
+ - split up request.hh, Musical_req vs. Nonmusical_req
+*******
+pl 31
+
+Examples
+ - Coriolan example (JN)
+ - standchen updated
+Bugfix
+ - calcideal assertion bugfix
+*******
+Feb 12 13:55
+pl 30
+
+Features
+ - better multivoice spacing
+ - move rest in multivoice staff
+ - errors in TeX output now warnings
+ - progress indicator
+ - music processing speedup.
+Internal
+ - make spanner for staffsym; scrap Line_pstaff
+ - scrap simplestaff (Rhythmic_staff temporarily disabled)
+ - docxx 3.0 format comments
+ - split register source files
+ - hardcoded dimensions compile time
+ - Lookup::tex_hairpin
+Bugfix
+ - non G-clef clefs
+ - script junking (2x)
+ - empty files
+ - beam::center (plet position!)
+
+pl 29
+ - multiplatform Makefile (JN)
+ - context errors: bugfixes (JN)
+*******
+pl 28
+
+Internal
+ - idealspacing slightly better for multivoice.
+Doc
+ - Request_register
+Bugfix
+ - Script.cc : float exception (MB)
+ - Request::Request(Request) copying of definition pointer (JN)
+ - cleaned dependencies for broken spanners
+ - stupid typo in Staff_elem::post_processing()
+ - init of hpos in PCol::PCol
+ - Word_wrap::solve() bug
+*******
+pl 27
+ - preliminary WIN32 support (JN)
+Features
+ - errors converted to warnings (JN)
+ - context errors (JN)
+ - As vs. as notename.
+ - WARNING: "melodic" stafftype will create the new Complex_staff!
+Examples
+ - Lohman's Viola Quartet (JN)
+ - JS Bach Solo Cello suite II menuet (JN)
+
+
+pl pre27
+
+Features
+ - option --init
+ - last_duration_mode: default_duration is last duration entered
+ (\duration{\last})
+ - syntax: grouping 2*4 3*8
+ - preliminary multivoice support
+Examples
+ - JS Bach's WTK example added.
+
+Internal:
+ - Text_reg and Script_reg
+*******
+pl 26
+ - Documentation/lelie_logo.png
+ - 8-bit chars for input (see ltest.tex) (MB)
+ - quotes around string now optional
+Bugfixes:
+ - unmatched ] (MB)
+Internal:
+ - print/name methods of Staff_elem
+ - added Request_register
+ - Voice_group_registers, Voice_registers, *_register
+ - Complex_staff
+*******
+ Jan 27 '97
+pl 25
+ - other clefs added, keys typeset properly (MB)
+
+*******
+pl 24:
+ - Lyrics (JCN)
+ - Commands in music-mode (an input feature) (there you are, Mats)
+
+*******
+pl 23:
+ - TODO file inc'd
+ - cadenza mode.
+ - default extension, search path.
+ - error.pod,faq.pod
+ - Markers
+ - configure script
+ - inputfile name in output.
+Internal changes:
+ - scrapped VPATH
+ - Make dependencies per .o
+ - Split Input_* parsing steps to enable marking
+Bugfixes:
+ - unconnected columns
+
+
+*******
+pl 22:
+ - doco from mpp
+ - repeat signs
+ - | checks for bar in a voice (Barcheck_req)
+Internal changes:
+ - naming (Hungarian notation, svec vs. Array)
+ - cleanup PScore, Score
+ - removed Staff_commands, plugging commands into Staff_column directly
+Bugfixes:
+ - bug noteheadswap
+ - huge memleak fixed; unearthed lots of bugs
+
+*******
+pl 21:
+ - scripts
+ - texts
+ - nplets (triplets!)
+Internal changes:
+ - Move breaking stuff into a separate class Break_algorithm
+ - dependencies for Staff_elem's
+
+*******
+Dec 23
+pl 20:
+ - updated doco to .pod
+ - include files from .ly
+Internal changes:
+ - Rational for time measurement
+ - directionalspanner/textspanner
+
+*******
+pl 19:
+ - grouping code: LilyPond can set advanced multibeams.
+Internal changes:
+ - struct Moment
+
+*******
+
+pl 18:
+ - robust Staff_commands
+
+*******
+pl 17:
+ - robust Input_commands
+ - merged Vertical_/Horizontal music
+ - PARTIALs with duration
+ - modularized lexer: multiple runs
+
+*******
+pl 16
+ - notenames configurable
+
+*******
+pl 15
+ - grouping code
+ - multibeams (simple)
+
+*******
+pl 14
+ - symtables from .ly
+ - Input_command
+ - Input_{score/staff}
+
+*******
+Dec 2
+pl 13
+ - Horizontal/Vertical music
+ - Input_commands
--- /dev/null
+August 1
+
+VERSION 1.0.0
+
+ - scsii-paper: no wordwrap
+ - bf's: texinfo
+
+pl 85.jcn2
+ - ONEWS -> NEWS-0.1
+ - bf: zip: list of docfiles
+ - bf: install info
+ - bf's: rpm spec
+ - website ok
+ - mudela version bump -> 1.0.0
+ - bf's: '[a-g] -> ,
+ - bf: broken.ly
+ - ly2dvi fixes, (PC)
+
+pl 85.hwn1
+ - search & replace: jan@digicash.com -> janneke@gnu.org
+
+pl 85.jcn1
+ - website fixes
+ - debian fixes (thanks, Bastian Kleineidam)
+ - some (yet unfinished) doco
+
+*********
+pl 85
+july 30
+
+pl 84.hwn4
+ - revamped install directions.
+pl 84.eb1
+ - key undo
+
+pl 84.hwn3
+ - misc scsii fixes.
+ - doco fixes
+
+pl 84.jcn3
+ - bf: titledefs without poet
+ - scsii fixes
+
+pl 84.hwn2
+ - don't make key items if no accs present.
+ - Oops. Lyric spacing should go to the right (and not left) (thanks, PC)
+ - barnumbering break priority.
+ - bf: tied chords
+ - 16pt init for yodl-mudela
+ - split span-score-bar.{cc,hh}
+ - junked most experimental_features_global_b stuff
+ - revised AUTHORS.yo
+ - dot stuff. Added a Dot_column_engraver (thanks, Mats)
+
+pl 84.jcn2
+ - ly2dvi fixes
+ - w32/install doco fixes
+ - mutopia fixes
+
+pl 84.hwn1
+ - fixes for ly2dvi + titledefs (Peter Chubb)
+ - merge Span_dynamic_reqs too
+
+pl 84.mb1
+ - MF: Added breve and longa rests.
+
+pl 84 jcn1
+ - top website
+ - ps-to-gifs: TRANSPARENT_IS_BROKEN (ppc hack)
+
+pl 84.uu1
+ - doco fixes
+
+*************
+pl 84
+
+pl 83.jcn5
+ - bf: typo mudela-doc
+ - long getopt all the way
+
+pl 83.hwn5
+ - doco fixes
+ - bf: initialise axis_ filed of script
+ - separate versioning for mi2mu and flowerlib dropped.
+ - split bin/ in buildscripts/ and scripts/
+
+pl 83.jcn3
+ - egcs ICE stuff.
+
+pl 83.jbr2
+ - lily/midi-stream.cc: added appropriate MODE options to open
+ midi output as a binary file. This should be pretty harmless.
+ - lily/lexer.ll: added \r as white and black space to enable
+ W32 native editors. This also should be harmless.
+
+pl 83.jbr1
+ - flower/lgetopt.cc: report method fix. (String + char needs to be
+ fixed)
+
+
+pl 83.hwn4
+ - stepmake := stuff
+
+
+pl 83.hwn3
+ - \property maxVerticalAlign, minVerticalAlign tunes vertical
+ staff distances. See input/test/vertical-align.ly
+ - bf: scripts over chords. (thanks, PC)
+ - revamped aligning stuff: Align_element is baseclass
+ for Horizontal_align_item and Vertical_align_spanner
+ - bf: Clef_item with _8 does new/del correctly.
+ - more file renaming -elem -> -element
+
+pl 83.hwn2
+ - doco fixes (thanks, Lambert)
+ - tieydirection,slurydirection overrides ydirection (thanks, PC)
+
+pl 83.jcn1
+ - bf: stepmake
+
+pl 83.hwn1
+ - rm'd clean-embeds.sh
+ - rm'd \octave from all examples.
+
+pl 83.uu1
+ - mi2mu output mudela 0.1.21
+ - meter -> time_signature
+ - bugfixes for mi2mu, divide by zero error. (thx, JBR)
+
+
+********
+july 23
+
+pl 83
+pl 82.hwn2
+ - \musical_pitch -> \musicalpitch (mudela 0.1.21)
+ - meter -> time_signature,
+ - \meter -> \time (mudela 0.1.21)
+ - moving around files : -grav -> -engraver
+ - doco fixes
+
+pl 82.jcn5
+ - doc make fixes; stepmake 34
+
+pl 82.jcn4
+ - lots of doco build/install/website fixes
+ - junked some doubles from doco
+
+ - mi2mu syntax to 0.1.20
+ - bf: mi2mu col creation
+ - bf: stream << '\t', int
+ - bf: mi2mu version
+ - bf: font-body.ly
+
+pl 82.jcn3
+ - bf's: diff/stepmake
+
+pl 82.jcn2
+ - bf: slur blow
+ - tie/slur ydirection
+ - makeflags / diff fixes
+
+pl 82.jcn1
+ - rejects: verbatim copy of Coriolan from 81.jcn2
+
+pl 81.jbr2
+ - Documentation/README-W32.yo: Additions to section 2
+
+*******
+
+pl 82
+
+pl 81.jbr1
+ - NT fixes for release target
+ * stepmake/stepmake: %=--% => %=% in diff target
+ Cygnus make with MAKE_MODE=unix forces a MAKEFLAG of --unix.
+ This results in a ----unix switch being passed to package-diff.
+ This may break normal operation of this target.
+ * stepmake/bin/package-diff.py: added a do nothing option --unix
+pl 81.jcn2
+ - bf: abbrev
+ - found ugly slur bug
+ - egcs workaround
+ - more Coriolan fixes
+ - half-beam fix
+
+pl 81.hwn2
+ - lots of vocabulary
+ - break_priority_i_ fixes: barnumbering, marginstuff, marks now work more or less
+ - wrote lilypond-docs RPM spec
+ - major brainsurgery: class Graphical_axis_group:
+ * derive Axis_group_element from Graphical_axis_group,
+ * derive Graphical_axis_group from Graphical_element
+ - junked input/minimal.ly
+
+
+pl 81.hwn1
+ - cleaned up parser.yy (removed \textstyle from parser, other stuff)
+ - Slurs have height too.
+ - typewrite textstyle
+ - added error rule to music.
+ - Documentation/pictures/ subdir
+ - Documentation/topdocs/ subdir
+
+
+pl 81.jcn1
+ - coriolan fixes.
+
+******
+july 16
+
+pl 81
+
+pl 80.jcn1
+ - Coriolan: bulk remainder of strings
+
+pl 80.hwn1
+ - junked coriolan-alto.ly
+ - the great Search & Replace
+ * Score_elem -> Score_element
+ * hanwen@stack.nl -> hanwen@cs.uu.nl
+ * Colinfo -> Column_info
+ * add () -> add_xxxx ()
+ * Col_hpositions -> Column_x_positionso
+ - lily-proto.hh cleanup
+ - moved Dot_column creation. Dot bug fixed
+ - typos README-W32
+ - ADD_THIS_TRANSLATOR uses templates now.
+
+pl 80.eb1
+ - accidental transposition
+
+
+*******
+
+pl 80
+ - some make vs $(MAKE) bugs
+
+pl 79.hwn1
+ - bf lily/VERSION depends on toplevel VERSION
+ - bf postbreak_only scripts
+ - Staff_side now is horizontal too
+ - rm'd \octave in scales.ly
+
+pl 79.jcn2
+ - w32 support doco (JBR)
+ - bf: install info
+ - truncated some very long filenames (not bo length)
+
+pl 79.jcn1
+ - bf: ps-to-gifs
+ - html fixes
+ - more italian (TDM)
+ - more coriolan
+
+
+*********
+pl 79
+
+pl 78.hwn2
+ - reversed some of the beyond-too-ugly hacks for script/staffside.
+ - bf: Axis_group_element::access_Axis_group_element () (2nd fix for Hara_kiri)
+ - more .bib stuff.
+ - more doco, lots of small fixes for .yo stuff.
+
+
+pl 78.jcn2
+ - bf: make docxx
+ - some doco/website fixes
+i - screenshots for website
+ - fixed locale
+ - v78
+ - w32 doco
+
+pl 78.hwn1
+ - more bib fixes
+ - uniformised virtual accessors for Score_elem children.
+ - bf Hara_kiri seg fault
+ - changed left == right spanpoint assert into warning
+ - changed Lyrics.textstyle to Voice.textstyle where appropriate
+
+pl 78.jcn1
+ - counter fix
+
+************
+
+pl 78
+
+pl 77.hwn1
+ - Key transposition (MB)
+ - move .dstreamrc to dstreamrc
+ - make website fixes. junked z.yo, language.yo
+ - split off computer stuff from engraving.bib
+ - articles from CMJ added to computer-notation.bib
+ - doco fixes
+ - syntax of \skip and \partial changed; take only single durations
+
+
+
+pl 77.jcn2
+ - mark placement
+ - w32 doco
+ - html-footer: (PACKAGE)_COUNTERPATH
+
+pl 77.jcn1
+ - doco, bib fixes
+ - fixed \mark A; \mark 12;
+
+pl 77.hwjc
+ - dropped perl
+ - py fixes
+
+
+pl 77.uu1
+ - \textstyle obsoletized, use \property Voice.textstyle now.
+
+*******
+pl 77
+ - bf: install info
+ - bf: key-grav.cc: ambiguous conversion
+ - bf: mudela.yo glossary em() -> \emph{}
+
+pl 76.jcn1
+ - irix compile install fixes, .bib stuff (HWN)
+ - bracket bit lighter
+ - brace/bracket placement
+ - minor fixes in key code
+ - small website fixes
+ - invocation mudela-book
+ - try at bracket/brace placement
+
+pl 75.mb1
+ - Introduced real key names, \key e; gives E major!
+ - Previous use of the \key command now called \accidentals,
+ \accidentals fis cis gis dis; gives E major.
+ - Support for special keys with different accidentals on
+ different octaves, \specialkey \accidentals Fis Bes gis aiss';
+
+**********
+pl 76
+ - website examples:
+ * Thread -> Voice
+ * 18 -> 19
+ * type /consists Engraver vs Line_engraver stuff
+ - bf: mutopia-index
+ - to relative: twinke-pop
+ - bf: clef-grav: null pointer assignment
+ - ran convert-mudela
+
+pl 75.jcn3
+ - minieme fixes (HWN)
+ - bf's: node() names have changed: Mudela Book/ Convert Mudela
+ - bf: lilyponddefs.tex: removed \fi, added braces
+
+pl 75.hwn2
+ - bf lilyponddefs.tex: added \fi to \ifs
+ - convert-mudela in python
+ - mudela-book in python.
+ - bf memleak Score_elem::do_brew_molecule ()
+ - bf array bound read String_convert::split_arr
+ - bf free mem read Item::Item (Item const &)
+ - bf memleak Midi_walker::do_{stop,start}_note ()
+ - bf memleak Spanner::do_brew_molecule ()
+ - bf plet-engraver memleak
+ - checked input/bugs dir.
+
+pl 75.hwn1
+ - junked octave (mudela 0.1.19)
+ - more .bib stuff
+ - doco fixes.
+
+pl 75.jcn2
+ - binary releases:
+ * make deb
+ * dpkg 1.4.0.23.2
+ * debhelper 0.96
+ * /usr/bin/db_*: remove -p from install options (urg)
+ * make rpm
+ * make zip
+ - path to nice lilypond.info (must have a go at auto-nodes):
+ * mv'd Documentation/man/lilypond-info.yo -> Documentation/topinfo.yo
+ * included mutopia as example
+ - bf: gifs: $(wildcard)
+ - leave tarball in out/ too, after 'make release'
+ - mf-to-table: --package
+ - typo configure.in
+ - nt make fixes (JBR)
+
+pl 75.hwn1
+ - clef 8 fix (AG)
+ - junked octave (mudela 0.1.19)
+ - more .bib stuff
+ - doco fixes.
+
+pl 75.jcn1
+ - dropped mf/Rules.make
+ - dropped target doosdist
+ - dropped lilypython/pythonblurb
+ - --package rest of python exes
+ - packagepython/package-diff fixes
+
+
+**********
+pl 75
+
+pl 74.jcn5
+ - lost of (step)make fixes
+ - 'make release'
+ - --package
+
+pl 74.mb1
+ - Fix ":|:" that spans several staffs
+ - bf: bar.cc, table of breaks
+ - bf: engraver.ly, Complete the addition of ChoireStaff
+ - bf: lilyponddefs.tex, placement of ":|".
+ - Cleanup clef-item and clef-grav, prepare for dictionary
+ of clef names.
+
+pl 74.jcn4
+ - cygnus fixes: doco, compile, install
+
+pl 74.jcn3
+ - packagepythonified genheader
+ - stepmake 21
+
+pl 74.jcn2
+ - renamed: ../redhat to ../RedHat
+ - renamed (or huh, was this a typo?):
+ ../sourcetree -> lilypond-x.y.z to ../lilypond -> lilypond-x.y.z
+ - what about ~/rpms; see stepmake/Variables.make?
+ - README.txt
+ - debashify: zet-lily (HWN)
+ - www, yodl, stepmake fixes
+ - ls-latex fixes
+ - mudela.yo fixes
+
+pl 74.jcn1
+ - mudela.yo fixes
+ - bf: add-html-footer: duplicate <body>
+
+*********
+pl 74
+ - bf: ps-to-gifs fix
+
+pl 73.jcn2
+ - irix configure/link fixes (HWN)
+ - untested fix for "^\f" (HWN)
+ - add-html-footer: bgcolor=white
+ - m.yo: successful 2tex and 2html
+ - ps-to-gifs additions and fixes
+ - bf: --output
+ - (step)make targets:
+ * diff
+ * help
+ * rpm
+ * zip
+ - yodl-1.30.pre4: handle mudela(options)(mudela)
+ - small m.yo example for mudela.yo
+ - crude tex2yodl in stepmake
+ - mudela from stdin: default to filter behaviour
+ - allow lelie to act as a pseudo-filter --output=-
+ - fixed faq.yo
+ - atvariables
+ - bf's: module-deps
+ - bf's table-to-html and invocation
+ - small doco fixes
+
+pl 73.hwn1
+ - more doco
+ - got rid of weird <> semantics
+ * Ties_engraver, Note_heads_engraver
+ * depracated \multi
+ * depracated Thread context
+
+ - wtk1-fugue{1,2} now in relative mode.
+ - don't create Rest_collision, Collision if no more than one
+ collider (interpreting should be faster, less mem usage)
+ - depracate Line_group_engraver, must use Line_group_engraver_group
+
+
+pl 73.jcn1
+ - tiny topweb.yo fixes (added 'Documentation/out-www/' to some urls)
+
+*********
+pl 73
+ Yodl developent:
+ ftp://pcnov095.win.tue.nl/pub/yodl/
+ http://www.digicash.com/~jan/yodl/
+ - removed BLURBS from makefile
+ - stepmake pl 16
+ - To Yodl:
+ * *.pod -> *.yo (should fixup pod 'manpage' legacy)
+ * dropped pod2* config stuff
+
+pl 72.hwn1
+ - count "constraint off" as degeneracy
+ - zet-lily stuff.
+ - bf: add Meter_engraver
+ - bfs: tutorial
+
+pl 72.jcn3
+ - Documentation/man texinfo-> YODL!
+
+pl 72.jcn2
+ - more texinfo:
+ * texi2html workarounds: junked man/*.pod
+ * Documentation/man: pod -> texinfo
+ - Coriolan: viola part
+
+pl 72.jcn1
+ - doco/mutopia/website fixes
+
+*********
+pl 72
+
+pl 71.jcn4
+ - try at texinfo:
+ * lilypond.texinfo
+ * stepmake pl 13: texi2man
+ * lilypond.1 now generated from texinfo
+ * lilypond.info
+
+pl 71.hwn2
+ - changed QLP asserts to warnings; now you can see the
+shabbyness of the QLP code
+ - ChoireStaff context
+ - more tutorial doco
+ - mudela-book: name output files to per section and chapter.
+
+pl 71.jcn3
+ - bf: convert-mudela: added StaffGroup
+ - bf: various .ly: (WhyIsThis; we'll drop a_"bla" and use '_', no?)
+ - stepmake pl 12
+ - bf: abbrev + beam (urg: internote y dim bug)
+ - debian conffiles (AF)
+
+pl 71.hwn1
+ - vocab fixes
+ - more tutorial stuff
+ - quart -> fourth
+ - depracated contexts with _ in name (mudela 0.1.17)
+ - bf: don't crash if default context can't be found
+ - distinction between global and local \header block.
+
+pl 71.jcn2
+ - msgfmt check
+ - rpm: crude fix for input dir (urg: should get doc on rpm spec;
+ why is that so hard to get hold of in plain text?)
+ - found (bit undocumented) sticky abbrev mode in stem-grav:
+ c8:16 c: c:
+ * bf: enable disabling
+ * disabled sticky abbrev req
+ - urg: transposing for midi (should fix audio-items)
+ - sticky abbrev req: a8:16 a a a8:
+ - bit more coriolan
+
+pl 71.jcn1
+ - added PATCHES to web page
+ - rpm-dist, doos-dist, show-latest to step
+
+********
+pl 71
+ - bf: po install
+ - fixed somewhere: space between bar line and first note [HWN]
+ - bf: DOTTEXT
+ - bf: (don't) install libintl
+ - configure fix for irix tr
+ - bf release.py
+ - stepmake-0.1.9: fixes make install, rmp-dist
+ - bf: mf-to-table
+ - make-patch: lily-diff
+
+pl 70.jcn6
+ - make htmldoc defaults to out-www
+ - moved some python stuff to stepmake-0.1.8
+ - aux config scripts from stepmake
+ - stepmake-0.1.7 as ./stepmake: drop versioning on sub-package dirnames
+ - po fixes
+ - computer-forms.el
+
+pl 70.jcn5
+ - bf: Documentation/make html
+ - bf: coriolan ... almost there
+ - bf's: lilyponddefs: (fixes make website)
+ * moved errordefs (mmm, perhaps \input's should have been moved...)
+ * moved def of interscoreline
+ * moved def of setdynamic
+ - stepmake 0.1.6
+ - include fixes
+
+pl 70.jcn4
+ - configure stepmake too
+ - make dist recurses into stepmake
+ - stepmake-0.1.5
+
+pl 70.jcn3
+ - make; make dist work (without packaging) stepmake-*
+ - mv'd outputter* tex-outputter*
+ its not so handy to have files with the same prefix as our out dir :-)
+ - verbatim included stepmake-0.1.4
+ - DOTTEXT->.txt
+ - verbatim included stepmake-0.1.3
+
+pl 70.jcn2
+ - changed 'current' to 'lilypond' in scripts that only i ever use...
+ - tenuto shorter, thicker and follow into staff
+ - computer{.data,-forms.el}
+ - mark
+ - by default don't make libintl
+ - make install for libintl
+
+pl 70.jcn1
+ - generic make fixes
+
+********
+pl 70
+
+pl 69.jcn4
+ - included libintl from gettext-0.10
+ - fix: staff-bracket on one staff too
+ - bf: lilymake/Rules
+ - generic lily-make-0.1.0 package; shared as example with lilyx-0.1.0
+ - junked automake stuff from aclocal.m4
+ - bf: BASH scripts
+
+pl 69.hwn1
+ - standardised virtual accessor naming for Requests
+ - doco updates.
+ - bf: tied accidentals.
+
+pl 69.jcn2
+ - now DATADIR = datadir = /usr/local/share/lilypond ...
+ - bf's: DATADIR/datadir: by default: /usr/local/share; '/lilypond'
+ must be added whenever necessary
+ - bf: begin/end html for BLURBS; junked html-accents...
+ - html-accents
+
+********
+pl 69 (june 2)
+ - bf: table-to-html: convert_html
+ - bf: added fingerfont in fetdefs.tex
+ - crude fix: fetdef repeatcolon
+ - gallina.ly to relative octave mode (MB)
+
+pl 68.jcn3
+ - bf: libintl.h include
+ - readded: DATAFILES =.*data (too late, computer vocab missing...)
+ - span-score-bar:
+ * don't set piano braces that span less than two staffs
+ * don't set staff brackets that span less than one staff
+ - bf: abbrev (internote dim)
+ - more coriolan, hara-kiri
+ - add arcs to bracket height to avoid colliding of brackets
+ - HAVE_GETTEXT
+ - computer.data: modest start of computer-related vocabulary
+ - configure (localdir/datadir) fixes
+
+pl 68.nenn1
+ - fix for postbreaks past line_group
+ - bf: harakiri: set empty
+
+pl 68.hwn1
+ - use AFM iso autogenerated table.
+ - more bits of tutorial
+
+*********
+pl 68.jcn2 (may 29)
+ - bf: configure.in localedir/datadir (urg)
+ - libc-extension.cc: vsnprintf + check
+ - bf: blurbs
+ - @BASH@ for scripts that are actually (still...) bash iso sh
+ - check for bash
+
+pl 68.jcn1
+ - gettext/intl checks; (AO)
+ - bf: meter-switch
+ - COPERTINA
+
+pl 68
+ - AFM file stuff: afm.cc, afm-reader.cc, mf-to-table.py
+ - removed c0 position from get_staff_info ()
+
+pl 67.jcn2
+ - grace example
+ - bf: sticky plets
+ - bf: s0
+ - bf: twinkle.ly
+ - junked implicit to-string conversions
+ * now used Scalar for all explicit implicit conversions
+ * moved implicit-conversion String constructors to to_str (...)
+ - _f with Strings
+ - bf: BLUB: re-added empty line
+ - bf's: reincluded: tar-docxx.sh, topweb.pod.in (<aol>me too!</aol>)
+ - po: unification/breaking-up of (some) messages
+ - crude get-lily/build-lily scripts
+ - make targets "po-update" "show-po-update LANGUAGE=xxx"
+ - handier internationalisation funcs _(), _f () iso macro
+ - String_convert::form_str (fmt, ...)
+
+
+*******
+pl 67 (may 27)
+ - multiple font sizes. See input/test/sizes.ly
+ - w32 blurb by Dominique Cretel
+ - bfs faqs
+ - cleaned Identifier further; canonical accessors
+
+pl 66.jcn7
+ - bf: hara-kiri clefs: (the "u" is "\unknown"; how to fix this?)
+ - bf's: make website
+ - better configure language message
+ - bf: lilpond.spec
+ - bf: configure/localedir
+ - internationalisation: po/*
+ - distribute mutopia/ in binary rpm too
+ - FLAPTEKST
+ - "generate" all debian conffiles in out/
+ - BLOEP; and BLURB substituted by configure throughout doco
+
+pl 66.jcn4
+ - bf's standchen
+ - website fixes for .fly
+ - target doc++; tar-docxx fixes
+ - topweb fixes
+ - configure check for pod2html 5004/5003
+ - switch init file on extension (some new ones):
+ * init.ly: normal structured Mudela
+ * init.fly: simple Mudela (for on-the-* without tape ly's)
+ * init.sly for simple init (no properties,scripts,midi)
+
+ - bf: stem with flags (forgot internote dimension)
+ - bf's mutopia (urg, properties)
+ - String_storage: parse string identifiers (i didn't do it, nobody saw me do it, you can't prove anything)
+ - scsii-prelude: urtext and suggested slurs separated
+ - converted twinkle, kortjakje, standchen, preludes to relative
+ - conflily -> zet-lily
+ - -Q --find-quarts option
+ - bf: add-html-header: mailaddress () iso mailaddress
+ - bf: show-latest looks at MY_PATCHLEVEL too
+ - fixes scsii
+
+
+
+***********
+pl 66 (may 18)
+ - junked literature.pod (we now have the .bib file)
+ - bits of mudela.doc
+ - other-packages.pod -> other-packages.bib
+
+pl 65.jcn3
+ - print_dimen: don't print "NaNpt"
+ - fixed Coriolan, added "instrument" and "instr"
+ - MIDI favours property "midi_instrument" over "instrument"
+ - Bar::do_height iso brew_molecule hack: not quite yet...
+ - stem/beam: more stuff runtime
+ * beam-dir-algorithms
+ * beam-stemlengths: take unnatural dir into account
+ * natural stemlength
+ * forced stemlength shortening
+ - bf: Bar: don't make molecule if invisible; fixes hara-kiri
+ - robustification of MIDI: never return "", always return sane
+ string and print warning
+ - bf: typo Key_change_req::sharps(); fixes MIDI
+ - scsii: new relative octave fixes, gigue
+
+pl 65.jcn2
+ - included some auto-generated mf files for MikTeX (doos).
+ - hara-kir: nicer set-transparent
+ - relative.pod: doco'd blonder relativeness
+
+
+pl 65.jcn1
+ - staff-margin-engraver
+ - blind scsii fixes for new relative mode
+ - bf's: hara-kiri-*
+ - jumps in topweb.pod
+
+*********
+
+pl 65 (may 15)
+ - fixes for template instantiation (AO)
+ - junked standchen-easy,
+ - mudela 0.1.15: deprecate \duration, junked \octave relative
+ - small doco fixes
+ - moved data from Melodic_req into Musical_pitch (analogous to
+ Duration and Rhythmic_req)
+ - implemented \relative c' { .. } and associated Relative_octave_music
+ - junked \octave relative;
+
+pl 64.jcn2
+ - simple compile fixes
+ - bf: beam:stemlens:knee
+ - hara-kiri-*
+ - bf: ctags
+ - preludes-3.lym4
+
+*********
+pl 64 (may 13)
+
+pl 63.jcn3
+ - beam stemlength stuff runtime
+ - dropped lq for beam-stemlengths, fixes [d d d] [d g d]
+ - ugly sed fix for commas in .ly.m4
+ - beam damp corrent fix
+ - scsii: small fixes
+ - preludes.ly; dropped silly preludes.tex
+
+pl 63.jcn2
+ - vocabulary on website
+ - data-to-html.py
+ - bf: beam damped-slope correct
+ - bf: make website
+ - some preludes-* fixes
+
+pl 63.jcn1
+ - "relative" sizes for titledefs
+ - bib2html/man2html urls in INSTALL.pod
+ - auto-generated feta stuff in doosdist
+ - bf's: make dist, docdeps
+ - bf's scsii
+
+************
+pl 63 (may 11)
+
+ - non_fatal_error () (should use!)
+ - Mozart Horn concerto 3, horn part
+ - bf: plet-spanner
+
+pl 62.jcn11
+ - bf: beam::set-stemlen:iterations
+ - knee-bug.ly
+ - use knee in menuetto-ii
+ - bit on slope damping
+ - some bf's and doco
+ - bf's scsii
+ - scsii: bf' new: sarabande
+ - bf's allemande, courante
+ - bf: knee: stem through beams
+ - bf: too high beams
+
+pl 62.hwn1
+ - bf jcn8: deep copy Scope (ughugh. I want GC!)
+ - cleaned Identifier
+ - mudela 0.1.14 'a -> a,
+ - class Scope
+ - .bib updates
+ - key robustifiction for extreme octaves
+ - ly2dvi 0.11
+ - energy "normalisation" removed.
+
+pl 62.jcn8
+ - beam: knee input/test/knee.ly
+ - vimrc init for lily
+ - errors display column number too
+ - scsii: bf's, new: allemande, courante
+ - looked at lyric lengthen "mir________." (eerste weigering)
+ - beam: knee [c \stemdown c' \stemup 'c]
+ - expressions parsed at identifier_init
+ - bf: slur/stem/whole x-adjust:
+ * use note-col width iso mean note-witdth
+ * note-column:width ()
+ - now string variables in paper too -> mudelapapersize
+ - paper_def: real dict -> identifier dict
+ - My_lily_lexer: identifier dict stack
+ - init paper and a4 stuff
+ - \include \string
+ - all rvalues from parser var pool -> access rvalue as \rvalue
+ - string variables
+ - ly2dvi 0.10.jcn1
+ * mudelapiece, mudelaopus (ugh, fix)
+ * textheight
+ - more titledefs
+ - bf: table 20 typeface widths
+ - bf: toplevel/*.txt
+ - bf: ugly Documentation/mutopia fix (should rename dir to Mutopia/ ?)
+ - bf: make examples
+ - www.digicash.com/~jan/lilypond
+ - make website fixes
+ - ambiguity fixes in .ly's
+ - bf: relative-octave warning
+ - relative-octave: guess if ambiguous
+ - ambiguity warning for relative mode
+ - scsii: prelude
+ - bf: slur gap
+ - bf's: scsii: menuetto
+ - .txt -> $(DOTTEXT)
+ - make website fixes
+ - .txt fixes
+ - bf: typo make-patch
+ - bf: *dist.sh cleanup
+ - bf: release.py
+ - bf: make/Targets doc (removed .txt extension)
+ - rpm-dist.sh
+ - make doos dist fixes
+ - doos-dist.sh windoze dist script
+ -- removed useless spacing hack at spring-spacer.cc:692
+ - bf: los-toros: do multi-bar rests (setting SkipBars = 1)
+ - scsii-menuetto.ly -> menuetto-urtext.ly, -cello.ly and -alto.ly
+ - bf: \octave c'; for relative-octaves
+ - bf: Documentation make
+
+*********
+pl 62
+ - no-touch hak.
+ - bfs: multi measure rests
+ - fixed the website.
+ - add extra space after breakable columns.
+
+
+pl 61.jcn8
+ - mudela relative octave feature:
+ * Documentation/relative-octaves.pod
+ * \octave relative;
+ * lilypond -f for automatically finding new relative quote positions
+ (sorry, fully automated convert is too complex)
+ * mutopia/ltor.ly: octave quotes reduced from 511 to 59
+ - better conflily
+ - bf: abbreviation-beam-engraver: set beam::multiple_i_
+ - bf: open_abbrev_parens
+ - dotted/dashed slurs/ties
+ - fixed-up scsii-menuetto; use dotted-slurs
+ - slur_thickness runtime
+ - bf: typo lilyponddefs: elevendefs
+ - moved hard-coded slur parameters to runtime
+ - make-patch -r: diff against latest release
+ - allow semicolons after paper_identifier and \include
+ - params.ly: parameterised some paper vars
+ - bf: beam quantise for slope = 0
+ - interbeam (mult>3) open-up to paper-def to paper!
+ - "implemented" Paper-def::staffheight
+ - simplification + bf bezier clipping
+ - vandale fix
+ - moved doco from paper*ly to fonts.doc
+ - papers with expressions
+ - paper20.ly: rewrote precalculated values as expressions
+ - simple expressions in mudela (paper-body only)
+ - beam_thickness centralised and run-time...
+ - \nobreak
+ - bf: beamquantise: never sit if mult > 1
+ - bf: broken slur y-offset (not!)
+ - pagelength hack in tex/headers
+ - alignment of bracket (in span-score-bar.cc)
+ - boolean *break_b to continue break_penalty_i; maar nu...
+ - removed paper20 includes, \paper_twenty from examples
+ - dropped latex files
+ - renamed standje, standchen.
+ - parser accepts range of mudela-versions
+ - Mudela_version
+ - String_convert::split
+ - bf's: los-toros-oboe
+ - braindead Break_req with penalty; junked Disallow_break_req and
+ Break_force_req
+
+pl 61.ag1
+ - implemented octave-shifted clefs.
+
+********
+
+pl 61
+ - bf: mudela-book error msgs
+ - don't dist feta-tables.
+ - bf: mf-to-table, deps[0] catch
+ - reworked initialisation parsing logic; Got a no-redtape mode
+ for free
+ - 20 pt staffsize now default
+ - dependencies for LilyPond (-d, --dependencies). --debug moved to -D
+ - (c) 1998
+ - ly2dvi 0.10 (JAF)
+ - changed \begin[options]{mudela} to \begin{mudela}[options]
+ - more WWW hacks.
+
+pl 60.jcn2
+ - minor adjust for asymmetricity of beam symbol
+ - added TEST beam quantisation; see input/test/beam-pos.ly
+ - removed some empty .cc .hh
+ - Grandstaff -> Grand_staff (After [Gerou] and Harvard Dictionary of
+ Music)
+ - bf's: slur and tie post-processing
+ - cleaned-up bow: get encompass
+ - cleaned-up beam-yspan and beam-leftpos quantisation
+ - misc.cc: some funcs to get lower and upper bounds from array of values
+ - interval.*: Slice (Interval of int)
+ - added some doco to beam.cc
+ - removed some x,y by-ref passing in Lookup
+ - cleaned-up beam-yspan quantisation
+ - cleaned-up slur get encompass
+ - configure: --disable-optimise for compile without -O
+
+pl 59.jcn4
+ - bf: beam quantise
+ - bf: sticky plet bug
+ - bf: chords in beam
+ - bf: typo beamquantisaton
+ - bf: don't blow_fit infeasible bows (x_i < x_0 || x_i > x_n)
+ - bf's: beam/stemlengths, beam-bug [c8 c16 c16]
+ - bf: placement broken tie
+ - yet another try to raise bar-number
+ - bf's: bow tangent clipping, allow higher bows
+
+************
+pl 60
+ - mats patches: use Latex font stuff.
+ - fixes to the .59 patch release (jcn)
+ - make website|examples target
+
+pl 59.jcn3
+ - bf: preludes-5
+ - no inline compiler warnings by default
+ - bf: gcc 2.8 compile bow.cc
+ - moved functions with loops from varray.hh to varray.cc
+ - bf: minimum length for tie
+ - slur clipping standard
+ - bf: second broken slur minimum length
+
+pl 59.jcn2
+ - added some to .dstream
+ - bf: second part of broken slur
+ - slur encompassing noteheads adjust
+ - bwv'd preludes
+ - bf: make-patch -d
+ - doc'd rerunning of autoconf
+ - rest of real standje (rename and move simplified standchen to
+ input/test?)
+ - bf: clipping
+ - bit better bar number placement
+
+pl 59.jcn1
+ - more INLINE
+ - bf: multi-measure rest
+
+pl 58.jcn7
+ - los-toros: do multi-bar rest
+
+
+
+***************
+pl 59
+ - ly2dvi 0.9.hwn1, -K switch,
+ - doc: moved manpages in separate directory.
+ - do WWW stuff via make
+ - mutopia-index.py
+ - ly2dvi 0.9 (JAF)
+ - multi platform build fixes
+ - junked embedded switches, embedded MF, obsolete TeX stuff
+ - junked virtual matrix storage: inlined most matrix computation,
+ speed increase of 30%
+ - junked taupindefs, eglerdefs
+ - rm'd taupin/egler from INSTALL
+ - doc: engraving.bib, colorado.bib
+ - input hierarchy.
+
+
+pl 58.jcn6
+ - multi-measure rests: moved acknowledge from timing-translator
+ to -grav
+ - slur clipping experimental...
+ - bo to b
+ - always announce multi-measure
+
+pl 58.jcn5
+ - bf: reset plet after reading mmrest
+ - try at not generating moments...
+ - Multi_measure_rest 'symbol'
+
+pl 58.jcn4
+ - try at multi-measure rests: part.ly
+ - bf's: slur get_encompass
+ - bf: slur clipping
+
+pl 58.jcn3
+ - experimental (--test) clipping of too high or tilted slurs
+ - nicer slur control output and ps code
+ - bit thicker and round-capped tuplet bracket
+ - bf: slur.cc: RESIZE_ICE
+
+pl 58.jcn1
+ - varray.hh bezier.cc, slur.cc patches to avoid gcc 2.8.1 ice
+ - some inlining fixes
+ - configure: use -O to enable inlining
+ - included and fixed new make-patch.py
+ - bf: Mutopia.make
+ - bf: offset: operator - ()
+ - ugly hack bezier: do blow_fit twice
+ - bf's: bezier: rotate,translate
+
+***************
+pl 58
+ - more *.make hacking
+ - bracket fix (AG)
+ - clef fix (PC)
+
+pl 57.jcn1
+ - reincluded test/bow.cc
+ - promoted Bezier bows to standard
+ * bf's: broken slurs
+ * some bf's: verneukeratificering van JCN code
+ * some bezier slur doco
+ * calculate Ties with Bezier bow
+ * junked tex-slur.cc
+ * junked ps-slur code
+ * junked height-only slur-correction
+ * lots of bezier/slur fixes
+ * bezier:blow_fit
+
+**************
+pl 57
+ - verneukeratificering van JCN code.
+ - lots of updates on our own makefile system.
+ - junked automake & documented it
+ - put rods into Spring_spacer too. Much cleaner
+ - bf: weird spacings (enge floats)
+ - bf: too many constraints added.
+ - smarter constraint check
+ - bf: table16 fontsize.
+
+ - 56.jcn1's empiric computer science.
+ - debian patches (AF)
+ - solaris/irix patches (AO)
+
+
+ pl 56.jcn5
+ - bezier and slur: cleaning and fixes
+ - bf: removed silly experimental beam feature
+
+pl 56.jcn4
+ - reintruduced slope in bug [c8 c16 c16] in favour of stemlen bug...
+ - staff-side: accent half line higher
+ - reincluded silly los-toros latex file
+ - bf's: bezier.cc,bow.cc, mat.hh: rotate
+ - bf: bezier slur: handle broken slurs
+ - bf: beam
+ - dehairifications of bezier.cc
+
+pl 56.jcn3
+ - bf's: offset multiply, matrix rotate
+ - dropped los-toros latex file
+
+pl 56.jcn2
+ - even nicer excentric slurs;
+ - input/slur-bug.ly
+ - los-toros with barnumbers ;-)
+ - nice version of height-ajust bezier slurs (see sleur.ly --test)
+ - bf's beam:
+ * slope in[c8 c16 c16];
+ * allow no INTER position for normal quantising
+
+pl 56.jcn1
+ - bezier curves with raaklijnen
+
+pl 56.ag1
+ - `Makefile.am.wild's now should work correctly with VPATH (AG)
+
+************
+
+pl 56
+ - more dutch vocabulary
+ - Barnumber FAQ added
+ - bf: abbrev over whole note.
+ - feta: reverse turn.
+ - bf: rod distance
+ - bf: local key clashing
+
+***********
+pl 55
+ - bezier check and ajust for slur height
+ - better slur height ajust
+ - DO chmod 755 *test/*sh
+ - bf: discretionary of ||
+ - bf: scripts within staff
+ - NOT Grandstaff -> Grand_staff (yet?)
+ - bf: cresc. decresc. height lookup.cc,init/table*
+ - bf: staff-symbol (script placements)
+ - staff-group-bracket
+ - bf's preludes, los-toros
+ - nicer trills
+ - adjustment slur extend
+
+**********
+pl 54
+ - bf dynamic_grav
+ - bf accidentals with key change
+ - bfs with command-items in non-breakable columns.
+ - typos (thanks LM)
+
+pl 53.jcn1
+ - two new BUGs
+ - preludes-* with trills
+ - nicer trills
+ - fixed ugly slur extend bug
+ - first try at symphonic work: (start of) Coriolan
+ - fixes: los-toros
+ - test/ with some stupid tests
+ - bf, again midi-output
+ - --no-timestamps options for lily/mi2mu (to enable make check targets)
+ - removed doubles in lilypython
+ - smarter prev_version for make-patch
+
+***********
+
+pl 53
+ - bf: c4 \< c4 \<
+ - bfs of spacing stuff
+
+
+pl 52.jcn6
+ - make check target
+ - moved flower/test to flowertest
+ - dist fixes
+ - flower no longer independent package
+ - bf: GNUmakefile
+ - bf's: configure: debugging (default) /profiling
+ - bf: Rational iface (fixes MIDI output)
+ - bf: non --srcdir configure + build with GNU make (ugh)
+ - ugh: autowildflower
+ - bf's: invoking wild-perl
+ - bf: ugh: staff-side.cc: placement height
+ - bf's: gnu 2.7.2 link (huh?, everyone using 2.8?)
+ - make-patch: default diff against (copy of) srcdir
+ - bin/conflily configures in ../build
+ - GNUmakefiles that do:
+ * auto-update of Makefile.am.wild
+ * auto-switch to builddir
+ - bf's: configure --srcdir
+ - fixes for los-toros/twinkle/test-lyrics
+ - latex file for los-toros (ugh)
+ - staff-side: symbols closer...
+ - half fix of midi output? duh.
+ - oboe1 los-toros
+
+************
+pl 52
+ - split up elem-group stuff.
+ - per line widths
+ - miscellaneous fixes by WL.
+
+
+pl 51.jcn1
+ - bf's: dutch->nederlands
+ - Cygnus b19 compile/link fixes
+
+************
+march 27
+pl 51
+ - changed dutch -> nederlands, german -> deutsch etc.
+ - norwegian (AG)
+
+pl 50.jcn4
+ - fixes for cygnus' gnu-windows32 beta19
+ be sure to compile with -fno-rtti
+ - proof of concept for automated updating of Makefile.am
+ see mi2mu/GNUmakefile (still somewhat clumsy)
+ - mv'd both config.hh.in to acconfig.h
+ - copied printing/debugging/optimising options to flower conf
+ - (some modified) fixes from AO
+ - beginnetje los-toros-oboe
+ - bf: DIR_DATADIR
+ - bf: trills
+
+************
+pl 50
+ - deprecate autowild
+ - --srcdir fixes
+ - ly2dvi 0.8
+
+pl 49.jcn2
+ - static (default) and/or shared libs flower and lily
+ - patch from AO 'libtool 1.1.1'
+ - mf: trill-symbols: feta-slag.mf
+ - shared libs (ugh: hardcoded switch in configure set to static)
+ - some fixes: denneboom.ly, standje.ly/standchen.ly
+
+********
+march 19
+
+pl 49
+ - parser assert changed to warning
+ - fix stdin reading
+ - small jcn fix
+ - changed unbound Spanner from assert to warning
+ - forced breakpoints
+ - add a nowildcard: stmt to wild-perl
+
+pl 48.jcn5
+ - ugh: double parser/lexer:
+ be sure to rm lily/parser.cc lily/lexer.cc or bin/clien
+ before re-running autowild!
+ - V.RSION
+ - bin/clien bin/meek
+ - bf's: flower/VERSION, flower/config.hh, lily/lexer/VURSION
+ lib/config.hh bin/convent-mudela
+ - lost of automake fixes
+ - automake
+
+******
+march 12
+pl 48
+ - Pitch_squash_engraver makes Rhythmic_staff possible.
+ - some fixes to buildscripts for sgi irix
+ - misc. patches (WL)
+ - move away from libg++: rolled own Rational class..
+ - don't make gif files Documentation/ by default
+ - ly2dvi manpage (JAF)
+ - ly2dvi 0.7 (JAF)
+ - more clefs. (MB)
+
+pl 47.jcn2
+ - bf: interbeams and beam-stemlengths for size != 16
+ - bf's: preludes
+ - more introduction
+
+pl 47.jcn1
+ - voice{one,two,three} defines
+ - preludes-*: fixes, junked multi, broke-down score-block
+ - mudela-book: added center option
+
+******
+march 6
+pl 47
+ - Abbreviation now a separate item.
+ - bf'd some gcc 2.8 warnings.
+ - bf'd spurious space in autodep.
+ - more clefs (MB)
+
+pl 46.jcn1
+ - start mudela introduction
+
+
+pl 46.jcn2
+ - bf's: preludes-*
+
+*******
+feb 27
+
+pl 46
+ - span-bar at upstep.
+ - bf: \score { \score_identifier }
+ - tenor clef (MB)
+
+pl 45.jcn2
+ - preludes-4,5,6
+ - bf's denneboom (oeps, see loop)
+
+pl 44.jcn7
+ - text-item.cc: try to get fingers just above note...
+ - set minimum space between columns
+ - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-(
+ - bf's midi ascii-debug output
+ - bf: property instrument
+
+*******
+feb 12
+pl 45
+ - bf: translator switching
+ - SunOS and IRIX patches (AO)
+ - preludes bugfixes; preludes.tex ugh (JCN)
+ - shared lib numbering (AF)
+ - various fixes for debian (AF)
+ - ly2dvi .6.jaf (JAF)
+pl 44.jcn6
+ - bf: crescendo.cc: bigger and use bar_size
+ - slur: guess extra height for height limit for extending notes/stems
+ - ps: adjustable slur height limit, bf crescendo
+
+
+******
+feb 6
+pl 44
+ - ly2dvi 0.6.hwn1
+ - ly2dvi 0.6 (JAF)
+ - use ly2dvi for website
+
+pl 44.jcn2
+ - fingers default to above note
+ - preludes-2.ly
+ - parser: fingerings
+ - preludes-1.ly
+ - bf: denneboom.ly
+ - preludes-3.ly.m4, standje.ly, preludes-4.ly
+ - make rule for macro ly-files
+ - pletvisibility (init/property.ly):
+ * default no bracket with beams
+ * invisible plet bracket feature
+ - finger dir in text-def
+
+*******
+feb 2
+
+pl 43
+ - bf: broken Plet_spanners
+ - more GNITting
+ - avoid some more global ctors, for NeXTstep
+ - some NeXTStep patches from tiggr
+ - don't do overstrike/bold chars in textfiles
+
+
+pl 42.jcn2
+ - bit hesitating start of mutopia
+ - bf: don't try to typeset unterminated plet
+ - separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats?
+ - denneboom.ly (half-baked version)
+ - indent and shape, see ^
+
+pl 42.jcn1
+ - bf: memmem revisited
+ - bf: ps: draw_plet vertical endings
+ - renamed stem_start to stem_begin
+ - bf: plet bracket placing on differently orientated stems
+ - more standje.ly and fixes
+******
+jan 28
+
+pl 42
+ - ly2dvi 0.5 (JAF)
+ - italian.ly (thanks, Paolo)
+ - bf: first \mudelapaper output (BS)
+ - bf: cathedral + bazaar URL (thanks, Barrie)
+ - bf: libc-extension.hh (AO)
+
+pl 41.jcn4
+ - plet brackets (always) in ps (only)
+ - Plet_spanner derives from bow
+ - bf: mf/Makefile: let %.tex %.ly depend on %.mf,
+ iso non-distributed %.log
+ - mi2mu mudela 0.1.8
+ - bit better plet number placement
+ - handier plet syntax: [2/3 c8 c c ]1/1 and \[2/3 c2 c c \]
+ - Plet_swallow_engraver for lyrics
+ - bit better plet number placement (NOT)
+ - new plet syntax: combined beam and plet open
+ - more standje.ly
+ - new plet syntax: start: \plet2/3 stop: \telp1/1
+ - Plet_req, Plet_engraver; removed plet stuff from beam
+
+******
+jan 20
+pl 41
+ - warn for score with multiple Music blocks
+ - bf: \plet (MB)
+ - \textsharp in 16pt
+ - malloc frobnifying
+ - more fontsizes: 26pt, 11pt, 13pt
+ - \textstyle "bold"
+ - .rpm: remove old fonts
+
+pl 40.jcn2
+ - bf: typo scores.cc
+ - bfs: non-default base constructor calls
+ - bfs: virtual destructors
+ - standje.ly: the real standchen (first bit)
+ - gcc 2.8 compile
+ - nicer scsii-menuetto
+
+pl 40.jcn1
+ - bf: breaking of :| bar
+ - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem
+ - no slope=0 beams between stafflines
+ - bf: tex without lily-ps-defs
+ - bf: embedded mf shift: added '%' to \embeddedps
+ - doos compile
+
+******
+jan 12
+pl 40
+ - some doco fixes
+ - debian diffs (AF)
+
+pl 39.jcn2
+ - bf: bit smarter atan() for feta-sleur (thanks wendy)
+ - bf: y quantise of multiple down beams (typo)
+ - minor doc fixes
+ - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep
+ - some changes to ANNOUNCE
+ - fixes for simple slur/tie placement
+ - embedded MF fonts identified by parameters -> reusable runtime fonts
+ - clean-embeds.sh
+ - runtime MF beams: feta-beum.mf
+ - bf: enable switching PS off
+ - updated runtime MF feta-sleur.mf with new PS slur algorithm
+
+******
+jan 5 1998
+pl 39
+ - 0.2 ANNOUNCE sketch
+ - unix style paths for LILYINCLUDE env
+ - show all output pages on website
+ - ps-to-gifs.sh
+ - bf: wtk1-fugue2
+ - python make-website
+ - higher brace resolution
+ - phased out musixtex stuff
+ - bf: rhythm.ly
+ - PS slurs
+ - PS beams
+ - Bow units
+ - turn on PS by default
+ - turn off barnumbers by default.
+ - bf: halfbeam size.
+ - bf: -M bug
+ - stafflinethick in PS (crescendi)
+ - continued (de)crescendi (in PS)
+ - bf: spurious beam reqs
+ - handle unfeasible spacing cleanly.
+ - ML-address change
+ - output naming: default to basename[-serialnumber].{midi,tex}
+ - bf: clef width
+
+pl 39.jcn2
+ - make-examples.sh
+ - leftright repeat sign + repeatbar dims
+ - smaller minimum sized rod at end of bar
+ - bf: spacing.ly
+ - less space at begin of bar
+ - experimental whitespace fixes at begin and end of bar
+ - added to beams.ly
+ - open-up beam spacing for mult > 3
+ - fixed hang/sit to overlap iso aligne with staffline
+ - fixed inter beam spacing, paper*.ly
+ - scsii-menuetto.ly fixes
+ - init/property.ly
+ - property settings for beam quantiseing and damping
+ - provisionary multiple-beam fix
+
+******
+pl 38
+ - bf: \> \! \ff (crescendo overlap)
+ - misc feta-fixes, flageolet sign.
+ - midi tempo fixes.
+pl 37.jcn3
+ - max beam slope "compile time parameterised" and set to 0.6
+ (oh, how we need runtime generated beams!)
+ - beam's left y-pos quantisation
+ - beam slopes' y-span quantisation
+ - stem.ly
+
+pl 37.jcn2
+ - feta: fixed sizes small numerals + flageolet
+
+
+*******
+dec 12
+pl 37
+ - --postscript
+ - don't crash non-fitting grouping (thx, John)
+ - attach unended spanners to a column (thanks John)
+ - bf: unended tie
+ - bf: tie direction
+ - bf: unended slur
+
+pl 36.jcn2
+ - feta: small numerals
+
+********
+dec 9
+
+pl 36
+ - bf: notehead collisions
+ - bf: dot y-position
+ - use Item::break_priority_i_ for horizontal alignment of breakables.
+ (it still sucks)
+ - junk some derivation checks, junk Normal_*_bar
+ - FlowerLib fixes.
+ - twinkle fixes.
+ - feta: flag/clefspacing
+
+
+*******
+dec 5
+pl 35
+ - naming: lily-init iso symbol.ly
+ - mf braces
+ - center textscripts.
+
+pl 34.jcn1
+ - mf: nicening of dyn, klef, rest
+ - fingerfont
+ - bf: 12/8
+
+
+********
+dec 2
+pl 34
+ - bf: mf: numbers and alto clef
+ - bf: scsi-menuet
+ - PS crescendos
+ - ly2dvi diffs (JAF)
+ - debian diffs (AF)
+ - w32 doco fix (JCN)
+
+
+********
+nov 24
+
+pl 33
+ - added abbrev.ly to font.ly; rm'd abbrev.ly
+ - don't process scores on parse errors.
+ - bf: kortjakje.ly
+ - bf: invisible stems in beams (abbrev.ly)
+ - lytodvi script (JAF)
+ - output Paper_def settings to TeX file. (eg: linewidth)
+
+********
+nov 19
+pl 32
+ - change type checks (ughugh) to derivation checks (ugh)
+ - this fixes clef bug.
+ - bf: order of breakables: meter comes after bar.
+ - bf: do error iso coredump on unknown symbol-table
+ - bf: release.py, copy patch too.
+ - bf: add makefile dep for disting MF logs.
+ - bf: don't read font-en-tja*.ly, but feta*.ly
+
+pl 31.jcn2
+ - first version of (non-ugh) c-klef
+ - bf: mi2mu: notes of zero duration as comments
+ - feta: ugh c clef
+
+
+********
+nov 17
+
+pl 31
+ - bf: replaced Score_column assert by a warning (thanks Scott)
+ - bf: mi2mu version output (thanks Scott)
+ - faq updates
+ - always output lily header with Lily version
+ - bar mucking: make scorebars/braces different from repeat bars.
+ - feta: repeatcolon, clef bf's
+ - debian/ updates. (AF)
+ - moved debian stuff into toplevel dir
+
+********
+nov 11
+
+pl 30
+ - feta: G clef.
+ - scripts now do relative coords (fixes lyrics + barnumber bug)
+ - bf: Lyrics lexer mode
+ - bf: bass clef
+
+********
+nov 6
+pl 29
+ - feta: bass clef, bf: dynamics, bf: 64th flag
+
+
+********
+oct 30
+pl 28
+ - revised Staff_symbol::brew_molecule_p ()
+ - naming: \makelilytitle
+ - fixes for TeX titledefs (JAF)
+ - junked some obsolete pedal stuff.
+
+pl 27.om-je-te-helpen-met-je-ps-spul.jcn1
+ - embedded slurs:
+ * bf: placements
+ * added \embeddedtex
+ * postscript is default
+ * fixed \embeddedps
+ * fixed mf: draw_slur
+ * postscript macro: draw_slur
+
+********
+oct 29
+pl 27
+ - -t/--test switch for experimental stuff.
+ - bf: debian optimize is not with 'z'
+ - mf: naming feta fonts are now called feta16, feta-beams16, etc.
+ - feta: ledgerline
+ - lily adjustments for new and elegant ledger line
+ - bf: mf-source path.
+
+pl 26.jcn1
+ - bf: numerals
+ - sleur.ly
+ - embedded slur testing
+ - bf + patch: make-patch release.py / VERSION
+
+
+********
+oct 26
+pl 26
+ - bf: \transpose
+ - feta: numerals 0 - 9, rewrote flags.
+
+
+
+********
+oct 22
+
+pl 25
+ - variable stemlength
+ - feta: 32nd, 64th flags
+ - font.ly
+ - dist & tarball made in out/
+ - rewrote release.sh in python
+ - notehead/stem attachment better.
+ - more Stem cleanage
+ - related Beam cleanage
+ - started numeral font (JCN)
+ - bf: whole rest outside staff.
+
+*********
+oct 20
+pl 24
+ - internationalization preps (FP)
+ - rewrote make-patch in python
+ - BUGS: added another flex/libio crash explanation
+ - feta: flags
+
+
+********
+pl 23
+ - feta changes: 1/4 rest, flat, bf 8-128 rest
+ - bf: cadenza
+ - bf: scripts
+ - bf: rest-collision
+ - bf: meter placement
+ - junked cpgento.sh
+
+*********
+
+pl 22
+ - bf: lyric 's- Zondags
+ - bf: colliding accidentals: renamed translate(Real,Axis) to translate_axis()
+ - renaming of scripts
+ - strings with escaped characters.
+ - bf "string_with_\"_embedded"
+ - bf: mf/Makefile
+ - feta changes (trill, organ pedals)
+ - updated mf-to-table for new feta conventions
+ - changed header format to something sensible.
+ - moved staff to centerline == 0;
+
+********
+
+pl 21
+ - shrinking uses more energy than stretching
+ - check IO error on writing (disk full?)
+
+
+*********
+
+oct 8
+pl 20
+ - don't swallow non lyric-stuff in lyrics
+ - x-position of Stem
+ - more feta changes
+ - move scripts to right
+ - genheader.py replaces genheader.perl
+
+pl 19.jcn2
+ - bf's mi2mu:
+ * Midi_track_parser::note_end_all
+ * staff output uses key, meter, tempo read
+ * command line read minor key
+ * minor key notenames
+
+pl 19.jcn1
+ - small changes to sharp, fermata
+ - small changes to lilypond.lsm+doc, lelievijver.lsm
+ - mi2mu updeet + bf
+
+pl 19
+ - bf: keyword.cc rm'd struct defs
+ - dots: support for feta dots.
+ - lots of font (feta) tjanges
+ - mf-to-table rewrite in python
+
+*********
+pl 18.jcn1
+ - check for python, mf-deps fix
+
+pl 18
+ - bf: Box[X_AXIS] = b
+ - bin/mf-deps.py script
+ - moved beams out of font-en-tja into vette-beams.
+ - Made corresponding .cc changes.
+
+
+jcn patches
+ - egcs compile (no link yet)
+ - nicer 4rest
+ - beam font (je kunt wel tegen een grapje, eva?)
+ - mf-to-table:
+ * "breapth" (x-depth) feature
+ * handle generic stuff such as beams
+ - polished noteheads
+ - fixed 8-128 rests
+ - 4rest
+ - mf-to-table generates tex defs
+ - bf:mf-to-table and conflily outname check
+ - 8-128 rests
+
+******
+sep 24
+
+pl 17
+ - bf: ledgerline width
+ - bf: toccata-fuga-E
+ - took out some hardwiring of tex-beam
+
+pl 16.jcn1
+ - mf-to-table.in: generate mozarella metric info tables
+ - autometric.mf: write metric info to mf logfile
+ - ital-r.mf, smaller ital-m.mf
+ - variable streepjes length (top/bottomlines); fixed (for 20pt?)
+ - streepjes twice as thick as staffrules
+ - even more pronounced bolletjes -- how 'bout this wendy?
+ - quarter and half note after drawings (a/b less distinct)
+
+*****
+sep 19
+pl 16
+ - revised mudela-man a bit
+ - ; optional after \musicidentifier
+ - bf: doco about {Mus*,Opus}TeX
+ - bf: configure: MFDIR
+ - bf: String::operator bool () removed
+ - bf: String::operator char const * () removed
+ - bf: Line_spacer::~Line_spacer () added: plugged memleak
+ - bf: Line_of_score::do_unlink () call Spanner::do_unlink
+ - bf: rests in beams
+ - bf: textnatural
+ - bf: 20 pt flags
+ - bf: longarest
+
+pl 15.jcn1
+ - bf: typos whole and half notehead
+ - de-uglyfied bolletjes.mf
+ - ascii output of font metrics in mf logfile
+
+******
+sep 17
+
+
+pl 15
+ - put top of NEWS file in the webpage
+ - breadth first search for engravers.
+ - bf: coriolan-alto.ly
+ - Stem / Notehead width now properly calced
+ - Atom and Symbol merged
+
+pl 14.jcn1
+ - lily's own noteheads (balls/globes :) (font-en-tja*.mf)
+ - {table,paper}* and taupindefs adaptations (when are we moving?)
+ - fp, sf, sfz dynamics
+ - font.ly
+ - bf: dist mudela-mode
+
+*******
+sep 15
+
+pl 14
+ - Simple but nifty mudela-mode.el for Emacs
+ - slightly better syntax for single-note-repeat, now default kept in
+Stem_engraver
+ - bf: Abbrev_beams are not the only beams (see: jcn4, stem-info, thanks, Jan)
+ - a CPU timer for Interpreting and Breaking
+ - Separate Score_elem:
+ * invoke-once stuff in Super_elem (using function pointers; much cleaner now)
+ * geometrical stuff into Graphical_element
+ * Axis_group_* accept Graphical_elements iso. Score_elems
+ * A dimension cache, hopefully this makes lily a bit faster
+ * TeX output moved out of Score_elem, separate interface Outputter
+
+ - < \multi 2; bla > -> \multi 2 < bla > (mudela 0.1.6)
+ - bf: don't do \multi if \type specified
+ - Translator switching: Change_translator, Change_iterator
+
+
+pl 12.jcn4
+ - fixed dynamic f, magstep bug
+ - gaps on abbrev-beams
+ - bf: stem-info
+ - bf: last abbrev
+ - bf: stem: do_width
+ - bf: removed rest-column.hh
+
+*******
+sep 11
+
+pl 13
+ - big Rest/notehead rewrite:
+ * separated Rest, Note_head and Dots
+ * Dot_column: dots are now chord-wise aligned
+ * Rhythmic_head is base for Rest, Note_head
+ * Merged Note_column and Rest_column
+ * Rest_engraver
+ - grand Engraver/Translator/Performer rewrite.
+ * properties: \property voice.dir = -1 (mudela 0.1.3)
+ * Input_translator junked, now Translators are generated
+by the parser (mudela 0.1.4)
+ * Translator changing: \translator Staff=oboesolo
+ * Translator preselect: \type Staff=bla < c4 >. (mudela 0.1.5)
+ * Engraver/Performer now derived of Translator.
+ * Engraver_group_engraver/ Performer_group_performer derived of
+ Translator_group
+ * renamed: Voice -> Thread, Voice_group -> Voice
+ - renamed Audio_score to Performance
+ - junked mididef statics
+ - Audio debug output
+ - bf: excess [] in scsi
+ - bf: swallow \skips
+ - bf: don't crash on infinite dims
+ - renamed wohltemperirt to wtk1-fugue2
+ - bf: address in GPL
+ - bf: errors in stdin
+ - bf: stop if errors in init files
+ - bf: move stem too when doing collisions
+ - Molecule::add_XXXX -> Molecule::add_at_edge ()
+ - doco updeet: why no midi FAQ, index, CodingStyle hungarian
+
+
+pl 12.jcn3
+ - try at better dynamic font, copied from cmbxti10: mf/*
+ - typesetting abbreviation beams; abbreviation-*
+ - some simple abbrev fixes + code cleanup (dank je, lieverd)
+ - typesetting simple abbreviations: c4:16 === [c16 c c c]
+
+pl 11mb
+ - Support also for \longa in duration-convert.cc, init/ and tex/
+ files. (MB)
+
+********
+sep 3
+
+
+pl 12
+ - bf: don't redefine tex primitives like \textfont and \mathfont
+ - nicer broken slurs (?)
+ - bf: error status upon parse error
+ - robustness in Lookup::*slur
+ - bf: mi2mu: warn if 0-length string in midi-file
+ - output id-footer
+
+********
+sep 1
+
+pl 11
+ - forms for Musical vocabulary
+ - ignore \r for windows
+ - Now paper{score,def} & midi{def,score} derived of class
+Music_output[_def]. Score is almost empty.
+ - Engraver hacking:
+ * junk Text_engraver
+ * Timing_engraver
+ * barnumber now really counts the number of bars
+ * Separated Stem_engraver and Beam_engraver
+ * junk Stem_beam_engraver
+ * no need for Stem_reqs
+ - use Direction = {LEFT, RIGHT, UP, DOWN} iso. -1, 1 throughout source
+ - ties and slurs with Drul_array
+ - junked Spanner_elem_group
+ - bf: w32 fixes
+ - Spanner now spans items.
+ - more GNITting ( bla ) -> (bla), indentation
+ - Drul_array
+ - Paper_column now is derived of Horizontal_group_item. Items
+are no longer hardwired into a Paper_column
+ - bf: stdin input
+ - PCol -> Paper_column
+ - Wtk-i, fugue1, prelude1 (SR)
+
+*******
+aug 21
+pl 10
+ - bf: init pending_indent_i_
+ - output header to TeX file. Who wants to write TeX to make it work?
+
+ - mi2mu: bf's, --key option
+ - removed Duration(int,int)
+ - bf: Duration_convert::dur2_str
+
+pl 9.jcn2
+ - redo of mi2mu frontend (midi-parser)
+ - bf: String_convert::bin2_i; added bin2_u
+ - bf's: Binary_source_file
+ - bf: constr. Tempo/Timing_req
+pl 0.1.8.jcn3
+ - table20, standchen-{16,20}*
+*******
+aug 18
+
+pl 9
+ - declare rhythic_request
+ - preliminary support for real \mudelaheaders
+ - context-sensitive arithmetic spacing. Looks alot better
+ - silly GNU braces.
+ - JCN fixes for pl 8
+ - bf: midi instrument
+ - Vocabs from GMP-I
+
+pl 8.mb:
+ - use log of duration-name
+
+*******
+aug 15
+pl 8
+
+ - gif -> xpm
+ - bf: Whoops! Open eyes now, when finding shortest note in
+spring-spacer. Fixes spacing problems.
+ - GNU coding: parentheses (here you are, Franc,ois :-)
+ - all macros now UPPERCASE
+ - Identifier blondification: don't use void*
+ - Identifier doesn't store its name. Much cleaner now.
+ - bf: Rest_collision_engraver now always announces
+ - bf: announce Staff_sym only once
+pl 0.1.7.jcn1
+ - complete redo mid/back-end of mi2mu
+ - bf: do not create/play empty Audio-{text,instrument} events
+
+
+********
+aug 14
+
+pl 7
+ - Audio_element as base for Audio_item and Audio_staff. fixes
+midi-lyric segfault
+ - added "Gallina a due violini" (MB)
+ - make MIDI files on website.
+ - Collision now also is an Element_group.
+ - bf: announce Collision when created
+
+********
+aug 13
+pl 6
+ - bf: 13 shift/reduce in parser fixed
+ - bf: plets in parser
+ - bf: main.o (again)
+ - german notenames (RM)
+ - Score_elem::offset_ now relative to its X/Y groups. Slight
+speed increase?
+
+********
+aug 12
+pl 5
+
+ - Wordwrap revert
+ - added LilyPond in WWW titles
+ - oops. A quaver is a 8th note, not a 4th
+ - bf: main.o remaking in lily/Makefile
+ - unhair Voice_iterator
+ - bf: error if no music in score
+ - bf: don't create translators if Chord element is empty
+ - bf: ctor of Tempo_req
+ - use virtual do_equal_b() for request comparison
+ - bf: turned off default plets: c4*2/3 c4*2/3 -> c4*2/3 c4*4/9
+ - bf: time_int() of an empty chord/voice
+ - more corrections to GMP Manifesto
+ - debian updates (AF)
+ - bf: g++ ICE in Performer_group_performer
+ - use fread() for reading in Simple_file_storage
+
+pl 0.1.3.jcn1
+ - mi2mu: simplification +bf lily_stream: indentation and wordwrap
+ - mi2mu: bf: blunt: non-alpha(num) chars from identifiers
+
+*********
+aug 11
+
+pl 4
+ - correction of GNU Music Manifesto
+ - moved lowlevel stuff of Source_file to Mapped_file_storage.
+Interface via File_storage. (Now using Simple_file_storage)
+ - bf: c4-"A"-"B"
+ - bf: exit status
+ - declarable keys
+ - Engraver_group_engraver::find_simple_engraver()
+ - bf: lily/Makefile
+ - bf: Midi_note_event ctor
+ - bf: tempo request
+ - popular twinkle twinkle (JV)
+ - mudela: parse tempo requests, \midi{ \tempo 4= 60;}
+
+******
+aug 8
+pl 3
+ - don't crash if no Clef_engraver.
+ - PScore -> Paper_score
+ - bf: Score_elem::extent() init of interval
+ - bfs: {Horizontal,Vertical}_group related
+ - bf: don't change original Item while doing making
+ multiple copies
+ - bf: configure DATADIR
+ - bf: type of spanbar.
+
+pl 0.1.2.jcn1
+ - minor doco fixes
+ - revived Midi_walker
+ - moved midi out of performer-* to audio-*
+ - Audio_staff
+ - removed all <ugh> members from performers
+
+*******
+aug 7
+pl 2
+ - junked Line_of_staff
+ - bf: --output
+ - bf: . in lexer
+ - bf: mi2mu version number.
+ - bf: in mudela-book
+ - bf: don't forget to make mi2mu
+ - Bar_number_grav: measure numbers (experimental)
+ - Bar_column_engraver, Bar_column: scripts on bars
+ - rewrite of {Horizontal,Vertical}_group. Yes, again.
+Now neatly integrated into class hierarchy
+ - Axis, Axis_group
+ - Debian rules (AF)
+
+pl 0.1.1.jcn1
+ - Audio{column,score,item,...}, more generic audio
+ - bf: Makefiles
+ - bf: mi2mu mudela version
+*********
+aug 5
+
+pl 0.1.1
+ - {Horizontal, Vertical}_group. A score_element may be in at most one.
+ - This means Horizontal_group_item and Vertical_group_spanner need special support.
+ - This also means a big speed increase
+ - configure cleanup
+ - bf: Choleski solve.
+ - doc updates: lilygut, INSTALL
+
+pl 0.1.1.hwn
+ - recode of Break/Colhpos interfaces
+ - Gourlay_breaking: dynamic-programming optimal solution for
+ casting off. Word_wrap is still optional
+ - some printing short cuts if no -d specced.
+ - band_matrices for column calcs
+ - more Diagonal_storage fixes
+ - retake: INFTY fixes ( now infinity_mom, infinity_f )
+
+pl 78.jcn3
+ - configure: ln and zip
+ - target doosdist -> lilypond-x.x.x.exe.zip: + executables - sources
+
+
+
--- /dev/null
+pl 17
+ - fixed RPM building.
+
+pl 16.hwn1
+ - ridiculous slur dims fixed.
+ - ly2dvi32.py -> ly2dvi.py, ly2dvi.sh -> ly2dvi-old
+ - use re iso. regex for python stuff.
+ - bf: mudela-book.py
+ - updated install directions. Made lilypond-login for csh
+ - bf: installdirs of MF stuff
+ - Dictionary implementation using hash tables (LilyPond is 3% faster)
+ - Cache [non]group_l_arr () calls in translator-group.cc (LilyPond is 4% faster)
+
+pl 16.uu1
+ - debian URLs, make/stepmake.make patch
+ - further debian fixes.
+
+pl 14.tca1
+ - partitas
+ - prall{mordent,prall} patch.
+
+******
+pl 16
+ - read property ydirection and tieYDirection for tie direction.
+ - bf: slur over rest.
+ - bf: include path
+ - part of jcn2
+ - configure --enable-guile
+
+pl 15.jcn1
+ - autoconf on mf,mfont mp,mpost
+
+pl 15.am
+ - Lots of patches from *Adrian* *Mariano*!
+
+**********
+
+pl 15
+pl 14.hwn1
+ - \lyrics iso \lyric (mudela 1.0.7)
+ - cleaned up real_expression syntax.
+ - removed optional_semicolon nonterminal after toplevel assignment
+ - MInterval Music::time_int () -> Moment Music::duration ()
+ - junked Music_iterator::daddy_iter_l_
+ - junked Sequential_music::offset_mom_
+ - tempo compression:
+ * syntax: \times 2/3 Music
+ * Compressed_music, Compressed_music_iterator
+ - flower: init rational to 0
+ - flower: removed P?Cursor<>::P?Cursor (), using pointer iso ref now.
+ - don't install into TeX, but into ${datadir}/{mf,tex,ly} (todo: ps)
+
+
+*********
+pl 14
+
+pl 13.uu1
+ - syntax for \translator: (\name "Name")
+ - bfs for footer
+ - bf: init/{book,center}-fragment.ly, YODL nofooter stuff.
+ - bf: redeclaration
+ - bf: doc fixes
+ - bfs: egcs 1.1
+
+pl 13.mb1
+ - bf: Lookup::afm_find, the width was undefined for the feta fonts.
+ - bf: refman.yo
+
+pl 13.jcn5
+ - bf: init/paper* missing `;'
+ - lilyponddefs.ps fixes
+ - crude output name fix, see scores.cc
+
+pl 13.jcn4
+ - some ps output fixes
+ - lilyponddefs.ps: some sane implemenations
+ - removed (some) ghostscript internals
+
+pl 13.jcn3
+ - PostScript output version 0.0; do
+ export GS_LIB=$HOME/usr/src/lilypond/tex
+ export GS_FONTPATH=$HOME/usr/src/lilypond/mf/out
+ make -C mf pfa
+ lilypond -t example-1 # or try: lilypond -t twinkle :-)
+ gv lelie.ps
+ - ps:
+ * lots of output fixes, chars, strings
+ * tex/lilyponddefs.ps: added rather braindead defs
+
+pl 13.jcn2
+ - tex/lily-ps-defs.ps (./tex?)
+ - grand output rehack
+ * dropped {dimen,tex}.{cc,hh}
+ * {ps,tex} stuf to {Ps,Tex}_lookup
+ * init/table*.ly: added #parameters
+ - ps fonts:
+ * ps-to-pfa.py generates valid type-3 fonts
+ * do: make -C mf pfa
+ * set: GS_FONT=GS_FONTPATH=$HOME/usr/src/lilypond/mf/out
+
+pl 13.jcn1
+ - crude postscript type 3 font:
+ make sure to have mfplain.mem metapost precompiled macros
+ make -C mf ps
+ gv out/feta20.sp
+
+********
+
+pl 12.mb1
+ - bf: feta-timesig.mf Added horizontal space, minor corrections.
+ - Changed meaning of Staff.timeSignatureStyle:
+ C Use C and stroked C for 4/4,2/2
+ old Use old style mensuration marks
+ 1 Use single number
+ Cn/m Set symbol explicitly, n/m=2/2 or 4/4
+ oldn/m Set symbol explicitly, n/m=2/2,3/2,3/4,4/4,6/4 or 9/4.
+ All other time signatures are typeset with the default two-digit
+ layout.
+
+
+pl 12.jcn2
+ - Lookup abstract base class
+ - Lookup/Symtable(s): separation of input/output
+
+pl 12.jcn1
+ - preparations for braindead PostScript output
+
+pl 12.hwn3
+ - praeludium-fuga-E to relative mode
+ - bf: mudela-mode.el
+ - bf: BIBINPUTS
+ - more dutch glossary + explanations
+ - table-to-html fixes
+pl 12.hwn2
+ - bf: mymycode in .yo
+ - VERSION to out/
+ - add VPATH to mutopia
+ - access_Identifier (bool): (non)copy arg now explicit.
+ - bf: lilypond-latex.tex
+
+
+
+pl 12.hwn1
+ - \remove "Engraver_type";
+ - \output "bla" -> output = "bla" (mudela 0.1.6)
+ - \property defaultclef -> \property defaultClef
+ - naming of access_{Engraver,Performer,Translator_group} ()
+ - changed syntax for \translator in \paper{} (mudela 0.1.6)
+ - declared contexts:
+
+ StaffContext = \translator { .. }
+ \translator { \StaffContext }
+
+ - elt_b -> elem_b
+ - bf: add Separating_line_group_engraver to RhythmicStaff.
+
+
+pl 12.am1
+ - large doc patch, ChoireStaff -> ChoirStaff
+
+*******
+pl 12
+
+pl 11.uu2
+ - added Transposed_music for mixing transposition and relative
+
+pl 11.jcn1
+ - bf: config.make striproff
+ - texinfo
+pl 11.mb2
+ - feta-timesig.mf: Added some flesh on C and C2,
+ added old-style mensuration marks.
+
+pl 11.mb1
+ - Added feta-timesig.mf, font for C and alla breve.
+
+
+pl 11.uu1
+ - new \property: meterSignatureStyle for C and C2 time sigs
+ - bf: BIBINPUTS
+ - stepmake 53
+ - bf: gif vs. png stuff
+
+*******
+pl 11
+
+pl 10.uu2
+ - plet-spanner fix.
+ - large doc patch (thanks Adrian)
+
+pl 10.jbr1
+ - aclocal.m4, stepmake/aclocal.m4: Choose specific python
+ - stepmake/bin/release.py: Use the same python calling process
+ - make/lilypond-vars.make: PATH should not use PATHSEP. It is fine
+ to hard code it to `:' on both Windows NT and UNIX.
+ - stepmake/bin/package-zip32.sh: Perform configure with a specific
+ python, ie cygwin32 python on Windows NT
+
+pl 10.uu1
+ - junked \octave
+ - marginBreakPriority, direction==LEFT
+ - mf-to-table NT fix (JBR)
+ - createKeyOnClefChange property
+
+
+pl 10.jcn1
+ - mf-to-xpms for Harmonia
+
+pl 9.jbr1
+ - scripts/convert-mudela.py: We must close infile and outfile before
+ a rename occurs. NT Windows locks open files.
+ stepmake/bin/package-zip32.sh: renamed all python bins to:
+ <filename>.py in NT Windows distribution.
+
+
+*********
+pl 10
+
+pl 9.jcn1
+ - started gnuisation of website
+ * filetype and size
+ * 'no gifs due to patent problems'
+ - bumped stepmake version nr (again):
+ please update stepmake/VERSION after making changes to stepmake...
+
+pl 9.hwn1
+ - do default midi,paper by toplevel \paper / \midi (mudela 1.0.4)
+ - bf: error if no Score context
+ - notename table now can be declared as well.
+ - junked \clear
+
+*********
+pl 9
+
+pl 8.uu1
+ - junked \staff, \multi
+ - bf Music_list::Music_list (Music_list const&)
+ - AC_SUBST(PATHSEP,DIRSEP)
+ - generate Documentation/tex/out/*.bib (AM)
+ - a4 fixes (AM)
+ - bf: metafont-*.make
+ - parser.yy: intlist mods. (mudela 1.0.2)
+ - \melodic -> \notes (mudela 1.0.3)
+ - typo: calcalute_dependencies ()
+
+pl 8.jcn3
+ - gif -> png
+ * ps-to-pngs.sh
+ * stepmake
+ * website
+ * yodl-1.31.4 (to be released)
+ - target 'texinfo' -> 'info'
+
+pl 8.jcn2
+ - more doco in texinfo (with yodl pl3)
+ - bf's: package-diff
+
+pl 8.jcn1
+ - removed tutorial from texinfo, yodl2texinfo is still rather broken
+ - bf: setlocale NUMERIC to 'C'
+ - removed ugly space from print-dimen
+
+*******
+pl 8
+ - make website fixes.
+
+pl 7.jcn1
+ - minor stepmake/yodl fixes
+
+pl 7.uu1
+
+ - changed separator in vocabulary
+ - added barAlways and defaultBarType properties.
+
+pl 7.hwn1
+ - changed header format. Use a + for concatenation.
+
+ \header { key = "concat" + "string" }
+
+ (mudela 1.0.2)
+ - allow computed properties in translator definition
+
+ GrandStaff = \translator {
+ minVerticalAlign = 1.5\staffheight;
+ ..
+ }
+
+ - Music inheritance. Datastructure and parser now follow this grammar
+
+ Music_list:
+ | Music_list Music
+ ;
+ Simultaneous_music: '<' Music_list '>'
+ ;
+ Sequential_music: '{' Music_list '}'
+ ;
+
+ - bf: Item::do_unlink () don't iterate on attached_span_l_arr_,
+because it is changed by Spanner::set_bounds () (thanks Thomas)
+ - bf: URL Documentation/index (thanks EP)
+ - bf: twinkle.ly (thanks EP)
+ - bf: mi2mu (thanks Murray)
+ - bf: mudela-book --dependencies
+ - split LaTeX and TeX stuff
+
+pl 7.tca1
+ - more Partita's
+
+pl 7.jbr1
+ - aclocal.m4,make/lilypond-vars.make: added PATHSEP as AC_SUBST to
+ help support Windows NT doco build.
+ Documentation/ntweb/index.yo: minor spelling changes
+
+
+*************
+pl 7
+ - refman updates by Adriano Moriano.
+
+
+pl 6.jbr2
+ - scripts/ly2dvi32.py: Fixed bug with lily input including multiple
+ files. Also, we now stream out lilypond log one line at a time
+ for better feedback.
+
+pl 6.jbr1
+ - scripts/ly2dvi32.py: Added some doco, add postscript option, set
+ MFINPUTS along with TEXINPUTS, modified initialization sequence.
+ Made some Python style changes per Han-Wen suggestions.
+ - Documentation/man/ly2dvi32.yo: Added a manpage for ly2dvi32.
+ - stepmake/bin/package-zip32.sh: Added doco distribution. Removed
+ the installation directory after zip operation.
+ - Documentation/ntweb/index.yo: LILYPOND -> LILYPONDPREFIX and
+ comments about MiKTeX-1.11.
+
+pl 6.tca1
+ - First movement of Partita II (BWV 826) in
+ mutopia/J.S.Bach/Cembalo-Partitas. Lilypond output was so
+ beautiful that I'll have to write the rest of the partita.
+
+pl 6.uu2
+ - mudela-book.py --dependencies
+ - more doc fixes (AM)
+ - warn if declaring a keyword.
+ - \grouping 4 2*3; now accepted.
+ - patches to standchen.ly
+
+pl 6.uu1
+
+ - mudela-book handles \input now
+ - vocabulary fixes by Adrian Moriano
+
+********
+pl 6
+ - largish rehack:
+ * Super_element is now an `abstract' class,
+ * Paper_score directly contains one Line_of_score. The
+ breaking/postprocessing/deletion is mixed with the output phase.
+ * Hopefully this will save memory for large scores. (benchmarks, anyone?)
+ * bf: Horizontal_vertical_group_item::do_unlink () should call
+
+ Axis_group_item::do_unlink ()
+
+ - changed LILYPOND to LILYPONDPREFIX
+ - added tfm and dvi target for mf/
+ - reincluded english.ly
+ - doc fixes (thanks, Adrian Moriano)
+ - doc fixes.
+ - mf: ex height added.
+
+pl 5.mb1
+ - Mudela 1.0.1: Changed \accidentals -> \keysignature
+ - Identifiers can be used in textual scripts:
+
+
+ tempoString="Allegro molto assai";
+
+ [...]
+
+ c^\tempoString
+
+
+
+pl 5.jbr2
+ - aclocal.m4,config.h.in,flower/file-path.cc: Added PATHSEP and
+ DIRSEP to configuration to support windows style path and pathlists.
+ - stepmake/bin/package-zip32.sh,stepmake/stepmake/package.make:
+ zip target now calls package-zip32.sh which creates winnt
+ binary distribution zip file. xzip target continues to use
+ package-zip.sh for Jan's cross-compiled version.
+ - lily/main.cc: Added a search for LILYPOND environment variable to
+ better facilitate binary distributions.
+ - Documentation/README-W32.yo: Updated information on running lilypond
+ on winnt.
+
+
+
+pl 5.jcn1
+ - (step)make fixes from yodl
+ - minor doco fixes
+ - bf: patch in website after 'make release'
+
+pl 5.jbr1
+ - Documentation/ntweb/Makefile: Used absolute url for LilyPond Homepage
+ - Documentation/ntweb/index.yo: Minor mods per Jan's suggestions
+
+
+
+
+*************
+pl 5
+
+pl 4.jcn1
+ - texinfo docs, lots of yodl TODO
+ - junked some makefiles
+ - ntweb: use BLURB
+ - bf: pletvisibility
+ - adaptions for yodl-1.31.2's automatic texinfo conversion
+ - reinclude of 1.jcn2:
+ - renamed -alto -> viola
+ - bf: avant-gardish six preludes
+ - bf: ly2dvi warnings
+
+pl 4.jbr1
+ - stepmake/stepmake/install-outfiles.sub.make: fixed typo
+ - scripts/GNUmakefile: add ly2dvi32 to installation list and fixed
+ included executable-targets.make to facilate installation of scripts
+ - Documentation/ntweb: Fixes to nt web page and added topdoc like
+ automation.
+
+*********
+pl 4
+pl 3.mb2
+ - Changed text script alignment: center -> left
+ - TeX commands counts as one character when calculating
+ the length of a Text_def
+
+pl 3.jbr2
+ - Documentation/topdocs/index.yo: Added link to NT dist page
+ - Documentation/ntweb/: Added Makefile and index.yo to build the
+ NT dist page
+
+pl 3.hwn1
+ - stepmake hacking
+
+pl 3.uu1
+ - stepmake MAKEFILES -> STEPMAKE_TEMPLATES
+ - count \texcommands in tex string
+
+
+pl 3.jcn1
+ - bf: website: empty toplevel readme's
+ - bf: xs4all (again?)
+ - can't administer ftp site now: put patch into website
+
+
+pl 3.jbr1
+ - stepmake/stepmake/Executable_targets: UNIX cross-compile doesn't
+ work with $(DOTEXE) on source of install command.
+ - stepmake/Generic_targets: creating multiple dirs with mkdir
+ requires -p option
+ - scripts/ly2dvi32.py: General and Winnt specific fixes
+
+
+*********
+pl 3
+
+pl 2.uu1
+ - solaris 2.6 compile/make website fixes.
+ - rm'd WWW.make
+ - stepmake .43
+ - pcnov095.win.tue.nl -> ftp.cs.uu.nl
+
+pl 2.hwn1
+ - mi2mu naming of track output
+ - bf: do key restore sign only once
+ - ly2dvi32 preliminary version (JBR)
+ - bf index.html link
+ - bf mudela-book.py
+
+
+**********
+pl 2
+ - scalar compile stuff
+ - bf install directory
+ - YODL note
+ - GUI faq update
+ - bf ly2dvi
+ - stepmake split: Po.make
+ - make check target
+ - dist AFMs and manpages
+ - split up mudela.yo in glossary.yo, tutorial.yo and refman.yo
+
+pl 1.jcn1
+ - www.digicash.com www.xs4all.nl
+ - fake msgfmt
+ - make uninstall fixes
+
+pl 1.jbr2 - aclocal.m4,stepmake/aclocal.m4,stepmake/stepmake/Variables.make:
+ Support install target for unix, unix cross compile, and
+ Windows NT
+
+pl 1.jbr1 - stepmake/stepmake/Executable.make: DOTEXE was missplaced
+ - scripts/convert-mudela.py: program_id should write to stderr
+
+**************
+pl 1
+ - mi2mu fix: \key "D"
+ - \hoffset
+ - started new NEWS file
+ - lots of stepmake hacking
+ - aclocal.m4 copied from stepmake
+ - ly2dvi 0.12
+ - build the doco from the source tree.
+ - include website in RPM
+
--- /dev/null
+1.2.0
+ - website fixes.
+ - initialize Script::dir_
+
+pl 69.jcn1
+ - doco typos
+ - tex-rules typo
+ - added missing feta-braces*.mf
+pl 68.lu1
+ - texinfo fixes
+****************
+
+pl 68.jcn2,3
+
+pl 68.hwn1
+ - more tutorial stuff.
+ - note^\dynamic scriptdir.
+ - dynamics listen to verticalDirection as well.
+ - \property automaticMelismas -> \property automaticMelismata
+ - dynamic padding for crescendi.
+
+pl 68.jcn1
+ - small tutorial fixes
+
+*********
+
+pl 67.hwn1
+ - tutorial updates
+ - \property beamAuto -> noAutoBeaming
+
+pl 67.uu1
+ - abc2ly updates
+
+pl 67.jcn1
+ - bfs: refman/parser subtract
+ - chord::find_additions_and_subtractions: termination assurance
+ - bf: refman: chord-inversion examples
+
+
+********
+
+pl 66.hwn1
+ - bf: chord mode unsigned '-' -> unsigned CHORD_MINUS (1 SR conflict).
+ - refman reedit.
+ - dotdown only when verticalDirection is set.
+ - bfs: abc2ly convertor (more or less) successfully converts
+movement 2 of Beethoven 7.
+ - \repeat "semi" -> \repeat "volta"
+ - all spacing params into paper vars.
+ - spacing before grace notes.
+ - warn if font not found.
+ - staccato dot / tenuto centering
+ - spacing for clefs.
+ - bf: Stem_staff_side::do_substitute_element_pointer ();
+ - new screenshot
+
+********
+pl 65.hwn1
+ - refman updates
+ - added \simultaneous { } , \sequential { } syntax, for
+consistency.
+
+pl 65.jcn2
+ - bf: if tie then melisma
+
+pl 65.uu1
+ - bf: squashed 2 sr conflicts in parser.
+
+pl 64.jcn2
+ - stanchen almost without " " hacks
+ - if tie then melisma..?
+ - refman updates
+ - Abbreviation.beam -> Chord_tremolo
+ - bf: chord tremolo vs beam over rests
+ - bf: note width for noteless stem
+
+
+
+********
+pl 64.jcn1
+ - resurrected abbreviation beam
+ - coriolan fixes
+
+pl 64.hwn1
+ - reference-manual updates.
+ - slurdash -> slurDash, keyoctaviation -> keyOctaviation
+
+pl 64.uu1
+ - \property forceHorizontalShift
+ - bf: denneboom.ly
+ - warn if translator switching to self.
+ - warn if brace at end of lyric syllable.
+ - bf: Repeated_music::alternatives_length_mom ()
+ - \property automaticMelismas: if slur then melisma
+ - \property noVoltaBraces
+ - bf: star-spangled-banner
+
+pl 63.lu2
+ - very tight: hinterfleisch -> 0 : input/bugs/spacing-very-tight.ly
+ - bfs: neutral beam and tie directions (daar was ik al bang voor:-)
+ - bf: abe: may beam over skip, as long as note present too
+ - bf: scsii-prelude: added slurs using skips
+
+*********
+pl 63.uu1
+ - mutopia updates courtesy Peter Chubb
+ - Don't make Time_scaled_music for c4*2/3 entry, only do the
+time compression. Should cure spurious Tuplet_brace/spanner warnings.
+
+pl 63.hwn1
+ - bf: Spacing for key/timesig at end of staff.
+ - negative font magnification
+ - slurs on grace notes.
+ - paper var stem_default_neutral_direction
+ - bf: dot-columns.
+
+pl 63.jcn2
+ - bf: midi2ly/duration-iter/convert: handle durations >= 1
+ - set reasonable default for text/dynamic paddings
+
+pl 63.jcn1
+ - junked some of (my) old metapost stuff
+
+pl 63.lu1
+ - some faq entries
+ - chord input and proceccing fixes
+ - bf: nederlands.ly
+
+**********
+pl 62.jcn4
+ - fixes coriolan
+
+pl 62.hwn1
+ - ps-to-pfa.py: use std modules re, find
+ - minor input fixes
+ - use mfplain.mp
+ - Metapost does unfill with setgray. This confuses
+GS. Do text substitution with eofill.
+
+pl 62.jcn3
+ - bfs: preludes
+ - found more wierd spacing
+
+pl 62.jcn2
+ - bf: don't start auto-beam on stem that contains only a rest
+ - bf: rm .ms yodl output
+ - bumped stepmake version
+
+pl 62.uu1
+ - don't space rhythmic requests coming from Lyrics.
+
+pl 62.jcn1
+ - bf: auto-beamer: consider starting beam based on new rhythmic head
+ - bfs: preludes-4, cello-suites
+ - \addlyricsified standchen and twinkle (ugh: \repeat and \addlyrics)
+ - bf: interstaff slur slope damping
+ - bf: in-band signaling slur snap
+
+pl 61.jbr1
+ - Documentation/ntweb/GNUmakefile: Made EXTRA_DIST_FILE style fix and
+ added dist-plain target as dependency to the default target.
+ - scripts/ly2dvi.py: getpid does not behave very well across platforms
+ so I am creating temp file names with the Python tempfile module.
+ The generate lilypond dependency file option was broken and
+ is now operational. I also changed the dependency switch
+ from -d or -M to match lilypond.
+ - stepmake/bin/package-zip32.sh: Added build of ntweb html
+ documentation
+
+***********
+pl 61.hwn2
+ - revise / junk various input files.
+ - junk Music_list_iterator
+ - bf: declared paper + \shape
+ - bf: \shape and wordwrap
+ - Busy_playing_req ()
+ - Music_iterator::try_music_in_children (),
+so explicit \context Staff is often not needed for
+ * tuplets
+ * repeats
+ - automatic rest detection for \rhythm
+ - regtest tight-spacing.ly
+ - regtest lyric-combine.ly
+ - Melisma_playing_req, Melisma_engraver, Busy_playing_req:
+stuff for syncing music & lyrics.
+ - simplify Extender_engraver, Hyphen_engraver. Assume lyrics come in from only one voice.
+ - docced ambiguities in grammar.
+ - mudela-book -I behavior, verbosity.
+ - state search path when file not found
+
+pl 61.hwn1
+ - bf: \scm with --safe
+ - (ly-gulp-file)
+ - no need to set GS_LIBDIR, .ps files are inlined and directly
+printable.
+ - bf: spacing engine
+ - fixed paper11/13/16/20/23/26.ly
+ - use (header-end) iso {ps,tex}setting
+ - bf: convert-mudela --output
+ - move \version check to lexer.ll
+ - moved repeated-music-iterator.cc to folded-repeat-iterator.cc
+ - bf: broken crescendi
+ - removed delayed Spanner breaking.
+ - new implementation of \rhythm:
+ * Lyric_combine_music
+ * Lyric_combine_music_iterator
+ * \property melismaBusy sets melisma state.
+ * (commented out in parser.yy -- solution is not good enough yet.)
+ - bf: record def spot of seq/sim music
+ - junk Music_iterator::next_music_l (), Music::to_rhythm () & friends.
+ - junk Re_rhythmed_music & friends
+ - mudela 1.1.62: \shape = -1 -2 -3; -> \shape -1, -2, -3; etc.
+ solves one ambiguity.
+ - grace notes at end of music don't crash Lily.
+
+*******
+pl 60.jcn2
+ - moved creation of $BUILDDIR/share/locale into set-lily.sh
+ - slur slope change constraints when snapping
+ - slur height damping based on bow height
+ - don't typeset unfinished (auto) beams
+
+pl 60.jbr1
+ - Documentation/ntweb/angels.ly, Documentation/ntweb/guile.patch: added
+ - Documentation/ntweb/GNUmakefile: add above to EXTRA_DIST_FILES
+
+pl 59.mb2
+ - Tempo changes in MIDI output!
+ - gallina.ly:auto-beaming
+ - added property articulationScriptVerticalDirection
+ (useful in N.W.Gade/score.ly)
+ - bf, N.W.Gade: removed some more misprints
+
+pl 60.uu1
+ - bf: hara-kiri.ly
+
+pl 60.jcn1
+ - interstaff slur tuning
+ - added some regtests
+ - removed now silly check in encompass-info
+
+**********
+
+pl 59.uu1
+ - papervar loose_column_distance
+ - scripts don't collide.
+ - bf: midi2ly outputs \context iso \type
+
+pl 59.jbr1
+ - lily/colhpos.cc: fixed typo
+ - Documentation/ntweb: Updated News and added all the files
+ associated with Windows Distribution web page.
+ - stepmake/bin/package-zip32.sh: added the ntweb page to formated
+ distribution.
+
+pl 59.jcn1
+ - bfs: slur damping
+ - papervar slur_interstaff_snap_to_stem
+
+pl 59.hwn1
+ - \property graceAlignPosition : put grace notes after main note.
+ - moved pianobrace stuff into Lookup
+ - moved Local_key_engraver out of Voice context, and
+acknowledge Grace_align_items. Solves tie + accidental problem.
+
+pl 59.mb1
+ - Some small clean-ups and bug fixes
+
+***********
+
+pl 58.uu1
+ - experimental pdftex support, courtesy Stephen Peters.
+ - --version support
+ - junked complicated loose column handling.
+ - only stretch the extra space after prefatory matter, not the
+entire width of prefatory matter.
+ - standardise(d) switches:-d for debug, -M for Make deps, -m for midi-only.
+ - bf: papervar non_musical_space_strength now works. Set to 8 (-> Strong! )
+ - bf: space after time_sig.
+ - bf: decrescendi.
+ - bf: barlines on voltas
+
+************
+pl 57.hwn1
+ - bf: accidentals on grace notes.
+ - \property graceAccidentalSpace
+ - bf: ignore grace notes duration for non-grace spacing.
+ - uncommented Key_req::transpose.
+ - Dot_column::do_post_processing (): better dot collisions, see dots.fly.
+ - derive Dot_column from Note_side_item.
+ - renaming of files
+ * heads-engraver
+ * request-iterator
+ * p-score
+ * engraver-group
+
+pl 57.jcn3
+ - bf: no extension: assume .ly
+ - bf: bow::do_width; which in turn allowed
+ - removed broken interstaff slur damping hack, and
+ - bf: slur height damping fixes damping
+
+pl 57.jcn2
+ - bf: ? priority and snap to stem
+
+pl 56.jcn4
+ - interstaff slur fixes and damping
+
+pl 56.mk1
+ - bf: collision.cc: collisions between chords with different
+ stem directions and close heads.
+
+****************s**************
+
+pl 56.jcn3
+ - slur de-hairification
+ * slurs always attached to noteheads, by default
+ * corrections for steep and high slurs
+ * snap to stem end when close
+ - bow/tie/slur dy/dx fix
+
+pl 56.hwn1
+ - some spacing tweaks.
+ - bf: two repeats + alts after each other.
+pl 56.jcn2
+ - tie: bfs + even simpler
+
+pl 56.jcn1
+ - bf: re-added \textflat,sharp to fix chords...
+ - bf: chord-modifier and mandatory dot: c-maj5
+ - tutorial chord fixes
+ - tie fixes and boldifying:
+ * removed sloping (dy!=0) code
+ * use actual note-widths
+ * y[left] == y[right]
+ * follow OSU rules, I hope (from comments in text -- must check)
+ * undetermined direction -> down; inverse of stem
+ - bf: beam: undetermined direction -> up; like stem
+ - slur-symmetry fixes
+ - fix for \rhythm and seq_iter childs (still crude, but more effective)
+*********
+
+pl 55.uu1
+ - use GS' anti aliasing
+
+pl 55.jcn1
+ - auto-beamer: consider current duration first in ending/starting beam
+ this way, you can have 16ths auto-beamed, in some way, but 8ths never
+ beamAutoEnd_16 = 1;
+ beamAutoEnd_8 = 1/8;
+ - added some classes and few lines of doco to .dstreamrc
+ - refman:
+ * comment out broken
+ * commented out stale tex macros (tex/* dir too)
+ * bfs/new syntax: chords
+ - more midi2ly renaming stuff
+ - bf: make info (midi2ly and other renaming)
+
+pl 54.jcn2
+ - bf: auto-beamer: don't beam over skips
+ - update BUGS
+
+
+pl 55.mb2
+ - Font update: added more mensural style time signatures,
+ old2/4, old6/8alt, old4/8 thanks to Christian Mondrup.
+ - bf: correct indentation of first line (removed \leavevmode)
+ plain TeX still gives wrong indentation
+ - bf: volta brackets broken over several lines get open end.
+ Final bracket gets vertical end if it stops at double bar.
+ - Dashed grace flags also for durations shorter than 8.
+ - N.W.Gade: fixed some details
+
+pl 55.mb1
+ - bf: font magnification also in PS output
+ - bf: set the GS_* variables correctly in buildscripts/lilypond-*.sh
+ - bf, lily.scm: errors in (de)crescendo
+ - bf, lilyponddefs: removed \noindent
+
+
+pl 55.hwn1
+ - fixes: horn-concerto-3.ly
+ - bf: grace before tuplet.
+ - bf: decrescendo
+ - bf: multimeasrest numbers centered.
+
+****************
+
+pl 53.jbr2
+ - Documentation/ntweb/index.html: Updated nt distribution web page
+
+pl 54.uu1
+ - bf: Stem lens for beams.
+ - move meta doco to Documentation/metadoc
+ - move .bibb to Documentation/bibliography
+ - rename mi2mu to midi2ly
+ - removed other-packages.bib to comply with GNU standards
+
+pl 54.jcn1
+ - mutopia/J.S.Bach/Duette 1&2
+
+pl 54.mb1
+ - Renamed \wheel to the \coda
+ - bf: correct gap in tuplet braces
+
+pl 53.hwn2
+ - move more parameters from PS/TeX to Lily.
+ - PS cleanup
+ - TeX cleanup.
+ - bf: also make (empty) bar at end of voltabracket.
+ - bf: don't put slur over rest.
+
+
+pl 54.uu1
+ - debian updates (anthony fok).
+
+*************
+pl 54 (july, 8)
+pl 53.jbr1
+ - scripts/ly2dvi.py: A fix for the multitude of file systems supported
+ by windows. As long as the paths that the cygwin apps use are
+ UNC style and the paths that the native windows apps use are DOS
+ style everybody is happy. I add quick and dirty unc2dos function
+ to facilitate this approach.
+
+pl 53.hwn1
+ - bf mudela-book.
+ - better min distance for multi measure rests.
+ - junk ATOM_SMOB
+ - control tuplet gap size from paper.
+ - bf: output header as PS strings for PS out.
+ - bf: cached-fontname
+ - control volta height from paper block.
+
+pl 53.jcn5
+ - \rhythm-ified and text bfs: standchen.ly
+ - walk rhythm through *_iterator::next_music_l ()
+
+pl 53.jcn4
+ - more abc2ly hacking, including lyrics and \rhythm
+ - bfs: \rhythm
+ - \rhythm-ified input/twinkle.ly
+
+pl 53.jcn3
+ - put rhythm A on pitches/lyrics B: \rhythm MUSICA MUSICB
+ input/test/rhythm-melody.fly
+ input/test/rhythm-lyrics.fly
+ - syntax changes:
+o * dot-only duration dropped: use c4 c4. iso now invalid: c4 c.
+ * chords: optional_dot now mandatory:
+ \chords { c-1.2.3 } iso now invalid: \chords { c-1 2 3 }
+ * @c@ (notemode_chords) syntax dropped. rather use:
+ \notes { c d \chords { e f } }
+
+pl 53.jcn2
+ - \property graceFraction: part of next note taken-up by grace(s).
+ - Note_performer: add moments for delayed notes,
+ fine for single grace notes: hear gnossienne-4.ly
+
+pl 53.jcn1
+ - grace performance
+ - fixed tie-performance
+ - bf: abe
+
+pl 53.gp1
+ - added Hyphen-engraver, Hyphen-spanner
+************
+pl 52.jcn3
+ - bf: mi2mu: midi without key
+ - try at grace-performer-group; breaks MIDI output even when no \grace
+ - silly tie-performer
+ - performers play_element () delayed to do_pre_move_processing ()
+
+pl 52.jcn2
+ - bfs standchen + grace, gnossienne-4
+ - decoupled midi output from input
+
+pl 52.jcn1
+ - bf: moved accidental code from Key_engraver to Key_change_req
+ - bf: midi-key
+ - bfs: mi2mu: core-dumps, keys, key-names, key-changes, notenames
+
+pl 52.hwn2
+ - new-beaming.cc: new beaming code
+ * now does [c8. c32 c32] correct by itself.
+ * beam over barlines
+ * non-fitting stems handled gracefully (eg. [c8 c4 c8] )
+ - junked rhythmic grouping, \grouping and all associated bits.
+ - bf: do try_visibility_lambda for nonbreakable items as well
+ (fixes \nobreak on barline)
+ - bf: Cons_list::truncate()
+
+pl 52.hwn1
+ - repeat-engraver cleanup
+pl 52.gp1
+ - bf: make doc++ corrected to only include *.h and *.hh files.
+pl 52.mb2
+ - Added \repetitions: prints symbol for repeated bars.
+ Same syntax as multi-measure rests!
+ - Added \segno and \wheel script symbols
+pl 52.mb3
+ - Added barSize property. Junked barsize variable.
+
+************
+pl 51.uu2
+ - grace note flags, move Lookup::flag into Stem
+ - faq updates: doc++, Matt's page
+ - fixes for doc++.
+ - bartype string uses "brace" and "bracket" iso. "{" and "["
+ - some of assert()s replaced by programming_error ()
+
+pl 51.mb1
+ - N.W.Gade: added real grace notes
+ - feta-banier.mf: added grace note flag
+
+pl 51.uu1
+ - use weAreGraceContext \property to determine self_grace_b_
+ - made more engravers grace aware.
+
+pl 50.jcn2
+ - filed egcs bug report for powerpc.
+ - removed unnecessary #ifdef powerpc
+ - grace and other fixes for auto-beamer
+ - grace and other fixes for (beam-)stem-lengths
+ - input/test/bugs/hairy-grace.ly (urg)
+ - input/test/bugs/grace-accidents.ly (urg)
+ - input/test/bugs/grace-grace.ly (core)
+ - fixes: gnossienne-4.ly
+
+pl 50.hwn2
+ - Timing_translator: add proccing moments to nearest global translator,
+not to top global translator.
+ - cadenza.ly: grace notes.
+ - bf: auto staff switching
+
+************
+pl 51
+pl 50.hwn1
+ - grace notes:
+ * Grace_iterator
+ * Grace_music
+ * Grace_engraver_group
+ * move Score::run_translator to Global_translator::run_iterator_on_me
+ * stemLength property, Stem::length elt property
+ * Grace_align_item
+ * Note_head_side baseclasses Local_key_item, Grace_align_item
+ * Local_key_engraver moved to Voice.
+ * Grace_position_engraver
+ * Added Rhythmic_head::stem_l_
+ * Various other robustifications.
+ - lily.scm: scm->string
+ - folded reps without alts.
+ - Paper_outputter uses scm->string
+ - stem params now in staff positions iso. real dimensions
+ - internal: Junk all G_ and g- prefixes
+
+************
+pl 49.mb1
+ - bf: ly2dvi -N
+ - Added dynamicPadding property (applies only to dynamic marks,
+ not (de)crescendi.
+
+pl 49.jcn4
+ - resurrected gnossienne-4
+ - Documentation fixes (for texinfo get yodl-1.31.13, tbr)
+ - minor abc2ly fixes; successfully converted some simple abc files from
+ http://faeryland.tamu-commerce.edu/joyce/
+ - www.mail-archive.COM
+
+pl 49.jcn1
+ - guile scm_gc_mark () workaround:
+ - via scm output wrapper buildscripts/lilypond.sh, set:
+ PATH=$LILYPONDPREFIX/buildscripts/out:$PATH
+ - scm output fixes
+
+pl 48.hwn2
+ - bf: rest-collisions.
+ - cleaned up standchen
+ - bf: slur dims.
+ - bf: unfold without enough alternatives.
+ - Use Lily version for \version.
+
+
+pl 49.uu1
+ - ran purify. Fixed some small problems, plugged some leaks.
+ - bf: linebreak at |:
+ - doc updates by Adrian Mariano
+
+pl 49.mk1
+ - Breathing signs by Michael Krause
+
+************
+
+pl 48.hwn1
+ - \property hshift -> \property horizontalNoteShift (mudela 1.0.21)
+ - cleaned up collision. \property hshift = 2 now supported.
+ - Spacing:
+ * bf: don't divide strength by distance if distance == 0.0
+ * cleaned up Spacing_spanner
+ * simplistic optical illusion spacing for opposite stems.
+ - don't use Protected_scm for Score_element::element_property_alist_
+ - some scsii fixes.
+ - Lookup cleanups; junked Lookup::paper_l_
+ - abc-2-ly: tuplets, guitar chords., chords,
+
+pl 48.mb2
+ - bf: correct accidentals after tied over note.
+
+pl 48.mb1
+ - bf, lookup.cc: Count '{' also directly after a TeX macro
+ - bf: textstyle->textStyle in all examples.
+
+pl 48.jcn1
+ - bd: interstaff slurs at line break
+
+pl 48.uu1
+ - add a WX field to AFM output.
+ - add space before ; in AFM output
+
+*********
+pl 47.jcn1
+ - bf: interstaff slurs (urg: more segfaults in scm_gc_mark ())
+
+pl 45.hwn3
+ - Abbreviation -> Stem_tremolo.
+ - bf: Stem_tremolo in Beam.
+ - bf: Stem_tremolo over whole note.
+ - spacing before clefs.
+ - Spacing_spanner is now on by default
+ - junked most of Spring_spacer
+ - Tunable space after barline.
+
+*********
+pl 46.mb2
+ - Reintroduced the tupletVisibility property. Same values as
+ the old version (pletvisibility), see the Reference Manual.
+ Note: does not work correctly with automatic beams.
+ - Added a tupletDirection property.
+
+pl 46.uu1
+ - bf: {} in texts.
+
+pl 45.hwn2
+ - more doc updates.
+
+
+pl 46.mb1
+ - Added property articulationScriptPadding
+ - N.W.Gade: layout fixes
+
+*********
+
+pl 45.hwn1
+ - Audio broadcast & acknowledge.
+ - more advanced spacing for prefatory matter
+ - tuplet appearance tweaking
+ - bf: ChoirStaff
+
+pl 45.uu1
+ - glossary fixes (thanks Dirk).
+
+pl 44.jcn2
+ - bf: auto-beamer: long standing br form AM
+
+
+*********
+
+pl 45 (may 28)
+ - reinstalled Thread (there you are, John)
+ - german vocab.
+
+
+pl 43.hwn2
+ - split G_staff_side_item into G_staff_side_element and G_staff_side_item.
+ - junked old Staff_side
+ - Crescendo also uses G_staff_side_element
+ - crescendo_shorten paper var.
+ - create horizontal groups for break_aligment inside Break_align_item.
+ - more abc-2-ly fudging
+
+pl 44.mb1
+ - bf, property.ly: change fontsize->fontSize
+ - N.W.Gade: removed old tie behaviour
+ - bf, ly2dvi: expand .sly extensions
+
+*********
+pl 44
+pl 43.jcn2
+ - bf: repeat :| placement + core dump
+ input/test/repeat.ly
+ input/test/coda-kludge.ly
+ - bf: mf without ljfour
+ * feta-accordion fix/hack for feta11 at 300dpi
+
+pl 43.hwn1
+ - half assed attempt at ABC convertor.
+ - Spacing_spanner: "decentral" spacing stuff. Use -t to try.
+ - bf: StaffGroup vertical alignment
+ - \property {slur,tie,}ydirection -> {slurV,tieV,v}erticalDirection (1.0.20)
+ - Spanner now hangs on left endpoint.
+ - \property forgetAccidentals: do not remember accidentals.
+ Every note not in the key triggers typesetting of an accidental.
+ - \property noResetKey: do not reset key at start of measure:
+ accidental remain in effect until overriden
+ - bf: ties & accidentals (fix breaks oldTieBehavior)
+ - junked Tie::same_pitch_b_
+
+pl 43.jcn1
+ - configure, set-lily.sh, release stuff
+
+pl 42.tca2
+ - lilypond don't put \interstaffline after last line. This to
+ get really nice vertical spacing for mudela-book.
+ - mudela-book: vertical spacing
+ - lilyponddefs.tex: commented out \parindent=0pt to get correct
+ paragraph indent for mudela-book
+
+************
+pl 43
+
+pl 41.hwn3
+ - reinstated \property inheritance
+ - \property SkipBars -> skipBars
+ - \property midi_instrument -> midiInstrument
+ - \property fontsize -> fontSize (mudela 1.0.18).
+ - bf: add a space after lyrics.
+ - junked flower DLL classes
+ - rewrote repeat music and iterators (mudela 1.0.17)
+ * Folded_repeat_iterator
+ * Unfolded_repeat_iterator
+ * New_repeated_music
+ * syntax change: \repeat FOLDSTRING NUMBER Music [ALTERNATIVE Music_se
+quence]
+ - data struct simplification: junked Dynamic_req,
+Absolute_dynamic_req, Span_dynamic_req, Slur_req, Beam_req. Use
+Span_reqs and Text_script_reqs with type fields instead.
+
+pl 42.tca1
+ - updated mudela-book documentation
+ - misc mudela-book.py
+ - accordion: smaller dots + little script renaming
+
+
+pl 42.jcn1
+ - bf: hp-u(rg)x: user build; sm 73
+ - bf: hp-u(rg)x: sm74
+
+pl 41.mb1
+ - convert-mudela: convert textstyle -> textStyle
+ - refman.yo: properties moved to correct contexts.
+ - mudela-book.py: Added singleline, multiline options.
+ Fixed default line width bug.
+
+***************
+pl 41.hwn2 (may 10, 1999)
+ - bf: Score bar line thickness.
+ - more paper writing
+ - website tweaks.
+ - Graphical_element::dim_cache_ now alloced separately.
+ - junked Graphical_element::absgolute_offset
+ - Musique-de-Table
+ - mmrest_x_minimum now works at begin-of-line.
+ - junked Span_bar::extra_x_off
+ - \property foo.bar = \stringid + \otherstringid
+ - bf: stop on lexer errors as well.
+ - only do vertical alignment at Score level.
+ - tweaked ledger endings a bit.
+
+
+pl 41.hwn1
+ - small fixes.
+ - mudela-book.py patch (thanks MB)
+
+pl 41.mb1
+ - Added the installation instructions to the top web page.
+ - N.W.Gade: Added triangolo part, minor changes.
+
+pl 41.tca1
+ - Lookup::accordion and removed some accordionfonts
+
+***************
+
+pl 40.uu2
+ - rest ledger lines are dimensionless.
+ - Score_elements are added to the Paper_score directly when
+announce_element () is called. This makes it possible to init
+molecules from within engravers.
+ - changed \type to \context
+ - \context Contextname = ID Music is now a real separate production
+ * you can do
+ \context C1 \context C2
+
+ and C1 won't overwrite C2
+
+ * you need some extra explicit context specs, eg. if you start a
+voice with a chord.
+
+ \score { \notes { <c e g> } }
+
+ should be
+
+ \score { \notes \context Voice { <c e g > }
+
+ - set staff margins on grandstaffs too. Center staffmargins vertically.
+ - \property values are not inherited anymore, i.e. setting
+Score.minVerticalAlign does not set GrandStaff.minVerticalAlign, Staff.minVerticalAlign and Voice.minVerticalAlign as well.
+ - {Axis_spanner, Hara_kiri}_engraver which can be added at wish.
+Hara_kiri should be working again.
+ - boilerplate for accordion stuff.
+ - some more paper writing.
+ - bf: substitute vertical refpoint as well for broken items.
+(fixes clef^8)
+ - bf: translating molecule without elts but with dims. (bf: accidental
+spacing.)
+
+pl 40.mb1
+ - bf: ly2dvi set MFINPUTS so standard tree is found before lilypond
+ - bf: lilypond-regtest.doc, ls-latex.py; now finds author/title
+
+pl 40.uu1
+ - large documentation patch by Adrian Mariano
+
+********
+pl 40
+pl 39.mb2
+ - added more mensural style time signatures, old3/4, old6/8, old9/8
+ - redesigned old6/4, old9/4
+ - Updated refman.yo, lilypond-regtest.doc, clefs.ly, time.fly
+
+pl 39.hwn1
+ - consified mi2mu (pl 37.jcn1)
+
+pl 39.mb1
+ - bf: invisible clefs don't take any space, moved _8 below clef
+ - updated incipit example and macro
+
+pl 39.uu1
+ - delete graphical objects in reverse
+ - faq updates.
+
+********
+pl 39 (april 12)
+ - \property textstyle -> textStyle
+
+pl 38.tca1
+ - added scm/accordion-script.scm and update ly/accordion-defs.ly
+ - renamed some accordion symbols to make them more english and less
+ norwenglish.
+ - removed dot from \accBayanbase
+
+pl 37.script4
+ - bf: molecule
+ - bf: tuplet spanner appearance.
+ - bf: less spacing after clef. Invisible bar has no dims.
+ - included AIMS. The why of Lily.
+ - warning if duplicate engraver.
+ - warning if no ties could be created.
+ - bf: \time1/4; .. beams ..
+ - bf: staff switching beams / slurs.
+ - tuplets on multiple beams.
+ - Documentation/tex/lilypond-regtest.doc
+ - bf: nested tuplets
+ - slur cleanups.
+ - bf: multi_measure_rest_engraver in Score_context.
+
+pl 38.uu1
+ - bf: clef_8
+ - bf: barnumbers.
+
+pl 37.script3
+ - fixes for spring_spacer, introduced
+Spacing_engraver
+ - cleanup for rest-collisions.
+ - hacks for GUILE gc
+ - mudela-book \mudelafile
+ - Documentation/tex/lilypond-regtest.doc
+ - MF rest fixes
+
+
+********
+pl 38 (april 6)
+pl 37.script2
+ - bf: AFM for BlueSky AFM files.
+ - \penalty = 4278 -> \penalty 4278
+ - URG!! fixed major (unnoticed) bug in dependency engine
+ - Further Script hacking:
+ * G_script_column
+ * G_script_column_engraver
+
+pl 37.script1
+ - major Script rehack:
+ * G_stem_staff_side_item
+ * G_script
+ * G_script_engraver
+ * G_script_req
+ - junked Text_def, changed \property textstyle -> \property textStyle
+(todo -> convert-mudela)
+ - Line_of_score is an Axis_group_element, no more overlapping
+lines, hopefully.
+ - mf: whole diamond head tweak
+
+pl 37.mb2
+ - Added property clefStyle: "" / "transparent" / "fullSizeChanges"
+ - New example: input/test/incipit.ly
+ - Documented clefStyle and restStyle in refman.tex
+ - Partial bug fix: octaviated clefs. Still broken!!!
+
+
+pl 37.mb1
+ - Added property restStyle.
+ - mensural 4th, 8th and 16th rests.
+pl 37.uu1
+ - FreeBSD bf
+
+****
+pl 37 (march 30, 1999)
+ - note head styles, see input/test/noteheadstyle.fly
+ * \property noteHeadStyle:
+ * diamond note heads (probably really ugly)
+ * cross note head.
+ * harmonic head (mf sources were tweaked)
+ * transparent for no \heads
+ * \property noteHeadStyle ="" for normal heads.
+
+pl 36.mb2
+ - bf: timeSignatureStyle
+ - Added dynamic fz (forzando) to Lilypond
+ - bf: N.W.Gade, sfz -> fz
+
+pl 36.hwn1
+ - debian fixes.
+ - don't insert extra alignment space for empty stuff.
+ - Align_element derives from Axis_group_element
+ - junk cruft for detecting upbeam / downbeam.
+ - junk all *{horizontal,vertical}* Score_element derived classes.
+ - G_staff_side_item::padding_f_ now generic property.
+ - some tweaking of beam & stem.
+ - junk pointerlist in Sources
+ - junk Stem::mult_i_, Stem::beam_gap_i_, G_staff_side_item::padding,
+ Bar::at_line_start_b_, Key_item::c_position_, Note_head::type_str_,
+ Note_head::staff_size, Stem::xdir_
+
+pl 36.mb1
+ - bf: N.W.Gade
+
+**************
+
+pl 35.uu1
+ - more memory tweaks: don't do Score_element::line_l () when deleting lines.
+ - more generic properties.
+ - change ridic. dims assert into warning.
+ - tex/ midi fixes (thanks, Mats).
+ - bf: don't crash when no Stem_infos are set.
+ - extender-spanner simplification
+ - working MIDI chords (Thanks Dscho)
+
+pl 35.jcn1
+ - some ps fixes
+
+************
+pl 35
+
+pl 34.hwn2
+ - "Lily Was Here" is def'd as \mudelatagline, override with
+ \header { tagline = "... " ; }
+ - \property currentBarNumber: set
+ current bar number.
+ - \property postBreakPadding: tune extra
+ space padding after linebreaks.
+ - \property textEmptyDimension: disregard script text
+ dimensions (untested)
+ - \property staffLineLeading: set the staff space
+ - adjustable staff space size (per staff)
+ - Staff_symbol_referencer as base class for elements that use
+ info of the staff symbol. \property numberOfStaffLines also works OK
+ with ledger lines. (Is that useful? dunno.)
+ - warning if someone does \translator with no name
+ - junk Item::breakable_b_
+ - junk PointerList<Music*>, use Killing_cons
+ - bf: Auto_beam_engraver.
+ - bf: mmrest engraver.
+ - use callbacks for Dimension_cache.
+ - lots of small cleanups. Junk various members of
+ Score_element & derived classes:
+ * Item::original_l_,
+ * Spanner::original_l_,
+ * Score_element::transparent_b_,
+ * Item::break_priority_i_,
+ * Item::break_status_dir_,
+ - merge Score_priority_engraver / Score_horizontal_align_engraver
+ - Use more generic element properties.
+ - precompute SCM symbols.
+ - remove_elt_property (): Try to junk an element property, if not
+ needed anymore.
+
+
+
+pl 34.uu1
+ - more PointerList junkings.
+ - MIDI bugfix.
+ - be more conservative with Dicts/Hashes mem usage
+
+*********
+pl 34
+
+pl 33.uu2
+ - some performance cleanups: junked PointerList instance, plugged some leaks.
+ - style -> fontname now in scheme.
+ - minor Score_element brainsurgery:
+ * generic element properties.
+ * junked Score_element::junk_links, Score_element::unlink
+ * junked Directed_graph_node as superclass of
+Score_element, this should reduce mem usage a bit.
+
+pl 33.jcn2
+ - fixed autobeamer's beam->unlink ()
+
+pl 33.jcn1
+ - allow autobeaming according to duration iso (crude) multiplicity
+
+pl 33.jbr1
+ - change my email address
+ - Windows platform does a cp -r instead of a ln -s
+
+pl 33.uu1
+ - bf: ^ and _
+ - junked poor man's dynamics.
+
+*********
+pl 33
+
+pl 32.mb1
+ - bf: \> and \< were interchanged!!
+ - Added property: textScriptPadding
+ - Changed copyright text on the Gade score.
+
+pl 32.uu1
+ - really include Gade score now.
+ - fixes: install-[out-]targets, INSTALLATION_[OUT_]SUFFIXES
+ - install TFMs in separate dir.
+pl 31.hwn3
+ - Span_bar bugfix (there you go, Mats).
+ - bf: Score copy ctor (-> bf declaring score)
+ - new Tie behavior: only tie identical pitches, switchable with
+ oldTieBehavior
+ - junked cautionary_b_ from Musical_pitch
+
+pl 32.jcn1
+ - set-lily: set weird locale links for $LILYPONDPREFIX
+
+**********
+pl 31.mb2
+ - Added example: "Imellan Fjeldene" by Niels W. Gade.
+ - bf: don't attach staff margin text to clef changes within the
+ lines. (Still not perfect: no text when a clef change happens
+
+pl 31.hwn2
+ - be somewhat lazy in break/object multiplication.
+ - print # elements for memory usage impression (try -t)
+ - Paper_score cleanup
+ - junked various Pointer_list instances. Executable now is smaller.
+ - junked various cruft
+ - merged do_substitute_dependen{t,cy} to
+do_substitute_element_pointer ()
+ - more parser cleanup
+ - Interval uses Drul_array
+ - bf: I've been drinking too much
+ - delete break helpers before object breaking/multiplication. Try
+to save some memory.
+
+pl 31.jcn4
+ - bf: toplevel install, kpsewhich
+ - sm 71, require yodl-1.31.11
+ - fix: slur macros
+ - bf: info in rpm, if available
+ - fix: rat != float
+ - bf: slur-follow-music
+
+pl 31.uu1
+ - config.make: include GUILE_LDFLAGS
+
+******
+pl 31 (feb 16)
+
+pl 30.jcn1
+ - sm fixes, intl/ fixes
+
+pl 30.mb1
+ - Added support for magnification of TeX fonts ==>
+ larger dynamics in 20pt scores. (Doesn't work in Postscript)
+
+pl 30.hwn1
+ - Debian patches (thanks, Anthony)
+ - Italian support (thanks, Maurizio)
+ - parser cleanup
+ - minor chord.cc cleanups.
+ - bf: \rc \rced
+ - hara kiri doesn't do suicide with normal rests.
+ - Hara_kiri_vertical_group_spanner generalised
+ - extender engraver rewrite, now __ is like ~ [] |, ie. in between
+notes/lyrics.
+ - lyric engraver now engraves only single voices. Use
+separate LyricVoices to get stacked lyrics.
+ - bf: bar(Non)Auto first barline
+ - barAuto -> barNonAuto
+
+
+*******
+
+pl 30 (feb 15)
+
+pl 29.uu1
+ - typewriter font
+ - star-spangled-banner bf (slur.cc).
+
+
+pl 29.jcn3
+ - fix: slur-case3.ly
+ - init.sly: .fly with linewidt=-1
+
+pl 29.jcn2
+ - resurrected ps output
+
+pl 29.hwn1
+ - bf: coord relative to self.
+ - bf: error msg if no AFM found
+ - bf: hang script on bar in other axis too (fixes staff-side-slur bug)
+ - hang on scripts on clef as well (more to left for single staffs)
+
+
+pl 29.jcn1
+ - bf: volta sizes
+ - GNU stuff on home page
+
+*******
+pl 29
+
+pl 28.hwn1
+ - bf: mid measure clefs (breakable items in non-breakable columns.)
+ - spanner.cc assert changed to warning
+ - (c) 1998 -> 1999 search replace.
+
+pl 28.jcn1
+ - new outline TODO + .emacs setup
+*******
+pl 28
+pl 27.hwn2
+ - un-SMOB Atom. Cons and Killing_cons as simple cons replacements.
+
+pl 27.jcn5
+ - outline TODO
+
+pl 27.jcn4
+ - measure-end hinterfleish patch
+ - input/test/coda-kludge.ly
+ - bf: volta-number placement
+ - volta: support for "1.-2." "3"
+
+pl 27.jcn3
+ - bf's: zero-length repeats
+ - Auto beamer:
+ * turned on by default
+ * input/test/auto-beam*.ly
+ * support for time-defaults
+ - Chords:
+ * input/just-friends.ly
+ * ChordNameContext
+ * bf's: chord mode: accept STRINGS, rests
+ * bf's: banter_str
+ - new bool \property Score.barAtLineStart
+
+pl 27.hwn1
+ - global ctors
+ - read lily.scm before all .lys
+ - Link_array derives from Array<void*>
+ - search repl: Array<X*> -> Link_array<X>
+ - junked most static casts
+ - revamped Atom / Molecule: Molecule now is the public interface.
+Atom is a GUILE smob. Guile takes care of allocation and list stuff.
+ - bar scripts on score bars (there you are, Mats)
+ - :||: span bar fixed
+ - using generic ledger lines now (regenerate fonts!)
+ - refman updates (Thanks, Adrian!)
+ - Molecule::operator = (), Molecule::do_center ()
+ - junked Span_score_bar, Score_bar, Staff_bracket, Piano_brace. Folded functionality into Span_bar
+ - textstyle property for textual scripts.
+ - lookup cleanups (time_signature, text, stem, junked extender, filledbox, simple_bar)
+ - junked obsolete TeX stuff.
+ - ly2dvi-testpage.ly
+ - only make AFMs for feta[0-9]+.mf
+ - using strings for abs loudness.
+
+
+pl 27.jcn2
+ - grand renaming: Duration vs Moment / Rational
+
+pl 27.uu1
+ - extra beam warning
+
+pl 27.jcn1
+ - complete redo of chord and chord name code
+ - small fixes
+
+*************
+pl 27 (feb 3)
+
+pl 26.uu1
+ - make TFMs too.
+ - bf: dynamics. (Don't hang on spanner!)
+ - read TFM before AFM.
+ - fix din-MF stuff (UGH)
+
+pl 26.jcn4
+ - Chord: handle all chord stuff; lots of chord fixes
+ - bf: Chord-name-engraver: find tonic
+ - bf: my-lily-parser: get_chord
+
+
+pl 26.jcn3
+ - bf's: spring spacer end of measure
+ - bf: tie/slur rods (dankje, lieverd)
+ - bf's: intl/ compile, install, uninstall
+
+pl 26.jcn2
+ - enforce {slur,tie}_x_minimum (urg, paper vars?)
+ - tie listens to tieydirection/ydirection
+ - bf: tie placement
+
+pl 26.jcn1
+ - tutorial fixes
+ - bf: OrchestralScore should do hara-kiri..
+ - bf: makeinfo:
+ - info in rpm again
+ - update to yodl pl10, yodl2texinfo fixes
+ - use --force, .info should always be generated
+
+*********
+pl 26 (feb 1, 99)
+
+25.jcn2
+ - bf: staffside axis init
+ - bf: staffmargin stuff.
+ - Timesig C fixes
+
+
+pl 25.uu2
+ - junked Scarlatti clef
+ - fixed clef^8
+ - Interpretation_context_handle is interface to interpretation context
+ - Staff_switching_translator: automatic staff switching for Piano staffs.
+
+pl25.jcn1
+ - volta-spanner: junked dot_p_; not so handy after all: kerning??
+ - feta-nummer: added : ,-.
+ - volta/tuplet thickness
+ - bf: scs-paper
+ - bf: ".|", and bar-thicknesses
+
+pl 25.uu1
+ - bf: default duration is 4
+
+**********
+pl 25
+
+pl 23.ms2
+ - property noteheadStyle
+ - first attempt to make harmonics : see input/test/harmonics.fly
+
+pl 23.ms1
+ - sinfonia.ly: several fixes
+ - dynamics
+ * increased range pppppp to ffffff
+ * added sp, spp, sff, rfz
+ * example see input/test/tchaikovsky.ly
+ * updated dynamics in refman
+
+
+pl 24.jcn2
+ - website fixes
+ - bf's: chords:
+ * reverted c1*2, collides with \times {}
+ * should use: c\breve, c\longa for long chords
+ * addition: c-9, subtraction: c^5
+ * multiple -add, ^sub: c-7+.9-^3.5
+ - bf: lyric chord
+ - bf: lookup text height
+ - bf's: autobeamer
+
+ pl 24.jcn1
+ - bf: rest collisions
+ - separate tfm-reader
+ - bf: :|: should not have thin lines
+
+
+pl 24.mb1
+ - bf: Correct units now used in the .afm files.
+
+******
+
+pl 24, Hacking Apart Together (Jan 25)
+
+pl 23.jcn9
+ - bf's: preludes-* (found a \meter and \transpose c`` there!)
+ - bf: ly2dvi: don't barf on 'linewidth = -1.;'
+ - bf: lily-version
+
+pl 23.jbr1
+ - scripts/ly2dvi.py: Windows 95 shell does not support redivrection
+ of stderr. We now distribute ash and use it when needed.
+ - stepmake/bin/package-zip32.sh: distribute ash, and guild ice-9/
+ directory. We build and distribute manpages in html format instead
+ of text format.
+ - Documentation/ntweb: Updated doco and now distributing as a self
+ extracted binary with install script.
+
+pl 23.hwn4
+ - bugfixes
+ - changed All_font_metrics to do TFM as well.
+ - changed init/ to ly/
+
+pl 23.jcn8
+ - tfm reader; revamped code from fontutils-0.6
+
+pl 23.hwn3
+ - {Bar numbers|staff margin stuff|marks} fixed using
+Bar_script_engraver as base class
+ - bf: PS points != Lily \pt
+ - junked Bar_column_engraver
+ - junked Text_item and some old files.
+
+
+pl 23.jcn7
+ - bf: piano-brace size (veels te simpel: kruis vingers tegen reject)
+ - crude autobeam stuff in mi2mu
+ - brevis, longa chords: c1*2,*4
+ - mutopia/E.Satie/petite-ouverture-a-danser.ly
+ - prop: voltaVisibility
+ - more cello-suite-ii fixes:
+ * nice repeats
+ * removed all beams ifo auto-beamer
+ - bf's: autobeam
+ - junked dur2real; beamAutoEndx now as rational string: "1/2"
+
+pl 23.hwn2
+ - _8 clef
+ - junked #args symtable def.
+ - junked Text_item.
+ - moved Bar assembling into LilyPond
+ - junked symtables reads
+ - Lookup cleanups
+ - junked Symtable from init/table*
+
+pl 23.hwn1
+ - revamped Scarlatti K3-L378
+ - some more doco
+ - use interning/SCM for Scopes
+ - hanging on now works for breakables too.
+
+pl 23.jcn6
+ - chord fixes; notemode chord syntax changed: @c@ @c-7@
+ - fixed cello-suite ii
+ - bf's: auto-beamer; but nasty bug remains: input/bug/auto-beam.ly
+ - bf: extender
+ - (bit ugly) fix for lyric-chords
+ - fixed repeats (dankjewel lieverd)
+ * input/twinkle.ly
+ * input/star*.ly
+
+pl 23.jcn3
+ - succussfully removed []s from wtk1-fugue2.ly
+ - bf + smarter autobeamer
+
+pl 23.jcn2
+ - mi2mu: d-minor: des->cis, g-minor ges->fis
+
+pl 23.mb1
+ - bf: Position and possible SIGSEGV in Mark_engraver
+ - Added padding support in G_staff_side_item
+ - bf: Correct direction of textual scripts.
+ - bf, lookup.cc: Fewer warnings about missing text styles.
+ Same units used in all .afm files.
+
+pl 22.jcn5
+ - auto-beaming v0: input/test/auto-beam.ly
+
+
+
+***********
+
+pl 22.jcn4
+ - bf's: repeat-engraver; \bar "|:", ":|" now deprecated for repeats
+ - bf: :|, |:
+ - property barAlways changed to boolean (0/1)
+ - added boolean property: barAuto
+
+pl 22.jcn3
+ - bf: mmrest
+
+pl 22.jcn2
+ - updated mi2mu
+ - bf: multi-measure-rest (input/test/m.ly)
+ - half fix for staff-margin-engraver
+
+pl 22.jcn1
+ - bf's: cross-staff slur
+ - bf: gnossienne-4
+pl 22.tca1
+ - buxfix, \mudela{ \times 2/3{ ...} } works now
+
+******
+
+pl 22
+ - fixed "already have a Beam" error
+
+pl 21.jcn2
+ - gnossienne: hmm, how to
+ * undisplay bars
+ * don't put 'grace notes' in beam
+ * put separator between "] \translator Staff=x"
+
+pl 21.jcn1
+ - gnossienne-4.ly (start of)
+
+pl 20.jcn2
+ - mutopia fixes; see preludes-1.ly for cross-staff beams and slurs
+ - bf: broken interstaff slur
+ - sm66: check for gmake
+
+*******
+pl 20.jcn1
+ - interstaff slurs v0: preludes-1.ly
+ - warnings for silly interbeam settings
+
+pl 20.hwn1
+ - inclusion of WIP article about LilyPond.
+ - L.Mozart sinfonfia
+ - bf: [c8 [c8 c8]
+
+********
+pl 20
+
+pl 19.jcn5
+ - interstaff beams v0: see beam-interstaff.ly and wtk1-fugue2.ly
+
+pl 19.jcn4
+ - new stem/beam parameters
+ - bf: forced stem shorten
+
+pl 19.jcn3
+ - dehairification of beam code; cleanup and bugfixes
+ * stemlength
+ * forced stem shorten
+ * slope calculation
+ * damping and correction
+ * catch for silly beams: input/test/beam-suspect.ly
+
+pl 19.jcn2
+ - multi-measure-rest is now spanner SkipBars=0 is broken
+
+pl 19.jcn1
+ - hmm, almost centered whole-bar rests -- NOT
+
+********
+pl 18.jcn5
+ - bf: beamtrend
+ - bf: vv-duet
+
+pl 18.mb1
+ - \mark now works, using G_staff_side_item.
+ - Improved layout of multi-bar rests, including a new
+ font symbol.
+
+pl 18.jcn4
+ - beam length adjustments
+ - ugly beamtrend fix: input/test/beam-trend.ly
+
+pl 18.jcn3
+ - bf: (beamed) forced stem shorten
+ - bf: broken slurs and ties; minimal slur/tie length setting ignored
+ - bf: separators on cygwin
+
+pl 18.jcn2
+ - bf: stem-length algorithm
+ - bf: beam direction algorithm
+ - bf's: wtk1-fugue2.ly
+
+pl 18.jcn1
+ - stepmake update
+ - small fixes: spacing.ly, wtk1-fugue2-ly, violino-viola duet.
+
+*******
+pl 18 (jan 4 '99)
+
+pl 17.jbr2
+ - Documentation/README-W32: Brought my stuff up to date
+ - Documentation/ntweb: updated for realease
+ - stepmake/bin/package-zip32.sh: cygwin-b20 changes
+ - scripts/ly2dvi.py: LILYPONDPREFIX fixes
+
+pl 17.jbr1
+ - scripts/ly2dvi.py root is now the shared directory path not the
+ root of the lily installation. Environment variable LILYPONDPREFIX
+ is also the path to shared directory.
+ - lily/main.cc WINNT conditional added to avoid a casting of
+ main_prog
+
+pl 17.hwn1
+ - bfs wtk1-fugue1
+ - spacing tweak: very widely and tightly spaced lines look
+better.
+ - allow Beam settings to be overriden: property
+ stemLeftBeamCount, stemRightBeamCount
+ - junked Assoc, Assoc_iter
+ - junked Graphical_element::{width,height}
+ - junked Plet_swallow_engraver, Plet_engraver
+ - Command_tie_engraver -> Tie_engraver, Command_beam_engraver -> Beam_engraver
+ - naming brew_molecule_p / do_brew_molecule -> output_processing, do_brew_molecule_p
+ - experimental Text_item, Staff_side
+ - junked old Beam_engraver and old Tie_engraver.
+ - AFM administration cleanup.
+ - cache brewed molecules. Speed up ?
+ - rehacked Graphical_element, introduced Dimension_cache
+
+********
+
+pl 17
+pl 16.jcn2
+ - fix: TEMPO 4., well urg, "TEMPO 4 ."
+ - beginning of violino/violoncello (viola) duet
+
+pl 16.jcn1
+ - resurrected po-stuff
+
+*********
+pl 16
+
+pl 15.uu1
+ - dynamic fix.
+ - junked abbrev stuff from parser.
+
+pl15.tca1
+ - fixed verbatim option behaviour for mudela-book.
+ - added mudela-book option intertext="some text"
+ - mudela-book now understand latex \begin{verbatim}
+
+pl 15.jcn1
+ - chord inversion:
+ * enter C/E
+ * display chord names according to boolean property
+ \property Score.chordInversion;
+
+*********
+pl 15
+
+pl 14.hwn1
+ - new beam syntax: { [<c e> <c e>] }, changed in lilypond,
+parser, lilypond (mudela 1.0.14), manual
+ - new tie syntax: { <c e > ~ <c e > } changed in manual,
+parser, lilypond (Mudela 1.0.13)
+
+pl 14.jcn1
+ - bf: get_chord C-m5-
+ - typos: chord-name
+
+pl 14.tca2
+ - move option proccing out of main
+
+**********
+
+pl 14
+
+pl 13.hwn1
+ - tutorial fixes.
+ - junked find-quarts
+ - junked various plet goryness.
+ - preps for <c e> ~ <c e> syntax
+ - bib fixes
+
+pl 12.jcn3
+ - bf's: standchen
+ - added repeat, chord stuff to website
+ - bf: dashed slur
+ - hacks for barlines, dynamics
+
+pl 12.jcn2
+ - bf: package-diff
+ - new chord syntax, again: TONIC [DURATION] ['-' MODIFIERS/ADDITIONS]
+ - shorthand prefix for note-mode: '@', no shorthand for notes in chord
+ mode...
+
+pl 11.jcn6
+ - bf: ly2dvi: better guess LILYPONDPREFIX: <bin>../share/lilypond
+ - chord-table; urg bugs:
+ * note-collisions
+ * accidental-placement
+ - bf: cis m (\textsharpm, urg)
+
+pl 11.jcn5
+ - bib entry, twinkle-pop
+ - bf's: chords
+
+pl 11.jcn4
+
+**********
+pl 13
+ - mutopia stuff (thanks, Peter)
+ - bugfix : \maininput
+
+*********
+
+
+pl 12
+pl 11.jcn3
+ - bf: missing triads
+ - @c @c min (* is taken, <<, <> don't work)
+ - chord-modifiers (urg, "sus" should also subtract 2...)
+
+pl 11.uu3
+ - --safe: security paranoia: disallow untrusted \include,
+disallow untrusted TeX code, disallow named output
+
+pl 11.jcn2
+ - duration with chords + change: @4 c @c7
+
+pl 11.jcn1
+ - minor chord syntax change: *c6 iso @c6;
+
+**********
+
+pl 11
+
+pl9.tca1
+ - included that missing init/mudela-book-defs.py. Added
+ one line to init/GNUMakefile to make .py-files be included.
+ - fragment and nonfragment options to override autodetection
+
+pl 10.jcn1
+ - input/test/chords.ly
+ - \type ChordNames and chord-name-engraver.*
+ - chords mode: \chords { <c e g> @c; @d7; }
+
+pl 10.uu1
+ - scm/ directory. install .scm stuff too.
+ - tuplet bug fixed.
+
+**********
+pl 10
+
+pl 9.jcn3
+ - property: unfoldRepeats; unfolding still broken
+ - volta spanner y-collision
+ - bf: volta number,dot placement
+ - bf's: init/table16,20
+ - small additions to init/lily.scm to enable some testing
+ - junked extra repeat braces
+
+
+pl 9.uu2
+ - bib stuff
+ - removed \output from parser/lexer
+
+pl 9.jcn2
+ - bf/redo: slur.cc, encompass-info: setting of encompass array.
+ - switched tuplet-engaver off (core dumps)
+
+pl 9.jcn1
+ - bf (urg): no |: at start of piece
+ - bf?: text defs without width
+ - alignment absolute dynamics
+ - mutopia/opus-130.ly (excerpt, triggered by GUIDO)
+ - bf: crescendo symbol
+
+
+pl 9.uu1
+ - added faq entry
+ - copertina (thanks Maurizio)
+
+*****************
+pl 9
+ - fixed \relative
+
+pl8.tca1
+ - changes to mudela-book. Junked fragment and floating options,
+ added eps option. Options should not stay as long that you get
+ comfortable with them. ;)
+ - Also possible to define your own commands with
+ a syntax like \mudela{c d e}
+ - updated mudela-book-doc.doc
+
+pl 8.jcn3
+ - website: gnuisation of footers
+
+pl 8.jcn2
+ - input/test/vertical-text.ly: urg ydim of text chords
+ - bf: one set of |: :| volta per staff
+ - bf: init/table* braces + more braces
+ - try at score-volta-bracket
+
+pl 8.jcn1
+ - bf: lyric-engraver: handle multiple requests (don't overwrite)
+ - bf: guile-config
+ - music-list-iterator
+
+pl 8.hwn3
+ - coriolan corno 1
+
+pl 8.hwn2
+ - more output revamping.
+
+pl 8.hwn1
+ - Scheme output stuff
+ - tutorial fixes.
+
+*****************
+pl 8
+
+pl7.jcn3
+ - bf's: spanner/volta
+ - volta-support: via Note, Bar, and Paper-column to Bar (item)
+
+pl7.jcn2
+ - note repeats
+
+pl7.jcn1
+ - configure/guile fixes (still no check for 1.2/1.3)
+
+pl7.hwn1
+ - tutorial fixes
+ - tuplets over beams.
+
+*****************
+pl 7
+
+pl6.jcn5
+ - repeatbars, volta-spanner work, alternative iteration still broken
+ - volta symbol
+
+pl5.szmulewicz2
+ - more GUILE stuff.
+ - tutorial doco updates
+
+pl6.jcn4
+ - volta-spanner
+ - repeat-engraver
+ - repeat/alternative music layout (hehe)
+
+pl6.uu1
+ - Doco of music iterators.
+
+********
+pl 6
+
+pl5.szmulewicz1
+ - rtti stuff
+ - bf's: lily.scm
+
+pl5.mb1
+ - bf: array.hh, don't make copy if resized to the same size
+ - bf: feta.tex
+
+pl5.jcn4
+ - scm additions: plet, hairpin
+ - website fixes
+
+pl5.jcn3
+ - website fixes
+
+pl5.jcn2
+ - extender-*, see input/test/extender.ly
+ - bf: half-beam length (urg)
+ - fixes: standchen, star
+
+pl5.jcn1
+ - tex/lily-ps-defs.tex fixes
+ - lily.ps
+
+pl 5.hwn1
+ - Tuplet_engraver
+ - lily.ps fix.
+ - junked MY_RTTI stuff, simpler VIRTUAL_COPY_CONS
+
+********
+1.1.5
+
+pl4.jcn4
+ - fixes; preludes, finger
+
+pl4.jcn3
+ - bf: text staff vertical align; see input/test/vertical-text.ly
+ - urg, scaled cmr8 by factor 4/5
+ - apart from end/begin of measure spacing urgs, stars-and-stripes.ly
+ is rather cool
+
+pl4.jcn2
+ - read (cmrxx)afm for text char widths
+ - tfmtoafm.sh (quite urg)
+ - alphabet.ly
+
+pl 4.uu1
+ - read .scm files. No need for GUILE_LOAD_PATH
+ - .ps hack. No need for lily.ps on the printer
+
+ (&$^@M&@^$@^&$@ Damn TeX)
+
+
+ - bf: mudela-book -> \default_paper is obsolete.
+
+pl 3.ms1
+ - thumb-upgrade
+
+pl4.jcn1
+ - bf: dotted slur
+ - bf: text ssb
+ - bf: empty/unknown in ps
+
+pl 4.tca1
+ - 40% speedup executing mudela-book on mudela-book-doc.doc
+ - change of lilypond's output filenames. Given multiple input
+ files, eg. 'm.ly y.ly', output names will now be 'm.tex y.tex'
+ not 'm.tex y-1.tex', but if m.ly containts two paper definitions
+ output will be 'm.tex m-1.tex y.tex'
+
+*******
+1.1.4
+
+pl 3.tca1
+ - accordion symbols in mf/feta-accordion.mf and
+ init/accordion-defs.ly.
+ - small changes to mudela-book and Documentation/man/mudela-book.yo
+ - mudela-book example file in Documentation/tex/mudela-book-doc.doc
+
+pl 3.jcn5
+ - bf: dashed-slur
+ - bf: LilyIdString
+ - more star fixes
+ - repeatbar fixes
+
+pl 3.jcn3
+ - mup-to-ly.py: version 0.0
+ - init/test/stars-and-stripes.ly (from star.mup)
+ - GrandStaffContext
+
+pl 3.hwn1
+ - junked musical info from key-item
+ - tutorial fixes.
+
+pl 3.jcn2
+ - bf: font switch
+
+******
+1.1.3
+
+pl 2.jcn2
+
+pl 2.uu1
+ - ly2dvi.py -I fix
+ - obsoleted ly2dvi.sh
+ - removed Note_head_engraver
+
+pl 2.hwn1
+ - scm cleanups, chop-decimal
+ - scarlatti clef.
+
+pl 2.jcn1
+ - commented-out Level-2 PostScript in lily.ps (J. Buehler)
+ - moved tex/*.ps to ps/
+ - merged lilyponddefs.ps, lily-ps-defs: tex/lily.ps
+ - be sure to set:
+ export GS_LIB=$HOME/usr/src/lilypond/ps
+ - added tex and empty ps-symbols
+
+pl 1.jcn4
+ - more little website fixes
+
+********
+
+pl 2
+
+pl 1.mb1
+ - Support for cautionary accidentals. , i.e. accidentals
+ within parantheses. Syntax: 'cis?'. Try input/test/accid.fly
+ Note that the font has changed.
+ - bf: No unnecessary warnings about time signatures
+ - Added optional second argument of \key. Set to \major or \minor
+ to get a major or minor key. Default: major.
+ - bf: Compilation error in midi-walker.cc
+
+pl 1.jcn2
+ - fixes for htmldoc, website
+ - silly jcn1 fixes
+ - junked MODULE stuff from lily/GNUmakefile (again)
+
+pl 0.jcn4
+ -set:
+ export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init
+ - dstream: Score_element, Column_info
+ - -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a
+ - init/lily.scm
+
+
+********
+
+pl 1
+pl 0.uu5
+ - fixed MIDI output.
+
+pl 0.jcn3
+ - dropped stepmake/aclocal.m4
+ - removed silly -lguile (BLA_LIBS, EXTRA_LIBS ??)
+ - added debugging output format: -fscm
+ - ly2dvi.py -I fix
+ - Documentation/tex/feta.tex
+ - doco fixes: PATCHES.yo, yodl-1.31.7
+
+pl 0.uu4
+ - Protected_scm to fixup GUILE gc
+
+pl 0.uu3
+ - more RTTI cleaning.
+
+pl 0.uu2
+ - undone type_info::before hack. (Ugh. RTFM).
+
+pl 0.uu1
+ - more RTTI stuff: is_type_b -> type_info::before
+
+pl 0.jcn1
+pl 17.jcn7
+ - added: set*text, timesig, beam
+ - guile-1.3 is fine; my egcs-1.0.2's -O2 is broken
+pl 17.jbr1
+ - stepmake/stepmake/bin/package-zip32.sh: Updated configure statement
+ and modified win32 specific distribution file names to match
+ pl 16.hwn1 changes.
+ - scripts/ly2dvi.py: Modified search paths to match the new lilypond
+ installation tree.
+ - scripts/convert-mudela.py: Remove the an existing backup file
+ before renaming original. This is a WINDOWS32 Python requirement.
+ - Documentation/ntweb/index.html: Updated documentation to match
+ new lilypond installation tree.
+ - lily/main.cc: Fixed LILYPONDPREFIX search paths.
+
+
+
+**********
+
+1.1.0
+
+pl 18.exp
+ - use C++ RTTI iso access_Xxx ()
+ - junk Graphical_lisp_element
+ - catalan.ly
+
+pl 17.tca1
+ - rewrite of mudela-book
+
+pl 17.ms1
+ - added \thumb (used very often in cello music) in
+ mf/feta-schrift.mf.
+ - added /input/test/thumb.ly (example)
+
+pl 16.jcn1
+ - dashed-slur through scheme
+
+pl 15.jcn4
+ - more scheme hacks
+
+pl 15.jcn3
+ - try at scheme in Atom
+
+pl 15.jcn2 # rest of
+ - graphical-lisp-element + silly half hook-up with autuplet
+
+pl 17.jcn5
+ - stepmake pl59: templatised install (see mf/)
+ - reasonably ps/tex success (with guile-1.2):
+ * input/kortjakje.ly
+ - lots more scm stuff
+ - bf: mf/mfplain.ini
+ - stepmake pl58: guile 1.3 configure fix
+ - working font-switch:
+ guile-1.2 and -lreadline -ldl from 1.3 configure...
+
+pl 17.jcn4
+ - installable stepmake pl57
+ - urg, FIXME guile-1.3:
+ * don't install shared libs! configure can't handle
+ * manually add: EXTRA_LIBS = -lguile -lreadline -ldl
+ * lily's truely broken, downgrade do 1.2
+
+pl 17.jcn3
+ - lots of stuff still broken, notably font selection, just try
+ a()b
+ or so
+ - tex output support
+ - all output through scheme
+ - option: f, output-format=X
+ - geile placebox
+ - mf/mfplain.ini
+
+pl 17.jcn2
+ - all paper output through scheme, about half way
+
+pl 17.jcn1
+ - 16.jcn1
+
--- /dev/null
+depth = ../..
+
+NAME = documentation
+
+STEPMAKE_TEMPLATES=documentation texinfo
+
+TEXTS =AIMS $(wildcard CHANGES-*) $(wildcard ANNOUNCE-*) $(wildcard NEWS-*) interview
+EXTRA_DIST_FILES = $(TEXTS)
+
+
+include $(depth)/make/stepmake.make
+
+default: do-doc
+
+local-WWW: $(addprefix $(outdir)/, $(addsuffix .txt, $(TEXTS)))
+
+copy-for-me:
+ $(foreach a, $(README_TOP_FILES),cp ../$(a) $(outdir)/$(a).txt && ) true
+
+$(outdir)/%.txt: %
+ cp $< $@
--- /dev/null
+WHAT'S NEW SINCE 1.0.17
+
+* Large cleanups, enhanced design and GUILE integration for smaller
+ memory footprint and more flexible code.
+
+* Direct output to PostScript (optional), PDFTeX or as GUILE script
+ (default output still to plain TeX).
+
+* Convertors for ABC and MUP formats.
+
+* Font: now available as scalable PostScript. New glyphs: time
+ signature, more note heads.
+
+* Enhanced input: semi-automatic beaming, (nested) tuplets, (nested)
+ repeats, chordnames, automatic Lyrics durations.
+
+* Grace notes, volta brackets, multiple styles for note heads and
+ time signatures, breathing signs, lyric extenders, cross staff
+ beaming and slurring.
+
+* --safe option for the paranoid.
+
+* More elegant spacing. Text is spaced exactly.
+
+* Lots of bugfixes.
--- /dev/null
+WHAT'S NEW SINCE 1.0.17
+
+* Large cleanups, enhanced design and GUILE integration for smaller
+ memory footprint and more flexible code.
+
+* Direct output to PostScript (optional), PDFTeX or as GUILE script
+ (default output still to plain TeX).
+
+* Convertors for ABC and MUP formats.
+
+* Font: now available as scalable PostScript. New glyphs: time
+ signature, more note heads.
+
+* Enhanced input: semi-automatic beaming, (nested) tuplets, (nested)
+ repeats, chordnames, automatic Lyrics durations.
+
+* Grace notes, volta brackets, multiple styles for note heads and
+ time signatures, breathing signs, lyric extenders, cross staff
+ beaming and slurring.
+
+* --safe option for the paranoid.
+
+* More elegant spacing. Text is spaced exactly.
+
+* Lots of bugfixes.
--- /dev/null
+\input texinfo @c -*-texinfo-*-
+@setfilename index.info
+@settitle index
+
+@node Top, , , (dir)
+@top
+
+Miscellaneous texts
+@itemize
+@item @uref{CHANGES-0.0.txt, Change logs from 0.0 till 0.1 }
+@item @uref{CHANGES-0.1.txt, Change logs from 0.1 till 1.0 }
+@item @uref{CHANGES-1.0.txt, Change logs from 1.0 till 1.1 }
+@item @uref{CHANGES-1.1.txt, Change logs from 1.1 till 1.2 }
+@item @uref{NEWS-1.2.txt, summary of changes from 1.1 till 1.2 }
+@item @uref{ANNOUNCE-0.1.txt, Announcement of 0.1 (includes summary of
+changes)}
+@item @uref{ANNOUNCE-1.0.txt, Announcement of 1.0 (includes summary of
+changes)}
+@item @uref{ANNOUNCE-1.2.txt, Announcement of 1.2 (includes summary of changes)}
+
+@item @uref{AIMS.txt}
+@end itemize
+
--- /dev/null
+(Oct / 99)
+
+* What is it?
+
+In short, LilyPond does for sheet music what (La)TeX does for printed
+text: the input describes the music you want printed, the program
+processes the input like a compiler, and the output file contains
+printed music.
+
+* Who would use it?
+
+People who want beautifully printed music, but don't have time to
+learn intricacies of music notation.
+
+ * Why would they use it instead of similar projects?
+
+Within the free software movement, LilyPond is unique: free music
+notation software is very scarce, and is either difficult to use,
+clumsy or does not give pretty results.
+
+ * Special features/strengths?
+
+Just like LaTeX, the input format is very abstract, and the output is
+very elegant. Additionally, most aspects of the formatting can be
+adjusted to taste.
+
+LilyPond also allows very easy integration with TeX: you can write a
+paper that mixes fragments of notation with LaTeX.
+
+* Special problems?
+
+Music notation is very complicated. It is much more difficult than
+typesetting mathematics which is TeX's forte. Almost everything in
+music notation is a "Special problem".
+
+Generally, the more modern the music is, the more problems it
+contains: classical and baroque music like Mozart and Bach should pose
+no problems for LilyPond. Romantic music like Brahms and Schumann will
+get printed but with some formatting errors. Twentieth century music
+like Schoenberg and Bartok can be very difficult to typeset.
+
+Luckily for most, Pop-music is relatively uncomplicated: it should not
+be a problem to print that kind of music.
+
+* Who is working on it?
+
+Jan Nieuwenhuizen and me (Han-Wen Nienhuys) have written most of the
+core of the program, but the most elaborate example in the
+distribution (a 40 page orchestral score) was contributed by one of
+our long-time users. He is a member of a small band of developers
+that contribute small patches.
+
+ * Plans for the close and distant future?
+
+The most concrete development plan for now is to use GUILE much more
+pervasively: LilyPond started out as a C++ program, with lots of
+formatting rules that were hard-wired into the system. We want to
+express those rules in Scheme, so that they can be changed at
+run-time.
+
+A much more interesting development is The Mutopia Project: it is a
+website where you can download sheet music that has passed into the
+public domain. Just think of Project Gutenberg, but then for sheet
+music. We hope that in the future you can just point your browser to
+Mutopia if you need classical music.
+
+The Mutopia website has not gone live yet, but you can preview some
+scores at http://sca.uwaterloo.ca/Mutopia/. What we need now is lots
+of help with entering sheet music. If you like classical music, come
+out and help us!
+
+
+
+ * Interesting/fun stories that might juice up the story?
+
+Jan Nieuwenhuizen and me have been best friends for a some four years
+now. LilyPond development catalyses our friendship, and our friendship
+catalyses LilyPond development. We call each other a few times a week
+to discuss development, and the most revolutionary improvements in
+Lily have often been the result of a long nights of discussions on
+software design over glasses of Whisky
+
+Another question that pops up in outsiders is: ``what do aquatic
+flowers have to do with music typography? Why the weird name?''
+
+I started Lily (our affectionate name for LilyPond) three years
+ago. Back then, I was in an amateur symphonic orchestra together with
+Jan. I had a crush on this magnificent girl in the orchestra: her
+name was Suzanne, she played both the flute and the cello, and (of
+course) I thought she was very pretty.
+
+At the time, Jan was dating Roos (Dutch for `Rose' -- she also played
+the cello). I also knew about about a package Rosegarden (a GUI MIDI
+sequencer and notation editor). When I found out that `Susan' is
+Hebrew for `lily', I decided that calling the package `LilyPond' would
+match make the nomenclature of the rest of my life perfectly.
+
+Some things don't last---the two girls, the cellos and the orchestra,
+all have disappeared from our lives. LilyPond however has survived
+over time. It is a big, mature program with a healthy user-base and
+good prospects. Best of all is, that we still have a good time
+hacking on it
+
+
+* License?!
+
+GPL, of course.
+
\include "paper16.ly"
melody = \notes \relative c' {
\partial 8;
+ \key c \minor;
g8 |
c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
c4 c8 d [es () d] c4 | d4 es8 d c4.
construct the music within the score block.
@example
-
\partial 8;
-
@end example
-The piece starts with an anacrusis of one eighth. @example
+The piece starts with an anacrusis of one eighth.
+@example
+ \key c \minor
+@end example
+The key is C minor: we have three flats.
+
+
+@example
c4 c8 d [es () d] c4 | f4 f8 g [es() d] c g |
c4 c8 d [es () d] c4 | d4 es8 d c4.
* Documentation now all is in texinfo.
-WHAT'S NEW SINCE 1.0.17
-
-* Large cleanups, enhanced design and GUILE integration for smaller
- memory footprint and more flexible code.
-
-* Direct output to PostScript (optional), PDFTeX or as GUILE script
- (default output still to plain TeX).
-
-* Convertors for ABC and MUP formats.
-
-* Font: now available as scalable PostScript. New glyphs: time
- signature, more note heads.
-
-* Enhanced input: semi-automatic beaming, (nested) tuplets, (nested)
- repeats, chordnames, automatic Lyrics durations.
-
-* Grace notes, volta brackets, multiple styles for note heads and
- time signatures, breathing signs, lyric extenders, cross staff
- beaming and slurring.
-
-* --safe option for the paranoid.
-
-* More elegant spacing. Text is spaced exactly.
-
-* Lots of bugfixes.
#!/bin/csh
# env. vars for the C-shell.
-
# set environment for LilyPond. To be installed in /etc/profile.d/
-setenv GS_LIB "@datadir@/ps"
+
setenv GS_FONTPATH "@datadir@/afm"
+
# bit silly. for ly2dvi, overrules compiled-in datadir...
setenv LILYPONDPREFIX "@datadir@"
else
setenv TEXINPUTS "/usr/share/lilypond/tex::"
endif
-if ($?GUILE_LOAD_PATH) then
- setenv GUILE_LOAD_PATH "/usr/share/lilypond/scm:${GUILE_LOAD_PATH}"
-else
- setenv GUILE_LOAD_PATH "/usr/share/lilypond/scm"
-endif
# set environment for LilyPond. To be installed in /etc/profile.d/
-GS_LIB="@datadir@/ps"
GS_FONTPATH="@datadir@/afm:@datadir@/pfa"
# bit silly. for ly2dvi, overrules compiled-in datadir...
MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"}
TEXINPUTS="@datadir@/tex:@datadir@/ps:"${TEXINPUTS:=":"}
-GUILE_LOAD_PATH="@datadir@/scm:$GUILE_LOAD_PATH"
-
-export GUILE_LOAD_PATH LILYINCLUDE LILYPONDPREFIX MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
+export LILYINCLUDE LILYPONDPREFIX MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
-# echo $LILYINCLUDE $MFINPUTS $TEXINPUTS $GS_LIB $GS_FONTPATH
Array<void*>::empty;
Array<void*>::reverse;
Array<void*>::tighten_maxsize;
+
+ T *& boundary (int d, int i)
+ {
+ assert (d);
+ if (d == 1)
+ return top (i);
+ else
+ return elem_ref (i);
+ }
+ T * boundary (int d, int i)const
+ {
+ assert (d);
+ if (d == 1)
+ return top (i);
+ else
+ return elem_ref (i);
+ }
+
+
T ** access_array () const
{
return (T**) Array<void*>::access_array();
\paper {
\translator{
\StaffContext
-
- % other core dump when this is removed?
- \remove "Time_signature_engraver";
}
}
}
\GrandStaffContext
\accepts "Lyrics";
}
-% castingalgorithm = \Wordwrap;
+ \translator {
+ \LyricsContext
+ \consists "Bar_engraver";
+ }
}
\midi {}
}
-\version "1.2.0";
+\version "1.2.14";
--- /dev/null
+
+
+
+\score{
+ \notes\context Voice{
+ \emptyText
+ c1 c1^"no break after 2nd note" \nobreak c1 c1
+
+ c1^"break after this" \break c1 c1
+ }
+ \paper { linewidth = 4.0\cm;}
+}
--- /dev/null
+
+\score {
+
+ \context StaffGroup <
+ \notes \context Staff { b1 b1 \bar "|."; }
+ \lyrics\context Lyrics <
+ \context BarLV { thisContextHasBarEngraver1 added }
+ \context LyricVoice { this4 one has no barEngraverAddedToContext1 }
+ >
+ \notes \context Staff = SB { b1 b1 }
+
+ >
+
+ \paper {
+ linewidth = -1.0\cm;
+ \translator {
+ \LyricsContext
+ \consists "Bar_engraver";
+ \accepts "BarLV";
+ }
+ \translator {
+ \LyricsVoiceContext
+ \consists "Bar_engraver";
+ \name "BarLV";
+ }
+ \translator {
+ \LyricsVoiceContext
+ }
+ }
+}
*/
if ((*stem_l_arr_p_)[i]->beam_l_)
{
- delete beam_p;
return 0;
}
beam_p->add_stem ((*stem_l_arr_p_)[i]);
(c) 1997, 1998, 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
*/
+
#include "score-engraver.hh"
#include "bar-engraver.hh"
#include "staff-bar.hh"
#include "musical-request.hh"
#include "multi-measure-rest.hh"
#include "command-request.hh"
-#include "time-description.hh"
+#include "timing-engraver.hh"
#include "engraver-group-engraver.hh"
#include "warn.hh"
do_post_move_processing();
}
-bool
-Bar_engraver::do_try_music (Music*r_l)
-{
- if (Bar_req * b= dynamic_cast <Bar_req *> (r_l))
- {
- if (bar_req_l_ && bar_req_l_->equal_b (b)) // huh?
- return false;
-
- bar_req_l_ = b;
- return true;
- }
-
- return false;
-}
bar_p_->set_elt_property (bar_size_scm_sym,
gh_double2scm (Real(prop)));
}
- announce_element (Score_element_info (bar_p_, bar_req_l_));
+ announce_element (Score_element_info (bar_p_, 0));
}
}
void
Bar_engraver::do_creation_processing ()
{
- create_bar ();
- bar_p_->type_str_ = "";
}
void
void
Bar_engraver::do_process_requests()
{
- Time_description const *time = get_staff_info().time_C_;
- if (bar_req_l_)
- {
- create_bar ();
- bar_p_->type_str_ = bar_req_l_->type_str_;
- }
- else if (!now_mom ())
- {
- create_bar ();
- bar_p_->type_str_ = "|";
- }
- else
+ Translator * t = daddy_grav_l ()->get_simple_translator ("Timing_engraver");
+
+ Timing_engraver * te = dynamic_cast<Timing_engraver*>(t);
+ String which = (te) ? te->which_bar () : "";
+
+ if (which.length_i ())
{
- Scalar nonauto = get_property ("barNonAuto", 0);
- if (!nonauto.to_bool ())
- {
- Scalar always = get_property ("barAlways", 0);
- if ((time && !time->whole_in_measure_) || always.to_bool ())
- create_bar ();
- }
+ create_bar();
+ bar_p_->type_str_ = which;
}
if (!bar_p_)
}
}
-void
-Bar_engraver::do_post_move_processing()
-{
- bar_req_l_ = 0;
-}
-
-
-
ADD_THIS_TRANSLATOR(Bar_engraver);
--- /dev/null
+/*
+ bar-req-collect-engraver.cc -- implement Bar_req_collect_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#include "command-request.hh"
+
break;
}
}
- if (remove_elt_property (at_line_start_scm_sym)!= SCM_BOOL_F
+ if (remove_elt_property (at_line_start_scm_sym) != SCM_BOOL_F // UGR.
&& (break_status_dir () == RIGHT) && (type_str_ == ""))
{
type_str_ = "|";
prop = get_property ("autoInterstaffKneeGap", 0);
if (prop.isnum_b ())
beam_p_->set_elt_property (auto_interstaff_knee_gap_scm_sym, gh_int2scm( prop));
-
+
prop = get_property ("beamquantisation", 0);
if (prop.isnum_b ())
beam_p_->quantisation_ = (Beam::Quantisation)(int)prop;
[Ross] states that the majority of the notes dictates the
direction (and not the mean of "center distance")
- But is that because it really looks better, or because he
- wants to provide some real simple hands-on rules.
+ But is that because it really looks better, or because he wants
+ to provide some real simple hands-on rules?
We have our doubts, so we simply provide all sensible alternatives.
- If dir is not determined: up (see stem::get_default_dir ())
- */
+ If dir is not determined: up (see stem::get_default_dir ()) */
Direction beam_dir;
Direction neutral_dir = (Direction)(int)paper_l ()->get_var ("stem_default_neutral_direction");
Beam::solve_slope ()
{
assert (sinfo_.size () > 1);
- DEBUG_OUT << "Beam::solve_slope: \n";
Least_squares l;
for (int i=0; i < sinfo_.size (); i++)
{
Real interbeam_f = paper_l ()->interbeam_f (multiple_i_);
- Real beam_f = paper_l ()->beam_thickness_f ();
- Real staffline_f = paper_l ()->rule_thickness ();
+ Real beam_f = paper_l ()->get_realvar (beam_thickness_scm_sym);;
+ Real staffline_f = paper_l ()-> get_var ("stafflinethickness");
Real epsilon_f = staffline_f / 8;
Real dy_f = 0.0;
for (int i=0; i < sinfo_.size (); i++)
Real interline_f = stems_[0]->staff_line_leading_f ();
Real internote_f = interline_f / 2;
- Real staffline_f = paper_l ()->rule_thickness ();
- Real beam_f = paper_l ()->beam_thickness_f ();
+ Real staffline_f = paper_l ()->get_var ("stafflinethickness");
+ Real beam_f = paper_l ()->get_realvar (beam_thickness_scm_sym);;
Real dx_f = stems_.top ()->hpos_f () - stems_[0]->hpos_f ();
slope_f_ = (quanty_f / dx_f) / internote_f * sign (slope_f_);
}
-static int test_pos = 0;
-
-
/*
Prevent interference from stafflines and beams. See Documentation/tex/fonts.doc
if extend_b then stems must *not* get shorter
*/
- if (quantisation_ <= NONE)
+ if (quantisation_ == NONE)
return;
/*
Real space = stems_[0]->staff_line_leading_f ();
Real internote_f = space /2;
- Real staffline_f = paper_l ()->rule_thickness ();
- Real beam_f = paper_l ()->beam_thickness_f ();
+ Real staffline_f = paper_l ()->get_var ("stafflinethickness");
+ Real beam_f = paper_l ()->get_realvar (beam_thickness_scm_sym);;
/*
[TODO]
Real straddle = 0;
Real sit = beam_f / 2 - staffline_f / 2;
- Real inter = space / 2;
Real hang = space - beam_f / 2 + staffline_f / 2;
/*
For simplicity, we'll assume dir = UP and correct if
dir = DOWN afterwards.
*/
-
+ // isn't this asymmetric ? --hwn
+
// dim(left_y_) = internote
Real dy_f = dir_ * left_y_ * internote_f;
Real beamdy_f = beamdx_f * slope_f_ * internote_f;
Array<Real> allowed_position;
- if (quantisation_ != TEST)
+ if (quantisation_ <= NORMAL)
{
- if (quantisation_ <= NORMAL)
- {
- if ((multiple_i_ <= 2) || (abs (beamdy_f) >= staffline_f / 2))
- allowed_position.push (straddle);
- if ((multiple_i_ <= 1) || (abs (beamdy_f) >= staffline_f / 2))
- allowed_position.push (sit);
- allowed_position.push (hang);
- }
- else
- // TODO: check and fix TRADITIONAL
- {
- if ((multiple_i_ <= 2) || (abs (beamdy_f) >= staffline_f / 2))
- allowed_position.push (straddle);
- if ((multiple_i_ <= 1) && (beamdy_f <= staffline_f / 2))
- allowed_position.push (sit);
- if (beamdy_f >= -staffline_f / 2)
- allowed_position.push (hang);
- }
+ if ((multiple_i_ <= 2) || (abs (beamdy_f) >= staffline_f / 2))
+ allowed_position.push (straddle);
+ if ((multiple_i_ <= 1) || (abs (beamdy_f) >= staffline_f / 2))
+ allowed_position.push (sit);
+ allowed_position.push (hang);
}
else
+ // TODO: check and fix TRADITIONAL
{
- if (test_pos == 0)
- {
- allowed_position.push (hang);
- cout << "hang" << hang << "\n";
- }
- else if (test_pos==1)
- {
+ if ((multiple_i_ <= 2) || (abs (beamdy_f) >= staffline_f / 2))
allowed_position.push (straddle);
- cout << "straddle" << straddle << endl;
- }
- else if (test_pos==2)
- {
+ if ((multiple_i_ <= 1) && (beamdy_f <= staffline_f / 2))
allowed_position.push (sit);
- cout << "sit" << sit << endl;
- }
- else if (test_pos==3)
- {
- allowed_position.push (inter);
- cout << "inter" << inter << endl;
- }
+ if (beamdy_f >= -staffline_f / 2)
+ allowed_position.push (hang);
}
+
Interval iv = quantise_iv (allowed_position, space, dy_f);
Real quanty_f = dy_f - iv[SMALLER] <= iv[BIGGER] - dy_f ? iv[SMALLER] : iv[BIGGER];
void
Beam::set_stemlens ()
{
- Real staffline_f = paper_l ()->rule_thickness ();
+ Real staffline_f = paper_l ()->get_var ("stafflinethickness");
// enge floots
Real epsilon_f = staffline_f / 8;
// je bent zelf eng --hwn.
Real dy_f = check_stemlengths_f (false);
- for (int i = 0; i < 2; i++)
+ for (int i = 0; i < 2; i++) // 2 ?
{
left_y_ += dy_f * dir_;
quantise_left_y (dy_f);
break;
}
}
-
- test_pos++;
- test_pos %= 4;
}
void
/*
beams to go with one stem.
+
+ clean me up.
*/
Molecule
Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
(prev && !(prev->hpos_f () < here->hpos_f ())))
programming_error ("Beams are not left-to-right");
- Real staffline_f = paper_l ()->rule_thickness ();
+ Real staffline_f = paper_l ()->get_var ("stafflinethickness");
Real interbeam_f = paper_l ()->interbeam_f (multiple_i_);
Real internote_f = here->staff_line_leading_f ()/2;
- Real beam_f = paper_l ()->beam_thickness_f ();
+ Real beam_f = paper_l ()->get_realvar (beam_thickness_scm_sym);;
Real dy = interbeam_f;
Real stemdx = staffline_f;
Real sl = slope_f_* internote_f;
- lookup_l ()->beam (sl, 20 PT, 1 PT);
Molecule leftbeams;
Molecule rightbeams;
else if (here->type_i ()== 1)
nw_f = paper_l ()->get_var ("wholewidth");
else if (here->type_i () == 2)
- nw_f = paper_l ()->note_width () * 0.8;
+ nw_f = paper_l ()->get_var ("notewidth") * 0.8;
else
nw_f = paper_l ()->get_var ("quartwidth");
/*
- UGH. Clean up debugging junk.
+ UGH. Remove debugging junk.
*/
{
transform ();
calc_default (height);
-
calc_bezier ();
Real dy = check_fit_f ();
if (all[i]->breakable_b ())
retval.push (i);
- if (linelength <=0)
+ if (linewidth_f_ <=0)
while (retval.size () >2)
retval.del (1);
if (all[i]->breakable_b ())
retval.push (all[i]);
- if (linelength <=0)
+ if (linewidth_f_ <=0)
while (retval.size () >2)
retval.del (1);
Break_algorithm::Break_algorithm ()
{
pscore_l_ = 0;
- linelength = 0;
+ linewidth_f_ = 0;
}
void
Break_algorithm::set_pscore (Paper_score*s)
{
pscore_l_ = s;
- linelength = s->paper_l_->linewidth_f ();
+ linewidth_f_ = s->paper_l_->get_var("linewidth");
do_set_pscore ();
}
-bool
-Break_algorithm::feasible (Line_of_cols curline) const
-{
- if (linelength <= 0)
- return true;
- for (int i=0; i < curline.size (); i++)
- {
- if (i && i < curline.size () -1
- && ((dynamic_cast<Score_column*>(curline[i]))->break_penalty_i () >= Break_req::FORCE))
- return false;
- }
- return true;
-}
void
Break_algorithm::problem_OK () const
}
-
-
Break_align_item::Break_align_item ()
{
stacking_dir_ = RIGHT;
Array<Shift_tup> hand (forced_shift ());
Link_array<Note_column> done;
- Real wid = paper_l ()->note_width ();
+ Real wid = paper_l ()->get_var ("collision_note_width");
for (int i=0; i < hand.size (); i++)
{
hand[i].e1_->translate_axis (hand[i].e2_ *wid, X_AXIS);
*/
#include "column-x-positions.hh"
-#include "simple-spacer.hh" // ugh
#include "real.hh"
#include "debug.hh"
{
energy_f_ = infinity_f;
satisfies_constraints_b_ = false;
- spacer_l_ =0;
}
Column_x_positions::~Column_x_positions()
}
-void
-Column_x_positions::add_paper_column (Paper_column*c)
-{
- cols_.push (c);
-}
void
Column_x_positions::print() const
Break_req::Break_req ()
{
- penalty_i_ = 0;
}
Mark_req::Mark_req (String s)
bool continued = broken[Direction (-grow_dir_)];
- Real height = paper_l()->staffheight_f () / 6;
+ Real height = paper_l()->get_var ("crescendo_height");
Real thick = paper_l ()->get_var ("crescendo_thickness");
return Molecule (lookup_l ()->hairpin (w_dim, height, thick, grow_dir_ < 0, continued));
--- /dev/null
+#include "cross-staff.hh"
+#include "item.hh"
+#include "align-element.hh"
+#include "spanner.hh"
+#include "warn.hh"
+
+Real
+calc_interstaff_dist (Item const *item, Spanner const *span)
+{
+ Real interstaff = 0.0;
+ Graphical_element *common = item->common_refpoint (span, Y_AXIS);
+ Align_element * align = dynamic_cast<Align_element*> (common);
+ if (align && align->axis() == Y_AXIS)
+ {
+ if (align->threshold_interval_[MIN] !=
+ align->threshold_interval_[MAX])
+ warning (_ ("minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken"));
+
+ interstaff = align->threshold_interval_[MIN];
+
+ Graphical_element const * span_refpoint = span;
+ while (span_refpoint->parent_l (Y_AXIS) != common)
+ span_refpoint = span_refpoint->parent_l (Y_AXIS);
+
+ Graphical_element const * note_refpoint = item;
+ while (note_refpoint->parent_l (Y_AXIS) != common)
+ note_refpoint = note_refpoint->parent_l (Y_AXIS);
+
+ int span_prio =
+ align->get_priority ((Score_element*) dynamic_cast<Score_element const*> (span_refpoint));
+ int item_prio =
+ align->get_priority ((Score_element*) dynamic_cast<Score_element const *> (note_refpoint));
+
+ /*
+ our staff is lower -> interstaff *= -1
+ */
+
+ if (span_prio < item_prio)
+ interstaff *= -1;
+ return interstaff;
+ }
+ else return 0.0;
+}
+
#include "engraver-group-engraver.hh"
#include "debug.hh"
#include "paper-def.hh"
+#include "score-element.hh"
void
Engraver::fill_staff_info (Staff_info&)
Extender_spanner::do_post_processing ()
{
// UGH
- Real nw_f = paper_l ()->note_width () * 0.8;
+ Real gap = paper_l ()->get_realvar (interline_scm_sym);
Direction d = LEFT;
do
if (d == LEFT)
dx_f_drul_[d] += t->extent (X_AXIS).length ();
else
- dx_f_drul_[d] -= d * nw_f / 2;
+ dx_f_drul_[d] -= d * gap / 2;
}
while (flip(&d) != LEFT);
}
*/
int minimal_start_idx = -1;
Column_x_positions minimal_sol;
+ Column_x_positions backup_sol;
+
Real minimal_demerits = infinity_f;
for (int start_idx = break_idx; start_idx--;)
{
-#if 0
- if (break_idx - start_idx > max_measures_i_)
- break;
-#endif
-
- if (optimal_paths[start_idx].prev_break_i_ < 0
- && optimal_paths[start_idx].line_config_.energy_f_)
- continue;
-
-
-
Line_of_cols line = all.slice (breaks[start_idx], breaks[break_idx]+1);
line[0] = dynamic_cast<Paper_column*>(line[0]->find_broken_piece (RIGHT));
line.top () = dynamic_cast<Paper_column*>(line.top ()->find_broken_piece (LEFT));
- if (!feasible (line))
- break;
-
Column_x_positions cp;
cp.cols_ = line;
Simple_spacer * sp = generate_spacing_problem (line, line_dims);
sp->solve (&cp);
delete sp;
-
+
+ if (start_idx == break_idx - 1)
+ backup_sol = cp; // in case everything fucks up
if (!cp.satisfies_constraints_b_)
break;
- Real this_demerits
- = combine_demerits (optimal_paths[start_idx].line_config_, cp)
- + optimal_paths[start_idx].demerits_f_;
+
+ Real this_demerits;
+ if (optimal_paths[start_idx].demerits_f_ >= infinity_f)
+ this_demerits = infinity_f;
+ else
+ this_demerits = combine_demerits (optimal_paths[start_idx].line_config_, cp)
+ + optimal_paths[start_idx].demerits_f_;
if (this_demerits < minimal_demerits)
{
}
}
+ int prev =break_idx - 1;
if (minimal_start_idx < 0)
{
- optimal_paths[break_idx].prev_break_i_ = -1;
- optimal_paths[break_idx].line_config_.energy_f_ = infinity_f;
+ optimal_paths[break_idx].demerits_f_ = infinity_f;
+ optimal_paths[break_idx].line_config_ = backup_sol;
}
else
{
- optimal_paths[break_idx].prev_break_i_ = minimal_start_idx;
+ prev = minimal_start_idx;
optimal_paths[break_idx].line_config_ = minimal_sol;
optimal_paths[break_idx].demerits_f_ = minimal_demerits;
- optimal_paths[break_idx].line_i_ =
- optimal_paths[minimal_start_idx].line_i_ + 1;
}
+ optimal_paths[break_idx].prev_break_i_ = prev;
+ optimal_paths[break_idx].line_i_ = optimal_paths[prev].line_i_ + 1;
if (! (break_idx % HAPPY_DOTS_I))
*mlog << "[" << break_idx << "]" << flush;
for (int i = optimal_paths.size ()-1; i> 0;)
{
final_breaks.push (i);
- assert (i > optimal_paths[i].prev_break_i_);
-
- // there was no "feasible path"
- if (!optimal_paths[i].line_config_.config_.size ()) {
- final_breaks.set_size (0);
- break;
- }
- i = optimal_paths[i].prev_break_i_;
+ int prev = optimal_paths[i].prev_break_i_;
+ assert (i > prev);
+ i = prev;
}
-
+ if (optimal_paths.top ().demerits_f_ >= infinity_f)
+ warning (_ ("No feasible line breaking found"));
+
for (int i= final_breaks.size (); i--;)
lines.push (optimal_paths[final_breaks[i]].line_config_);
Gourlay_breaking::combine_demerits (Column_x_positions const &prev,
Column_x_positions const &this_one) const
{
- return abs (this_one.force_f_) + abs (prev.force_f_ - this_one.force_f_);
+ Real break_penalties = 0.0;
+ Paper_column * pc = this_one.cols_.top ();
+ if (pc->original_l_)
+ {
+ SCM pen = pc->get_elt_property (penalty_scm_sym);
+ if (pen != SCM_BOOL_F)
+ {
+ break_penalties += gh_scm2double (SCM_CDR(pen));
+ }
+ }
+
+ return abs (this_one.force_f_) + abs (prev.force_f_ - this_one.force_f_)
+ + break_penalties;
}
Hyphen_spanner::do_post_processing ()
{
// UGH
- Real nw_f = paper_l ()->note_width () * 0.8;
+ Real gap = paper_l ()->get_realvar (interline_scm_sym);
Direction d = LEFT;
do
if (d == LEFT)
dx_f_drul_[d] += t->extent (X_AXIS).length ();
else
- dx_f_drul_[d] -= d * nw_f / 2;
+ dx_f_drul_[d] -= d * gap / 2;
}
while (flip(&d) != LEFT);
}
protected:
virtual void do_creation_processing ();
virtual void do_removal_processing ();
- virtual bool do_try_music (Music *req_l);
virtual void do_process_requests();
virtual void do_pre_move_processing();
- virtual void do_post_move_processing();
+
private:
void create_bar ();
- Bar_req * bar_req_l_;
Bar * bar_p_;
};
--- /dev/null
+/*
+ bar-req-collect-engraver.hh -- declare
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef BAR_REQ_COLLECT_ENGRAVER_HH
+#define BAR_REQ_COLLECT_ENGRAVER_HH
+
+#include "engraver.hh"
+class Bar_req_collect_engraver : public Engraver
+{
+ Bar_req* bar_req_l_;
+public:
+ VIRTUAL_COPY_CONS(Translator);
+ void do_post_move_processing ();
+ bool do_try_music (Music *);
+};
+
+
+
+#endif /* Bar_Req_COLLECT_ENGRAVER_HH */
+
The beams should be prevented to conflict with the stafflines,
especially at small slopes.
*/
- enum Quantisation { NONE, NORMAL, TRADITIONAL, TEST };
+ enum Quantisation { NONE, NORMAL, TRADITIONAL };
enum Dir_algorithm { /* DOWN=-1, UP=1, */ MAJORITY=2, MEAN, MEDIAN };
Link_array<Stem> stems_;
protected:
Paper_score *pscore_l_;
- Real linelength;
+ Real linewidth_f_;
/// search all pcols which are breakable.
Line_of_cols find_breaks() const;
typedef Link_array<Paper_column> Line_of_cols;
struct Column_x_positions {
- Simple_spacer * spacer_l_;
+
Line_of_cols cols_;
Array<Real> config_;
~Column_x_positions();
Column_x_positions();
- void add_paper_column (Paper_column*c);
void print() const;
};
class Break_req : public Request {
public:
- enum { DISALLOW = -10000, FORCE = 10000 };
- int penalty_i_;
+ Real penalty_f_;
Break_req ();
protected:
VIRTUAL_COPY_CONS(Music);
--- /dev/null
+/*
+ cross-staff.hh -- declare cross staff calc funcs.
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+ */
+
+#ifndef CROSS_STAFF_HH
+#define CROSS_STAFF_HH
+#include "lily-proto.hh"
+Real
+calc_interstaff_dist (Item const *item, Spanner const *span);
+
+#endif /* CROSS_STAFF_HH */
+
DECLARE_LY_SYMBOL(origin);
DECLARE_LY_SYMBOL(output);
DECLARE_LY_SYMBOL(padding);
+DECLARE_LY_SYMBOL(penalty);
DECLARE_LY_SYMBOL(pianobrace);
DECLARE_LY_SYMBOL(placebox);
DECLARE_LY_SYMBOL(rulesym);
Interpretation_context_handle handle_;
protected:
+ bool playback_b_; // Should use SCMs
+
Music const * music_l_;
/// ugh. JUNKME
void set_translator (Translator_group*);
/** Get an iterator matching the type of MUS, and use TRANS to find
- an accompanying translation unit
- */
- static Music_iterator* static_get_iterator_p (Music const* mus);
+ an accompanying translation unit. Repeated music can be fully
+ unfolded by setting PLAYING */
+ static Music_iterator* static_get_iterator_p (Music const* mus, bool playing);
void init_translator (Music const *, Translator_group *);
Music_iterator();
add support for multiple fontsizes
-
+ remove all utility funcs
add support for other len->wid conversions.
- Input_engraver should be in here.
-
Interesting variables:
/// The distance between lines
interline
- */
+*/
class Paper_def : public Music_output_def
{
Hash_table<int, Lookup *> *lookup_p_tab_p_;
public:
virtual ~Paper_def ();
-
Array<Interval> shape_int_a_;
Real get_realvar (SCM symbol) const;
void set_lookup (int, Lookup*);
Paper_def (Paper_def const&);
- /// The distance between beams of multiplicity_i
+ /** The distance between beams of multiplicity_i
+ JUNKME
+ */
Real interbeam_f (int multiplicity_i) const;
- /// The thickness of a beam
- Real beam_thickness_f () const;
-
- /// thickness of the standard line
- Real rule_thickness () const;
-
- /// thickness of the staff line
- Real staffline_f () const;
-
Interval line_dimensions_int (int) const;
- Real linewidth_f () const;
-
- /// height of the staff
- Real staffheight_f () const;
- /// width of a crotchet ball
- Real note_width () const;
void print () const;
Lookup const * lookup_l (int sz) const; // TODO naming
influence using the geometric_ and paratime_signatures.
*/
Real length_mom_to_dist (Moment, Real) const;
- Real geometric_spacing (Moment) const;
+
Real arithmetic_constant (Moment minimal_mom) const;
Real arithmetic_spacing (Moment mom,Real constant) const;
+
virtual int get_next_default_count () const;
static void reset_default_count();
class Paper_score : public Music_output
{
- /// crescs etc; no particular order
- Link_array<Spanner> span_p_arr_;
-
- /// other elements
- Link_array<Score_element> elem_p_arr_;
- Link_array<Score_element> break_helpers_arr_;
-
- SCM protected_scms_;
+ SCM element_smob_list_;
public:
Paper_def *paper_l_;
*/
class Score_column : public Paper_column {
- friend class Score;
- friend class Score_engraver;
-
- int break_penalty_i_;
Moment when_;
public:
Moment shortest_playing_mom_;
Moment shortest_starter_mom_;
- int break_penalty_i () { return break_penalty_i_; }
VIRTUAL_COPY_CONS(Score_element);
*/
class Score_element : public virtual Graphical_element {
-
- friend class Paper_score;
/**
properties specific for this element. Destructor will not call
scm_unprotect, so as to allow more flexible GC arrangements. The
Paper_def *paper_l () const;
Lookup const *lookup_l () const;
- virtual ~Score_element ();
void add_processing ();
void substitute_dependency (Score_element*,Score_element*);
virtual Score_element *find_broken_piece (Line_of_score*) const;
protected:
+
+ /**
+ Junk score element. This is protected because this is supposed to
+ be handled by GUILE gc. */
+ virtual ~Score_element ();
+
Score_element* dependency (int) const;
int dependency_size () const;
virtual Link_array<Score_element> get_extra_dependencies () const;
static Interval dim_cache_callback (Dimension_cache*);
+public:
+ SCM smobify_self ();
+ static SCM mark_smob (SCM);
+ static scm_sizet free_smob (SCM s);
+ static int print_smob (SCM s, SCM p, scm_print_state*);
+ static long smob_tag;
+ static void init_smobs();
+ SCM self_scm_;
};
public Engraver_group_engraver, public Global_translator
{
Line_of_score * scoreline_l_;
- int break_penalty_i_;
int breaks_i_;
Link_array<Score_element> elem_p_arr_;
*/
class Slur : public Bow
{
+ int cross_staff_count () const;
+ Offset encompass_offset (Note_column const* )const;
public:
Slur ();
VIRTUAL_COPY_CONS(Score_element);
void add_column (Note_column*);
-
+
Link_array<Note_column> encompass_arr_;
protected:
*/
class Timing_engraver : public Timing_translator, public Engraver
{
+
+ Bar_req * bar_req_l_;
protected:
virtual void fill_staff_info (Staff_info&);
+ virtual bool do_try_music (Music * );
+ virtual void do_post_move_processing ();
public:
+ String which_bar ();
VIRTUAL_COPY_CONS(Translator);
};
*/
int done_count_;
+
+ /// unfold everything, or do volta?
+ bool full_unfold_b_;
/// are we busy doing the body?
bool do_main_b_;
}
extern void init_symbols ();
+extern void init_smobs (); // guh -> .hh
+
void
init_lily_guile ()
{
init_symbols();
init_functions ();
+ init_smobs ();
}
}
Music_iterator*
-Music_iterator::static_get_iterator_p (Music const *m)
+Music_iterator::static_get_iterator_p (Music const *m, bool playing)
{
Music_iterator * p =0;
p = new Music_wrapper_iterator;
else if (Repeated_music const * n = dynamic_cast<Repeated_music const *> (m))
{
- if (n->fold_b_)
+ if (n->fold_b_ && !playing)
p = new Folded_repeat_iterator;
else
p = new Unfolded_repeat_iterator;
}
else
assert (0);
-
+
+ p->playback_b_ = playing;
p->music_l_ = m;
return p;
Music_iterator*
Music_iterator::get_iterator_p (Music const*m) const
{
- Music_iterator*p = static_get_iterator_p (m);
+ Music_iterator*p = static_get_iterator_p (m, playback_b_);
p->init_translator (m, report_to_l());
p->construct_children();
Music_iterator::Music_iterator()
{
+ playback_b_ = false;
first_b_ = true;
}
{
if (!shape_int_a_.size ())
{
- if (n)
- return Interval (0, linewidth_f ());
- else
- return Interval (get_var ("indent"), linewidth_f ());
+ Real lw = get_realvar (linewidth_scm_sym);
+ Real ind = n? 0.0:get_var ("indent");
+
+ return Interval (ind, lw);
}
if (n >= shape_int_a_.size ())
return shape_int_a_[n];
}
-Real
-Paper_def::beam_thickness_f () const
-{
- return get_realvar (beam_thickness_scm_sym);
-}
-
-Real
-Paper_def::linewidth_f () const
-{
- return get_realvar (linewidth_scm_sym);
-}
Real
Paper_def::length_mom_to_dist (Moment d,Real k) const
}
-Real
-Paper_def::rule_thickness () const
-{
- return get_realvar (rulethickness_scm_sym);
-}
-
-Real
-Paper_def::staffline_f () const
-{
- return get_realvar (rulethickness_scm_sym);
- }
-
-Real
-Paper_def::staffheight_f () const
-{
- return get_realvar (staffheight_scm_sym);
- }
-
Real
Paper_def::interbeam_f (int multiplicity_i) const
{
return get_realvar (interbeam4_scm_sym);
}
-Real
-Paper_def::note_width () const
-{
- return get_realvar (notewidth_scm_sym);
-}
void
Paper_def::print () const
Paper_score::Paper_score ()
{
- protected_scms_ = scm_protect_object (gh_cons (SCM_BOOL_T, SCM_EOL));
paper_l_ =0;
outputter_l_ =0;
Line_of_score * line_p = new Line_of_score;
- typeset_unbroken_spanner (line_p);
-
+ line_p->pscore_l_ = this;
+ element_smob_list_ = scm_protect_object (gh_cons (line_p->self_scm_, SCM_EOL));
line_l_ = line_p;
}
Paper_score::~Paper_score ()
{
- for (int i=span_p_arr_.size (); --i >=0 ; )
- delete span_p_arr_[i];
- for (int i=elem_p_arr_.size (); --i >=0 ; )
- delete elem_p_arr_[i];
-
- scm_unprotect_object (protected_scms_);
+ scm_unprotect_object (element_smob_list_);
}
void
Paper_score::typeset_element (Score_element * elem_p)
{
- elem_p_arr_.push (elem_p);
elem_p->pscore_l_ = this;
- // take over protection.
- SCM_CDR(protected_scms_) = gh_cons (elem_p->element_property_alist_,
- SCM_CDR (protected_scms_));
- scm_unprotect_object (elem_p->element_property_alist_);
-
- SCM p = elem_p->remove_elt_property (break_helper_only_scm_sym);
- if (p != SCM_BOOL_F)
- break_helpers_arr_.push (elem_p);
-}
-
-
-void
-Paper_score::typeset_unbroken_spanner (Spanner*span_p)
-{
- span_p_arr_.push (span_p);
- span_p->pscore_l_=this;
-
- SCM p = span_p->remove_elt_property (break_helper_only_scm_sym);
- if (p != SCM_BOOL_F)
- break_helpers_arr_.push (span_p);
+ SCM_CDR(element_smob_list_) = gh_cons (elem_p->self_scm_,
+ SCM_CDR (element_smob_list_));
+ scm_unprotect_object (elem_p->self_scm_);
}
void
typeset_element(p);
}
-
-
void
Paper_score::print () const
{
#ifndef NPRINT
if (!flower_dstream)
return ;
+
DEBUG_OUT << "Paper_score { ";
DEBUG_OUT << "\n elements: ";
- for (int i=0; i < span_p_arr_.size (); i++)
- span_p_arr_[i]->print ();
- for (int i=0; i < elem_p_arr_.size (); i++)
- elem_p_arr_[i]->print();
-
+
+ for (SCM p = SCM_CDR (element_smob_list_);
+ p != SCM_EOL;
+ p = SCM_CDR(p))
+ gh_display (SCM_CAR(p));
DEBUG_OUT << "}\n";
#endif
}
typeset_element (line_l);
}
- if (experimental_features_global_b)
- *mlog << _f ("%s elements", elem_p_arr_.size () + span_p_arr_.size ());
*mlog << "\n";
*mlog << _ ("Line ... ");
line_l->post_processing ();
*mlog << i << flush;
line_l->output_all (i + 1 == lines.size());
- if (experimental_features_global_b)
- *mlog << '(' << elem_p_arr_.size () + span_p_arr_.size () << ')';
-
*mlog << ']' << flush;
}
Score_column::Score_column (Moment w)
{
- break_penalty_i_ = 0;
when_ = w;
}
{
#ifndef NPRINT
DEBUG_OUT << " at " << when_ << '\n';
- if (break_penalty_i_ >= Break_req::FORCE)
- DEBUG_OUT << "Break forced";
-
DEBUG_OUT << "Shortest playing: " << shortest_playing_mom_ << " shortest starter: " << shortest_starter_mom_;
Paper_column::do_print();
#endif
pscore_l_=0;
lookup_l_ =0;
status_i_ = 0;
+ self_scm_ = SCM_EOL;
original_l_ = 0;
element_property_alist_ = scm_protect_object (gh_cons (gh_cons (void_scm_sym, SCM_BOOL_T) , SCM_EOL));
+
+ smobify_self ();
}
Score_element::Score_element (Score_element const&s)
: Graphical_element (s)
{
+
+ self_scm_ = SCM_EOL;
used_b_ = true;
original_l_ =(Score_element*) &s;
element_property_alist_ = scm_protect_object (scm_list_copy (s.element_property_alist_));
status_i_ = s.status_i_;
lookup_l_ = s.lookup_l_;
pscore_l_ = s.pscore_l_;
+
+ smobify_self ();
}
Score_element::~Score_element()
pscore_l_->outputter_l_->output_molecule (output_p_,
o,
classname(this));
+
+ delete output_p_;
+ output_p_ =0;
}
/*
{
return 0;
}
+
+static scm_smobfuns score_elt_funs = {
+ Score_element::mark_smob, Score_element::free_smob,
+ Score_element::print_smob, 0,
+};
+
+
+SCM
+Score_element::smobify_self ()
+{
+ if (self_scm_ != SCM_EOL)
+ return self_scm_;
+
+ SCM s;
+ SCM_NEWCELL(s);
+ SCM_SETCAR(s,smob_tag);
+ void * me_p = this;
+ SCM_SETCDR(s,me_p);
+ scm_protect_object (s);
+ self_scm_ = s;
+
+ scm_unprotect_object (element_property_alist_); // ugh
+ return s;
+}
+
+SCM
+Score_element::mark_smob (SCM ses)
+{
+ void * mp = (void*) SCM_CDR(ses);
+ Score_element * s = (Score_element*) mp;
+
+ assert (s->self_scm_ == ses);
+ return s->element_property_alist_;
+}
+
+scm_sizet
+Score_element::free_smob (SCM ses)
+{
+ Score_element * s = (Score_element*) SCM_CDR(ses);
+ delete s;
+ return 0;
+}
+
+int
+Score_element::print_smob (SCM s, SCM port, scm_print_state *)
+{
+ Score_element *sc = (Score_element *) SCM_CDR (s);
+
+ scm_puts ("#<Score_element ", port);
+ scm_puts ((char *)sc->name (), port);
+ scm_puts (" >", port);
+ return 1;
+}
+
+long Score_element::smob_tag;
+
+void
+Score_element::init_smobs ()
+{
+ smob_tag = scm_newsmob (&score_elt_funs);
+}
+
+void
+init_smobs()
+{
+ Score_element::init_smobs ();
+}
Score_engraver::Score_engraver()
{
- break_penalty_i_ = 0;
scoreline_l_ =0;
command_column_l_ =0;
musical_column_l_ =0;
{
Global_translator::prepare (w);
set_columns (new Score_column (w), new Score_column (w));
-
- break_penalty_i_ = 0;
+
+ command_column_l_->set_elt_property (breakable_scm_sym, SCM_BOOL_T);
post_move_processing();
}
{
announce_info_arr_.push (info);
info.origin_trans_l_arr_.push (this);
-
- if (Spanner *s = dynamic_cast <Spanner *> (info.elem_l_))
- pscore_p_->typeset_unbroken_spanner (s);
- else if (Item *i = dynamic_cast<Item*> (info.elem_l_))
- pscore_p_->typeset_element (i);
+ pscore_p_->typeset_element (info.elem_l_);
}
/* All elements are propagated to the top upon announcement. If
void
Score_engraver::do_pre_move_processing()
{
- if (break_penalty_i_ > Break_req::DISALLOW)
+ if (command_column_l_->get_elt_property (breakable_scm_sym) != SCM_BOOL_F)
{
- command_column_l_->set_elt_property (breakable_scm_sym, SCM_BOOL_T);
breaks_i_ ++;
if (! (breaks_i_%8))
*mlog << "[" << breaks_i_ << "]" << flush;
scoreline_l_->add_column (command_column_l_);
}
else
- {
- delete command_column_l_ ;
- command_column_l_ =0;
- }
+ command_column_l_ =0;
+
if (new_command_l)
command_column_l_ = new_command_l;
scoreline_l_->add_column (musical_column_l_);
}
else
- {
- delete musical_column_l_;
- musical_column_l_ = 0;
- }
+ musical_column_l_ = 0;
if (new_musical_l)
{
if (!gotcha)
{
- /*
- UGH! THIS IS NOT SYMMETRIC. CLEAN ME UP!
- */
if (Break_req* b = dynamic_cast<Break_req *> (r))
{
gotcha = true;
- if (b->penalty_i_ <= Break_req::DISALLOW)
- break_penalty_i_ = b->penalty_i_;
- else if (b->penalty_i_ >= Break_req::FORCE)
- command_column_l_->break_penalty_i_ = b->penalty_i_;
+
+
+ SCM pen = command_column_l_->get_elt_property (penalty_scm_sym);
+ Real total_penalty = (pen == SCM_BOOL_F)
+ ? 0.0
+ : gh_scm2double (SCM_CDR(pen)); // ugh. Should typecheck.
+
+ total_penalty += b->penalty_f_;
+ if (b->penalty_f_ > 10000.0) // ugh. arbitrary.
+ forbid_breaks ();
+
+ command_column_l_->set_elt_property (penalty_scm_sym,
+ gh_double2scm (total_penalty));
}
}
return gotcha;
void
Score_engraver::forbid_breaks ()
{
- break_penalty_i_ = Break_req::DISALLOW;
+ SCM junk = command_column_l_->remove_elt_property (breakable_scm_sym);
}
ADD_THIS_TRANSLATOR(Score_engraver);
*mlog << '\n' << _("Interpreting music...") << flush;
trans_p->last_mom_ = music_p_->length_mom ();
- Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_);
+
+ bool playing = odef_l->scope_p_->elem_b ("unfold_all");
+ Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_, playing);
iter->init_translator(music_p_, trans_p);
iter->construct_children();
Separating_group_spanner::Separating_group_spanner()
{
- set_elt_property (break_helper_only_scm_sym, SCM_BOOL_T);
padding_f_ =0.0;
}
Cons<Music> *i = (sim->music_p_list_p_) ? sim->music_p_list_p_->head_ : 0;
for (; i; i = i->next_, j++)
{
- Music_iterator * mi = static_get_iterator_p (i->car_);
+ Music_iterator * mi = static_get_iterator_p (i->car_, playback_b_);
/* if separate_contexts_b_ is set, create a new context with the
number number as name */
Single_malt_grouping_item ::Single_malt_grouping_item()
{
- set_elt_property (break_helper_only_scm_sym, SCM_BOOL_T);
set_elt_property (transparent_scm_sym, SCM_BOOL_T);
// this is weird! , but needed!
#include "debug.hh"
#include "box.hh"
#include "bezier.hh"
-#include "encompass-info.hh"
#include "main.hh"
+#include "cross-staff.hh"
Slur::Slur ()
{
return Item::left_right_compare (n1, n2);
}
+
+Offset
+Slur::encompass_offset (Note_column const* col) const
+{
+ Offset o;
+ Stem* stem_l = col->stem_l_;
+ if (!stem_l)
+ {
+ warning (_ ("Slur over rest?"));
+ o[X_AXIS] = col->hpos_f ();
+ o[Y_AXIS] = col->extent (Y_AXIS)[dir_];
+ return o;
+ }
+
+ o[X_AXIS] = stem_l->hpos_f ();
+
+ /*
+ Simply set x to middle of notehead
+ */
+
+ o[X_AXIS] -= 0.5 * stem_l->dir_ * col->extent (X_AXIS).length ();
+
+ if ((stem_l->dir_ == dir_)
+ && !stem_l->extent (Y_AXIS).empty_b ())
+ {
+ o[Y_AXIS] = stem_l->extent (Y_AXIS)[dir_];
+ }
+ else
+ {
+ o[Y_AXIS] = col->extent (Y_AXIS)[dir_];
+ }
+
+ /*
+ leave a gap: slur mustn't touch head/stem
+ */
+ o[Y_AXIS] += dir_ * paper_l ()->get_var ("slur_y_free");
+ o[Y_AXIS] += calc_interstaff_dist (stem_l, this);
+ return o;
+}
+
+/*
+ ARGRARGRARGRARGAR!
+
+ Fixme
+ */
void
Slur::do_post_processing ()
{
}
while (flip (&d) != LEFT);
- int interstaff_i = 0;
- for (int i = 0; i < encompass_arr_.size (); i++)
+ bool cross_count = cross_staff_count ();
+ bool interstaff_b = (0 < cross_count) && (cross_count < encompass_arr_.size ());
+
+ Drul_array<Offset> info_drul;
+ Interval interstaff_interval;
+
+ do
{
- Encompass_info info (encompass_arr_[i], dir_, this);
- if (info.interstaff_f_)
- {
- interstaff_i++;
- }
+ info_drul[d] = encompass_offset (encompass_arr_.boundary (d, 0));
+ interstaff_interval[d] = calc_interstaff_dist (encompass_arr_.boundary (d,0),
+ this);
}
- bool interstaff_b = interstaff_i && (interstaff_i < encompass_arr_.size ());
-
- Drul_array<Encompass_info> info_drul;
- info_drul[LEFT] = Encompass_info (encompass_arr_[0], dir_, this);
- info_drul[RIGHT] = Encompass_info (encompass_arr_.top (), dir_, this);
- Real interstaff_f = info_drul[RIGHT].interstaff_f_
- - info_drul[LEFT].interstaff_f_;
+ while (flip (&d) != LEFT);
+
+ Real interstaff_f = interstaff_interval.length ();
if (fix_broken_b)
{
Direction d = (encompass_arr_.top () != spanned_drul_[RIGHT]) ?
RIGHT : LEFT;
- dy_f_drul_[d] = info_drul[d].o_[Y_AXIS];
+ dy_f_drul_[d] = info_drul[d][Y_AXIS];
if (!interstaff_b)
{
- dy_f_drul_[d] -= info_drul[d].interstaff_f_;
-
- if (interstaff_i)
+ dy_f_drul_[d] -= interstaff_interval[d];
+ if (cross_count) // interstaff_i ?
{
- dy_f_drul_[LEFT] += info_drul[d].interstaff_f_;
- dy_f_drul_[RIGHT] += info_drul[d].interstaff_f_;
+ dy_f_drul_[LEFT] += interstaff_interval[d];
+ dy_f_drul_[RIGHT] += interstaff_interval[d];
}
}
}
Catch and correct some ugly cases
*/
- Real height_damp_f;
- Real slope_damp_f;
- Real snap_f;
- Real snap_max_dy_f;
+
- if (!interstaff_b)
- {
- height_damp_f = paper_l ()->get_var ("slur_height_damping");
- slope_damp_f = paper_l ()->get_var ("slur_slope_damping");
- snap_f = paper_l ()->get_var ("slur_snap_to_stem");
- snap_max_dy_f = paper_l ()->get_var ("slur_snap_max_slope_change");
- }
- else
- {
- height_damp_f = paper_l ()->get_var ("slur_interstaff_height_damping");
- slope_damp_f = paper_l ()->get_var ("slur_interstaff_slope_damping");
- snap_f = paper_l ()->get_var ("slur_interstaff_snap_to_stem");
- snap_max_dy_f = paper_l ()->get_var ("slur_interstaff_snap_max_slope_change");
- }
+ String infix = interstaff_b ? "interstaff_" : "";
+ Real height_damp_f = paper_l ()->get_var ("slur_"+infix +"height_damping");
+ Real slope_damp_f = paper_l ()->get_var ("slur_"+infix +"slope_damping");
+ Real snap_f = paper_l ()->get_var ("slur_"+infix +"snap_to_stem");
+ Real snap_max_dy_f = paper_l ()->get_var ("slur_"+infix +"snap_max_slope_change");
if (!fix_broken_b)
dy_f_drul_[RIGHT] += interstaff_f;
snapped_b_drul[LEFT] = snapped_b_drul[RIGHT] = false;
do
{
- if ((note_column_drul[d] == spanned_drul_[d])
- && (note_column_drul[d]->stem_l_)
- && (note_column_drul[d]->stem_l_->dir_ == dir_)
- && (abs (note_column_drul[d]->stem_l_->extent (Y_AXIS)[dir_]
- - dy_f_drul_[d] + (d == LEFT ? 0 : interstaff_f))
- <= snap_f))
+ Note_column * nc = note_column_drul[d];
+ if (nc == spanned_drul_[d]
+ && nc->stem_l_
+ && nc->stem_l_->dir_ == dir_
+ && abs (nc->stem_l_->extent (Y_AXIS)[dir_]
+ - dy_f_drul_[d] + (d == LEFT ? 0 : interstaff_f))
+ <= snap_f)
{
/*
prepare to attach to stem-end
*/
- Stem* stem_l = note_column_drul[d]->stem_l_;
- snapx_f_drul[d] = stem_l->hpos_f ()
+ snapx_f_drul[d] = nc->stem_l_->hpos_f ()
- spanned_drul_[d]->relative_coordinate (0, X_AXIS);
- snapy_f_drul[d] = stem_l->extent (Y_AXIS)[dir_];
- snapy_f_drul[d] += info_drul[d].interstaff_f_;
- snapy_f_drul[d] += dir_ * 2 * y_gap_f;
+
+ snapy_f_drul[d] = nc->stem_l_->extent (Y_AXIS)[dir_]
+ + interstaff_interval[d]
+ + dir_ * 2 * y_gap_f;
+
snapped_b_drul[d] = true;
}
}
*/
if (!fix_broken_b)
dy_f += interstaff_f;
+
+
+ /*
+ (sigh)
+
+ More refactoring could be done.
+ */
+ Real maxsnap = abs (dy_f * snap_max_dy_f);
if (snapped_b_drul[LEFT] && snapped_b_drul[RIGHT]
&& ((sign (snapy_f_drul[RIGHT] - snapy_f_drul[LEFT]) == sign (dy_f)))
&& (!dy_f || (abs (snapy_f_drul[RIGHT] - snapy_f_drul[LEFT] - dy_f)
- < abs (dy_f * snap_max_dy_f))))
- {
- do
- {
- dy_f_drul_[d] = snapy_f_drul[d];
- dx_f_drul_[d] = snapx_f_drul[d];
- }
- while (flip (&d) != LEFT);
-
- }
- else if (snapped_b_drul[LEFT]
- && ((sign (dy_f_drul_[RIGHT] - snapy_f_drul[LEFT]) == sign (dy_f)))
- && (!dy_f || (abs (dy_f_drul_[RIGHT] - snapy_f_drul[LEFT] - dy_f)
- < abs (dy_f * snap_max_dy_f))))
+ < maxsnap)))
{
- Direction d = LEFT;
- dy_f_drul_[d] = snapy_f_drul[d];
- dx_f_drul_[d] = snapx_f_drul[d];
+ dy_f_drul_ = snapy_f_drul;
+ dx_f_drul_ = snapx_f_drul;
}
- else if (snapped_b_drul[RIGHT]
- && ((sign (snapy_f_drul[RIGHT] - dy_f_drul_[LEFT]) == sign (dy_f)))
- && (!dy_f || (abs (snapy_f_drul[RIGHT] - dy_f_drul_[LEFT] - dy_f)
- < abs (dy_f * snap_max_dy_f))))
+ else
+ do
+ {
+ Direction od = (Direction)-d;
+ if (snapped_b_drul[d]
+ && d * sign (snapy_f_drul[d] - dy_f_drul_[od]) == sign (dy_f)
+ && (!dy_f || (abs (snapy_f_drul[d] - dy_f_drul_[od] - d * dy_f)
+ < maxsnap)))
+ {
+ dy_f_drul_[d] = snapy_f_drul[d];
+ dx_f_drul_[d] = snapx_f_drul[d];
+ }
+ }
+ while (flip (&d) != LEFT);
+}
+
+
+int
+Slur::cross_staff_count ()const
+{
+ int k=0;
+
+ for (int i = 0; i < encompass_arr_.size (); i++)
{
- Direction d = RIGHT;
- dy_f_drul_[d] = snapy_f_drul[d];
- dx_f_drul_[d] = snapx_f_drul[d];
+ if (calc_interstaff_dist (encompass_arr_[i], this))
+ k++;
}
+ return k;
}
+
Array<Offset>
Slur::get_encompass_offset_arr () const
{
offset_arr.push (Offset (0, dy_f_drul_[RIGHT]));
return offset_arr;
#endif
-
- int interstaff_i = 0;
- for (int i = 0; i < encompass_arr_.size (); i++)
- {
- Encompass_info info (encompass_arr_[i], dir_, this);
- if (info.interstaff_f_)
- {
- interstaff_i++;
- }
- }
- bool interstaff_b = interstaff_i && (interstaff_i < encompass_arr_.size ());
Offset origin (relative_coordinate (0, X_AXIS), 0);
int last = encompass_arr_.size () - 2;
offset_arr.push (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
+
/*
left is broken edge
*/
+
+ int cross_count = cross_staff_count ();
+ bool cross_b = cross_count && cross_count < encompass_arr_.size ();
if (encompass_arr_[0] != spanned_drul_[LEFT])
{
first--;
- Encompass_info left_info (encompass_arr_[0], dir_, this);
- if (interstaff_b)
- offset_arr[0][Y_AXIS] += left_info.interstaff_f_;
+ Real is = calc_interstaff_dist (encompass_arr_[0], this);
+ if (cross_b)
+ offset_arr[0][Y_AXIS] += is;
}
/*
for (int i = first; i <= last; i++)
{
- Encompass_info info (encompass_arr_[i], dir_, this);
- offset_arr.push (info.o_ - origin);
+ Offset o (encompass_offset (encompass_arr_[i]));
+ offset_arr.push (o - origin);
}
offset_arr.push (Offset (do_width ().length () + dx_f_drul_[RIGHT],
Spacing_spanner::Spacing_spanner ()
{
- set_elt_property (break_helper_only_scm_sym, SCM_BOOL_T);
set_elt_property (transparent_scm_sym, SCM_BOOL_T);
}
- spanned_drul_[LEFT]->relative_coordinate (common, X_AXIS)
;
- Real t = paper_l ()->get_var ("rulethickness");
+ Real t = paper_l ()->get_var ("stafflinethickness");
Molecule rule = lookup_l ()->filledbox (Box (Interval (0,width),
Interval (-t/2, t/2)));
#include "proto.hh"
#include "misc.hh"
-#include "debug.hh"
-#include "dimension-cache.hh"
+#include "cross-staff.hh"
-#include "align-element.hh"
#include "stem.hh"
#include "paper-def.hh"
#include "lookup.hh"
#include "stem-info.hh"
#include "beam.hh"
-#include "staff-symbol.hh"
+
Stem_info::Stem_info ()
{
}
+
+
/*
FIXME: y dims should not be in internote.
*/
-
Stem_info::Stem_info (Stem*s, int mult)
{
mult_i_ =mult;
Paper_def* paper_l = stem_l_->paper_l ();
Real internote_f = stem_l_->staff_line_leading_f ()/2;
Real interbeam_f = paper_l->interbeam_f (mult_i_);
- Real beam_f = paper_l->beam_thickness_f ();
+ Real beam_f = paper_l->get_realvar (beam_thickness_scm_sym);;
- {
- static int i = 1;
- DEBUG_OUT << "******" << i++ << "******\n"
- << "begin_f: " << stem_l_->stem_begin_f () * dir_
- << "\nchord_f/i: " << stem_l_->chord_start_f () * dir_ / internote_f << '\n';
- }
// strangely enough, dim(chord_start_f) == pt (and not internote!)
idealy_f_ = stem_l_->chord_start_f () / internote_f;
/* knee */
{
idealy_f_ -= beam_f;
- // idealy_f_ -= (mult_i_ - 1) * interbeam_f;
- // idealy_f_ += (mult_i_ - stem_l_->flag_i_ >? 0) * interbeam_f;
maxy_f_ = idealy_f_;
miny_f_ = -INT_MAX;
miny_f_ /= internote_f;
maxy_f_ /= internote_f;
- DEBUG_OUT << "dir_: " << dir_ << '\n';
- DEBUG_OUT << "mult_i_: " << mult_i_ << '\n';
- DEBUG_OUT << "idealy_f_: " << idealy_f_ << '\n';
- DEBUG_OUT << "miny_f_: " << miny_f_ << '\n';
- DEBUG_OUT << "maxy_f_: " << maxy_f_ << '\n';
-
idealy_f_ = maxy_f_ <? idealy_f_;
idealy_f_ = miny_f_ >? idealy_f_;
// interstaff beam
Beam* beam_l = stem_l_->beam_l_;
- Graphical_element *common = stem_l_->common_refpoint (beam_l, Y_AXIS);
- Align_element * align = dynamic_cast<Align_element*> (common);
- if (align && align->axis() == Y_AXIS)
- {
- if (align->threshold_interval_[MIN] !=
- align->threshold_interval_[MAX])
- warning (_ ("minVerticalAlign != maxVerticalAlign: interstaff beams/slurs may be broken"));
-
- interstaff_f_ = align->threshold_interval_[MIN] / internote_f;
-
- Graphical_element * beam_refpoint = beam_l;
- Graphical_element * stem_refpoint = stem_l_;
-
- while (beam_refpoint->parent_l (Y_AXIS) != common)
- beam_refpoint = beam_refpoint->parent_l (Y_AXIS);
- while (stem_refpoint->parent_l (Y_AXIS) != common)
- stem_refpoint = stem_refpoint->parent_l (Y_AXIS);
-
-
- int beam_prio =
- align->get_priority (dynamic_cast<Score_element*> (beam_refpoint));
- int stem_prio =
- align->get_priority (dynamic_cast<Score_element*> (stem_refpoint));
-
- /*
- our staff is lower -> interstaff_f_ *= -1
- */
- if (beam_prio < stem_prio)
- interstaff_f_ *= -1;
-
- idealy_f_ += interstaff_f_ * beam_dir_;
- miny_f_ += interstaff_f_ * beam_dir_;
- maxy_f_ += interstaff_f_ * beam_dir_;
- }
+ Real is = calc_interstaff_dist (stem_l_, beam_l);
+ idealy_f_ += is* beam_dir_;
+ miny_f_ += is * beam_dir_;
+ maxy_f_ += is * beam_dir_;
}
Real space = stem_l_->staff_line_leading_f ();
Real internote_f = space/2;
- Real beam_f = paper_l ()->beam_thickness_f ();
+ Real beam_f = paper_l ()->get_realvar (beam_thickness_scm_sym);
int beams_i = 0;
Real slope_f = internote_f / 4 / internote_f; // HUH?
if (head_l_arr_.size())
{
Interval head_wid(0, head_l_arr_[0]->extent (X_AXIS).length ());
- Real rule_thick(paper_l ()->rule_thickness ());
+ Real rule_thick = paper_l ()->get_var ("stemthickness");
+
Interval stem_wid(-rule_thick/2, rule_thick/2);
if (dir_ == CENTER)
r = head_wid.center ();
ADD_THIS_TRANSLATOR(Timing_engraver);
+
+
+void
+Timing_engraver::do_post_move_processing( )
+{
+ bar_req_l_ = 0;
+ Timing_translator::do_post_move_processing ();
+}
+
+bool
+Timing_engraver::do_try_music (Music*m)
+{
+ if (Bar_req * b= dynamic_cast <Bar_req *> (m))
+ {
+ if (bar_req_l_ && bar_req_l_->equal_b (b)) // huh?
+ return false;
+
+ bar_req_l_ = b;
+ return true;
+ }
+
+ return Timing_translator::do_try_music (m);
+}
+
+
+String
+Timing_engraver::which_bar ()
+{
+ if (!bar_req_l_)
+ {
+ if (!now_mom ())
+ return "|";
+
+ Scalar nonauto = get_property ("barNonAuto", 0);
+ if (!nonauto.to_bool ())
+ {
+ Scalar always = get_property ("barAlways", 0);
+ if (!time_.whole_in_measure_ || always.to_bool ())
+ return get_property ("defaultBarType" ,0);
+ }
+ return "";
+ }
+ else
+ {
+ return bar_req_l_->type_str_;
+ }
+}
{
done_mom_ += mus->repeat_body_p_->length_mom ();
- if (!mus->volta_fold_b_)
+ if (full_unfold_b_)
done_count_ ++;
if (alternative_cons_l_)
current_iter_p_ = get_iterator_p (alternative_cons_l_->car_);
do_main_b_ = false;
}
- else if (done_count_ < mus->repeats_i_ && !mus->volta_fold_b_)
+ else if (done_count_ < mus->repeats_i_ && full_unfold_b_)
{
current_iter_p_ = get_iterator_p (mus->repeat_body_p_);
do_main_b_ = true;
{
done_mom_ += alternative_cons_l_->car_->length_mom ();
- if (mus->volta_fold_b_ ||
+ if (!full_unfold_b_ ||
mus->repeats_i_ - done_count_ < alternative_count_i_)
alternative_cons_l_ = alternative_cons_l_->next_;
/*
we've done the main body as well, but didn't go over the other
increment. */
- if (mus->volta_fold_b_)
+ if (full_unfold_b_)
done_count_ ++;
}
if (done_count_ < mus->repeats_i_ && alternative_cons_l_)
{
- if (mus->volta_fold_b_)
+ if (!full_unfold_b_)
current_iter_p_ = get_iterator_p (alternative_cons_l_->car_);
else
{
Unfolded_repeat_iterator::construct_children ()
{
Repeated_music const* mus =dynamic_cast<Repeated_music const*> (music_l_);
+ full_unfold_b_ = playback_b_ || (!mus->volta_fold_b_);
+
alternative_cons_l_ = (mus->alternatives_p_)
? mus->alternatives_p_->music_p_list_p_->head_
: 0;
center=0
-break = \penalty 10000;
-nobreak = \penalty -10000;
+break = \penalty -1000000;
+nobreak = \penalty 1000000;
major = 0
minor = 3
};
\translator { \StaffGroupContext }
-\translator{
+% UGH! JUNKME
+LyricsVoiceContext= \translator{
\type "Engraver_group_engraver";
\consistsend "Axis_group_engraver";
\consists "Lyric_engraver";
\consists "Extender_engraver";
\consists "Hyphen_engraver";
-}
+};
+\translator{ \LyricsVoiceContext }
-\translator {
+LyricsContext = \translator {
\type "Engraver_group_engraver";
\name Lyrics;
\consists Vertical_align_engraver;%need this for getting folded repeats right.
\consistsend "Axis_group_engraver";
\accepts "LyricVoice";
-}
+};
+\translator { \LyricsContext }
\translator{
\type "Engraver_group_engraver";
\name Score;
\consists "Timing_engraver";
+
\consists "Span_score_bar_engraver";
\consists "Score_priority_engraver";
\consists "Spacing_engraver";
\consists "Vertical_align_engraver";
alignmentReference = \down;
defaultClef = treble;
-
+ defaultBarType = "|";
\accepts "Staff";
\accepts "StaffGroup";
\accepts "RhythmicStaff";
interline = \staffheight / 4.0;
-% thickness of stafflines
-staffline = \interline / 10.0;
+stafflinethickness = \interline / 10.0;
% urg, need grace_ versions of these too?
-beam_thickness = 0.52 * (\interline - \staffline);
-interbeam = (2.0 * \interline + \staffline - \beam_thickness) / 2.0;
+beam_thickness = 0.52 * (\interline - \stafflinethickness);
+interbeam = (2.0 * \interline + \stafflinethickness - \beam_thickness) / 2.0;
interbeam4 = (3.0 * \interline - \beam_thickness) / 3.0;
% stems and beams
tie_staffspace_length = 4.0 * \interline;
% ugh: rename to bow (in bezier.cc and fonts.doc too...)
-% slur_thickness = 1.8 * \staffline;
-slur_thickness = 1.4 * \staffline;
+% slur_thickness = 1.8 * \stafflinethickness;
+slur_thickness = 1.4 * \stafflinethickness;
%{
Specifies the maximum height of slurs.
% ugh
notewidth = (\quartwidth + \wholewidth) / 2.0;
-% ugh
-rulethickness = \staffline;
-
gourlay_energybound = 100000.;
%{
Maximum number of measures per line to try when using Gourlay
%}
-bar_kern = 3.0 * \staffline;
-bar_thinkern = 3.0 * \staffline;
-barthick_thick = 6.0* \staffline;
-barthick_thin = 1.6*\staffline;
-barthick_score = 1.6*\staffline;
+bar_kern = 3.0 * \stafflinethickness;
+bar_thinkern = 3.0 * \stafflinethickness;
+barthick_thick = 6.0* \stafflinethickness;
+barthick_thin = 1.6*\stafflinethickness;
+barthick_score = 1.6*\stafflinethickness;
tuplet_spanner_gap = 2.0 * \interline;
-tuplet_thick = 1.0*\staffline;
-volta_thick = 1.6*\staffline;
+tuplet_thick = 1.0*\stafflinethickness;
+volta_thick = 1.6*\stafflinethickness;
volta_spanner_height = 2.0 *\interline;
% relative thickness of thin lines 1.6 : 1 : 0.8
-stemthickness = 0.8*\staffline;
-rulethickness = \staffline;
+stemthickness = 0.8*\stafflinethickness;
+rulethickness = \stafflinethickness;
-extender_height = 0.8*\staffline;
+extender_height = 0.8*\stafflinethickness;
hyphen_thickness = 0.05*\font_normal;
hyphen_height = 0.2*\font_normal;
% chop off this much when next to pp / ff sign.
crescendo_shorten = 4.0 * \interline;
-crescendo_thickness = \staffline;
+crescendo_thickness = \stafflinethickness;
+crescendo_height = 1.5 * \interline;
% in internote.
restcollision_minimum_dist = 3.0;
restcollision_minimum_beamdist = 1.5;
+
+% unit for note collision resolving
+collision_note_width = \notewidth; %ugh.
+
% deprecated!
postBreakPadding = 0.0;
% ugh, cluttering global namespace...
% ugh2.
-none=0
-free=0
-normal=1
-traditional=2
infinity=10000
beamslopeproportional =
- \property Score.beamslopedamping = \none
+ \property Score.beamslopedamping = 0
beamslopedamped =
- \property Score.beamslopedamping = \normal
+ \property Score.beamslopedamping = 1
beamslopezero =
% this sucks, you'd want to pass an array, at least
% (or embedded code: you still can't dictate the slope / stemlength)
beamposfree =
- \property Score.beamquantisation = \none
+ \property Score.beamquantisation = 0
beamposnormal =
- \property Score.beamquantisation = \normal
+ \property Score.beamquantisation = 1
beampostraditional =
- \property Score.beamquantisation = \traditional
+ \property Score.beamquantisation = 2
slurnormal =
# descent order into subdirectories:
#
SUBDIRS = scripts buildscripts flower lib lily mf midi2ly po debian \
- Documentation ly input tex make mutopia test intl stepmake\
+ Documentation ly input tex make mutopia intl stepmake\
ps scm
#
SCRIPTS = configure aclocal.m4
-README_FILES = DEDICATION ANNOUNCE-0.1 ANNOUNCE-1.0 ANNOUNCE-1.2 \
- COPYING NEWS-0.1 NEWS-1.0 NEWS-0.0 NEWS-1.1 NEWS TODO AIMS CHANGES
-README_TXT_FILES = README.txt AUTHORS.txt INSTALL.txt
+README_FILES = DEDICATION COPYING NEWS TODO CHANGES
+README_TXT_FILES = README.txt INSTALL.txt
IN_FILES := $(wildcard *.in)
EXTRA_DIST_FILES = dstreamrc mudela-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES)
NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
(define (lily-def key val)
(string-append
- "\\def\\" (output-tex-string key) "{" (output-tex-string val) "}\n"))
+ "\\def\\"
+; (regexp-substitute/global #f "_" (output-tex-string key) 'pre "X" 'post)
+ (output-tex-string key)
+ "{" (output-tex-string val) "}\n"))
(define (number->dim x)
(string-append
% note the ! sign. See dvips.info for details.
%
-% Use of
-% /foo { operatorname } bind def
-%
-% ``compiles'' operatorname binding in the body of foo, making
-% the code faster, and more reliable (less flexible)
-
-
+% ARG. Fix brackets
\def\turnOnPostScript{%
% This sets CTM so that you get to the currentpoint
% by executing a 0 0 moveto
}
%
\special{!
-/stafflinethickness \mudelapaperstaffline\space def
+/stafflinethickness \mudelapaperstafflinethickness\space def
/interline \mudelapaperinterline\space def
interline 3 div /bracket_b exch def
interline 2 mul /bracket_w exch def