From 3fa1c07ce3b7ab0d7432dd4338e67e8106d6b28f Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 22:41:53 +0000 Subject: [PATCH] lilypond-1.2.15 --- Documentation/misc/AIMS | 92 + Documentation/misc/ANNOUNCE-0.1 | 165 ++ Documentation/misc/ANNOUNCE-1.0 | 102 + Documentation/misc/ANNOUNCE-1.2 | 62 + Documentation/misc/CHANGES-0.0 | 1170 +++++++++++ Documentation/misc/CHANGES-0.1 | 2141 ++++++++++++++++++++ Documentation/misc/CHANGES-1.0 | 515 +++++ Documentation/misc/CHANGES-1.1 | 2006 ++++++++++++++++++ Documentation/misc/GNUmakefile | 21 + Documentation/misc/NEWS-1.2 | 25 + Documentation/misc/NEWS-1.2~ | 25 + Documentation/misc/index.texi | 23 + Documentation/misc/interview | 108 + Documentation/user/tutorial.itely | 12 +- NEWS | 25 - buildscripts/lilypond-login.sh | 9 +- buildscripts/lilypond-profile.sh | 6 +- flower/include/parray.hh | 19 + input/bugs/core.ly | 3 - input/star-spangled-banner.ly | 7 +- input/test/break.ly | 12 + input/test/lyrics-bar.ly | 30 + lily/auto-beam-engraver.cc | 1 - lily/bar-engraver.cc | 56 +- lily/bar-req-collect-engraver.cc | 11 + lily/bar.cc | 2 +- lily/beam-engraver.cc | 2 +- lily/beam.cc | 94 +- lily/bezier.cc | 3 +- lily/break-algorithm.cc | 21 +- lily/break-align-item.cc | 2 - lily/collision.cc | 2 +- lily/column-x-positions.cc | 7 - lily/command-request.cc | 1 - lily/crescendo.cc | 2 +- lily/cross-staff.cc | 44 + lily/engraver.cc | 1 + lily/extender-spanner.cc | 4 +- lily/gourlay-breaking.cc | 70 +- lily/hyphen-spanner.cc | 4 +- lily/include/bar-engraver.hh | 4 +- lily/include/bar-req-collector-engraver.hh | 26 + lily/include/beam.hh | 2 +- lily/include/break-algorithm.hh | 2 +- lily/include/column-x-positions.hh | 3 +- lily/include/command-request.hh | 3 +- lily/include/cross-staff.hh | 17 + lily/include/ly-symbols.hh | 1 + lily/include/music-iterator.hh | 8 +- lily/include/paper-def.hh | 29 +- lily/include/paper-score.hh | 9 +- lily/include/score-column.hh | 5 - lily/include/score-element.hh | 17 +- lily/include/score-engraver.hh | 1 - lily/include/slur.hh | 4 +- lily/include/timing-engraver.hh | 5 + lily/include/unfolded-repeat-iterator.hh | 3 + lily/lily-guile.cc | 3 + lily/music-iterator.cc | 10 +- lily/paper-def.cc | 42 +- lily/paper-score.cc | 54 +- lily/score-column.cc | 4 - lily/score-element.cc | 77 + lily/score-engraver.cc | 47 +- lily/score.cc | 4 +- lily/separating-group-spanner.cc | 1 - lily/simultaneous-music-iterator.cc | 2 +- lily/single-malt-grouping-item.cc | 1 - lily/slur.cc | 220 +- lily/spacing-spanner.cc | 1 - lily/staff-sym.cc | 2 +- lily/stem-info.cc | 63 +- lily/stem-tremolo.cc | 2 +- lily/stem.cc | 3 +- lily/timing-engraver.cc | 47 + lily/unfolded-repeat-iterator.cc | 12 +- ly/declarations.ly | 4 +- ly/engraver.ly | 14 +- ly/params.ly | 41 +- ly/property.ly | 14 +- make/toplevel.make.in | 7 +- scm/lily.scm | 5 +- tex/lily-ps-defs.tex | 10 +- 83 files changed, 7138 insertions(+), 596 deletions(-) create mode 100644 Documentation/misc/AIMS create mode 100644 Documentation/misc/ANNOUNCE-0.1 create mode 100644 Documentation/misc/ANNOUNCE-1.0 create mode 100644 Documentation/misc/ANNOUNCE-1.2 create mode 100644 Documentation/misc/CHANGES-0.0 create mode 100644 Documentation/misc/CHANGES-0.1 create mode 100644 Documentation/misc/CHANGES-1.0 create mode 100644 Documentation/misc/CHANGES-1.1 create mode 100644 Documentation/misc/GNUmakefile create mode 100644 Documentation/misc/NEWS-1.2 create mode 100644 Documentation/misc/NEWS-1.2~ create mode 100644 Documentation/misc/index.texi create mode 100644 Documentation/misc/interview create mode 100644 input/test/break.ly create mode 100644 input/test/lyrics-bar.ly create mode 100644 lily/bar-req-collect-engraver.cc create mode 100644 lily/cross-staff.cc create mode 100644 lily/include/bar-req-collector-engraver.hh create mode 100644 lily/include/cross-staff.hh diff --git a/Documentation/misc/AIMS b/Documentation/misc/AIMS new file mode 100644 index 0000000000..ae5d5a9658 --- /dev/null +++ b/Documentation/misc/AIMS @@ -0,0 +1,92 @@ +[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 + diff --git a/Documentation/misc/ANNOUNCE-0.1 b/Documentation/misc/ANNOUNCE-0.1 new file mode 100644 index 0000000000..8ed22c92be --- /dev/null +++ b/Documentation/misc/ANNOUNCE-0.1 @@ -0,0 +1,165 @@ +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. + + + --- * --- diff --git a/Documentation/misc/ANNOUNCE-1.0 b/Documentation/misc/ANNOUNCE-1.0 new file mode 100644 index 0000000000..33190c9cf2 --- /dev/null +++ b/Documentation/misc/ANNOUNCE-1.0 @@ -0,0 +1,102 @@ +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 + diff --git a/Documentation/misc/ANNOUNCE-1.2 b/Documentation/misc/ANNOUNCE-1.2 new file mode 100644 index 0000000000..ec9bef6cd2 --- /dev/null +++ b/Documentation/misc/ANNOUNCE-1.2 @@ -0,0 +1,62 @@ +-*- 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. + + diff --git a/Documentation/misc/CHANGES-0.0 b/Documentation/misc/CHANGES-0.0 new file mode 100644 index 0000000000..f936254a1f --- /dev/null +++ b/Documentation/misc/CHANGES-0.0 @@ -0,0 +1,1170 @@ + +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 [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 + - 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 /include dirs (make/Include.make) + * all output into /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//.version for 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 diff --git a/Documentation/misc/CHANGES-0.1 b/Documentation/misc/CHANGES-0.1 new file mode 100644 index 0000000000..f5e3562839 --- /dev/null +++ b/Documentation/misc/CHANGES-0.1 @@ -0,0 +1,2141 @@ +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 + +********* +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 (me too!) + - 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 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 + + + diff --git a/Documentation/misc/CHANGES-1.0 b/Documentation/misc/CHANGES-1.0 new file mode 100644 index 0000000000..5cff9ea377 --- /dev/null +++ b/Documentation/misc/CHANGES-1.0 @@ -0,0 +1,515 @@ +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: + .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 + diff --git a/Documentation/misc/CHANGES-1.1 b/Documentation/misc/CHANGES-1.1 new file mode 100644 index 0000000000..b98baa12cf --- /dev/null +++ b/Documentation/misc/CHANGES-1.1 @@ -0,0 +1,2006 @@ +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 { } } + + should be + + \score { \notes \context Voice { } + + - 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, 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 + - search repl: Array -> Link_array + - 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: { [ ] }, changed in lilypond, +parser, lilypond (mudela 1.0.14), manual + - new tie syntax: { ~ } 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 ~ 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: ../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; @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 + diff --git a/Documentation/misc/GNUmakefile b/Documentation/misc/GNUmakefile new file mode 100644 index 0000000000..55a1efe7ed --- /dev/null +++ b/Documentation/misc/GNUmakefile @@ -0,0 +1,21 @@ +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 $< $@ diff --git a/Documentation/misc/NEWS-1.2 b/Documentation/misc/NEWS-1.2 new file mode 100644 index 0000000000..d3499b3490 --- /dev/null +++ b/Documentation/misc/NEWS-1.2 @@ -0,0 +1,25 @@ +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. diff --git a/Documentation/misc/NEWS-1.2~ b/Documentation/misc/NEWS-1.2~ new file mode 100644 index 0000000000..d3499b3490 --- /dev/null +++ b/Documentation/misc/NEWS-1.2~ @@ -0,0 +1,25 @@ +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. diff --git a/Documentation/misc/index.texi b/Documentation/misc/index.texi new file mode 100644 index 0000000000..8a84edbeb8 --- /dev/null +++ b/Documentation/misc/index.texi @@ -0,0 +1,23 @@ +\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 + diff --git a/Documentation/misc/interview b/Documentation/misc/interview new file mode 100644 index 0000000000..4526280199 --- /dev/null +++ b/Documentation/misc/interview @@ -0,0 +1,108 @@ +(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. + diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 35b5dc0cae..5029f7fa34 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -383,6 +383,7 @@ may differ, since the titling in this document is not generated by \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. @@ -452,12 +453,17 @@ give names to the different parts of music, and use the names to 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. diff --git a/NEWS b/NEWS index 66e89bcf1c..5d740e231d 100644 --- a/NEWS +++ b/NEWS @@ -8,28 +8,3 @@ WHAT'S NEW SINCE 1.2.0 * 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. diff --git a/buildscripts/lilypond-login.sh b/buildscripts/lilypond-login.sh index d7e8e972d8..ca9d6c5c9f 100644 --- a/buildscripts/lilypond-login.sh +++ b/buildscripts/lilypond-login.sh @@ -1,10 +1,10 @@ #!/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@" @@ -19,10 +19,5 @@ if ($?TEXINPUTS) then 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 diff --git a/buildscripts/lilypond-profile.sh b/buildscripts/lilypond-profile.sh index 6aebf7b701..f2083862de 100644 --- a/buildscripts/lilypond-profile.sh +++ b/buildscripts/lilypond-profile.sh @@ -2,7 +2,6 @@ # 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... @@ -12,11 +11,8 @@ LILYPONDPREFIX="@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 diff --git a/flower/include/parray.hh b/flower/include/parray.hh index 8a2efcb6fd..a9baeab836 100644 --- a/flower/include/parray.hh +++ b/flower/include/parray.hh @@ -129,6 +129,25 @@ public: Array::empty; Array::reverse; Array::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::access_array(); diff --git a/input/bugs/core.ly b/input/bugs/core.ly index 5564617f77..2ad2caf191 100644 --- a/input/bugs/core.ly +++ b/input/bugs/core.ly @@ -15,9 +15,6 @@ global = \notes { \paper { \translator{ \StaffContext - - % other core dump when this is removed? - \remove "Time_signature_engraver"; } } } diff --git a/input/star-spangled-banner.ly b/input/star-spangled-banner.ly index e4bbe8d76e..d16dadc5e6 100644 --- a/input/star-spangled-banner.ly +++ b/input/star-spangled-banner.ly @@ -164,10 +164,13 @@ handLyrics = \notes \context GrandStaff < \GrandStaffContext \accepts "Lyrics"; } -% castingalgorithm = \Wordwrap; + \translator { + \LyricsContext + \consists "Bar_engraver"; + } } \midi {} } -\version "1.2.0"; +\version "1.2.14"; diff --git a/input/test/break.ly b/input/test/break.ly new file mode 100644 index 0000000000..ce65bb178b --- /dev/null +++ b/input/test/break.ly @@ -0,0 +1,12 @@ + + + +\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;} +} diff --git a/input/test/lyrics-bar.ly b/input/test/lyrics-bar.ly new file mode 100644 index 0000000000..0e714c34f6 --- /dev/null +++ b/input/test/lyrics-bar.ly @@ -0,0 +1,30 @@ + +\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 + } + } +} diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index 28fc85fa65..69b9a4f6ed 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -194,7 +194,6 @@ Auto_beam_engraver::create_beam_p () */ if ((*stem_l_arr_p_)[i]->beam_l_) { - delete beam_p; return 0; } beam_p->add_stem ((*stem_l_arr_p_)[i]); diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index 84ada321e8..2aa4904054 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -6,13 +6,14 @@ (c) 1997, 1998, 1999 Han-Wen Nienhuys Jan Nieuwenhuizen */ + #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" @@ -22,20 +23,6 @@ Bar_engraver::Bar_engraver() do_post_move_processing(); } -bool -Bar_engraver::do_try_music (Music*r_l) -{ - if (Bar_req * b= dynamic_cast (r_l)) - { - if (bar_req_l_ && bar_req_l_->equal_b (b)) // huh? - return false; - - bar_req_l_ = b; - return true; - } - - return false; -} @@ -68,7 +55,7 @@ Bar_engraver::create_bar () 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)); } } @@ -103,8 +90,6 @@ Bar_engraver::request_bar (String requested_type) void Bar_engraver::do_creation_processing () { - create_bar (); - bar_p_->type_str_ = ""; } void @@ -120,26 +105,15 @@ Bar_engraver::do_removal_processing () 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(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_) @@ -169,14 +143,6 @@ Bar_engraver::do_pre_move_processing() } } -void -Bar_engraver::do_post_move_processing() -{ - bar_req_l_ = 0; -} - - - ADD_THIS_TRANSLATOR(Bar_engraver); diff --git a/lily/bar-req-collect-engraver.cc b/lily/bar-req-collect-engraver.cc new file mode 100644 index 0000000000..2eafaed254 --- /dev/null +++ b/lily/bar-req-collect-engraver.cc @@ -0,0 +1,11 @@ +/* + bar-req-collect-engraver.cc -- implement Bar_req_collect_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1999 Han-Wen Nienhuys + + */ + +#include "command-request.hh" + diff --git a/lily/bar.cc b/lily/bar.cc index 95ffc72519..f21d68fbac 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -76,7 +76,7 @@ Bar::do_pre_processing () 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_ = "|"; diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index b34d329d94..5ba4ed9306 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -110,7 +110,7 @@ Beam_engraver::do_process_requests () 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; diff --git a/lily/beam.cc b/lily/beam.cc index 92a92050a2..83d83260ae 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -273,13 +273,12 @@ Beam::get_default_dir () const [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"); @@ -338,7 +337,6 @@ void Beam::solve_slope () { assert (sinfo_.size () > 1); - DEBUG_OUT << "Beam::solve_slope: \n"; Least_squares l; for (int i=0; i < sinfo_.size (); i++) @@ -357,8 +355,8 @@ Beam::check_stemlengths_f (bool set_b) { 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++) @@ -524,8 +522,8 @@ Beam::quantise_dy () 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 (); @@ -550,9 +548,6 @@ Beam::quantise_dy () 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 @@ -566,7 +561,7 @@ Beam::quantise_left_y (bool extend_b) if extend_b then stems must *not* get shorter */ - if (quantisation_ <= NONE) + if (quantisation_ == NONE) return; /* @@ -582,8 +577,8 @@ Beam::quantise_left_y (bool extend_b) 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] @@ -593,7 +588,6 @@ Beam::quantise_left_y (bool extend_b) Real straddle = 0; Real sit = beam_f / 2 - staffline_f / 2; - Real inter = space / 2; Real hang = space - beam_f / 2 + staffline_f / 2; /* @@ -604,7 +598,8 @@ Beam::quantise_left_y (bool extend_b) 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; @@ -612,51 +607,26 @@ Beam::quantise_left_y (bool extend_b) Real beamdy_f = beamdx_f * slope_f_ * internote_f; Array 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]; @@ -670,14 +640,14 @@ Beam::quantise_left_y (bool extend_b) 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); @@ -687,9 +657,6 @@ Beam::set_stemlens () break; } } - - test_pos++; - test_pos %= 4; } void @@ -730,6 +697,8 @@ Beam::do_add_processing () /* beams to go with one stem. + + clean me up. */ Molecule Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const @@ -738,16 +707,15 @@ 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; @@ -759,7 +727,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const 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"); diff --git a/lily/bezier.cc b/lily/bezier.cc index 7a7a1f6833..9acb9004e9 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -33,7 +33,7 @@ /* - UGH. Clean up debugging junk. + UGH. Remove debugging junk. */ @@ -232,7 +232,6 @@ Bezier_bow::calc_f (Real height) { transform (); calc_default (height); - calc_bezier (); Real dy = check_fit_f (); diff --git a/lily/break-algorithm.cc b/lily/break-algorithm.cc index fd5955fc38..40d7b84e97 100644 --- a/lily/break-algorithm.cc +++ b/lily/break-algorithm.cc @@ -31,7 +31,7 @@ Break_algorithm::find_break_indices () const if (all[i]->breakable_b ()) retval.push (i); - if (linelength <=0) + if (linewidth_f_ <=0) while (retval.size () >2) retval.del (1); @@ -49,7 +49,7 @@ Break_algorithm::find_breaks () const if (all[i]->breakable_b ()) retval.push (all[i]); - if (linelength <=0) + if (linewidth_f_ <=0) while (retval.size () >2) retval.del (1); @@ -86,31 +86,18 @@ Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line) 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(curline[i]))->break_penalty_i () >= Break_req::FORCE)) - return false; - } - return true; -} void Break_algorithm::problem_OK () const diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index a391411db9..32e573a68c 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -139,8 +139,6 @@ Break_align_item::do_pre_processing() } - - Break_align_item::Break_align_item () { stacking_dir_ = RIGHT; diff --git a/lily/collision.cc b/lily/collision.cc index c5424710cd..c8e97cc998 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -33,7 +33,7 @@ Collision::do_pre_processing() Array hand (forced_shift ()); Link_array 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); diff --git a/lily/column-x-positions.cc b/lily/column-x-positions.cc index 91c616fcb0..eb4c983701 100644 --- a/lily/column-x-positions.cc +++ b/lily/column-x-positions.cc @@ -7,7 +7,6 @@ */ #include "column-x-positions.hh" -#include "simple-spacer.hh" // ugh #include "real.hh" #include "debug.hh" @@ -15,7 +14,6 @@ Column_x_positions::Column_x_positions() { energy_f_ = infinity_f; satisfies_constraints_b_ = false; - spacer_l_ =0; } Column_x_positions::~Column_x_positions() @@ -23,11 +21,6 @@ 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 diff --git a/lily/command-request.cc b/lily/command-request.cc index ce13bab7fe..35f0cdac4c 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -157,7 +157,6 @@ Key_change_req::Key_change_req () Break_req::Break_req () { - penalty_i_ = 0; } Mark_req::Mark_req (String s) diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 8257150872..01f2ba5a77 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -52,7 +52,7 @@ Crescendo::get_symbol () const 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)); diff --git a/lily/cross-staff.cc b/lily/cross-staff.cc new file mode 100644 index 0000000000..47300e660d --- /dev/null +++ b/lily/cross-staff.cc @@ -0,0 +1,44 @@ +#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 (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 (span_refpoint)); + int item_prio = + align->get_priority ((Score_element*) dynamic_cast (note_refpoint)); + + /* + our staff is lower -> interstaff *= -1 + */ + + if (span_prio < item_prio) + interstaff *= -1; + return interstaff; + } + else return 0.0; +} + diff --git a/lily/engraver.cc b/lily/engraver.cc index f8ed5e5d6a..6121e82eb1 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -12,6 +12,7 @@ #include "engraver-group-engraver.hh" #include "debug.hh" #include "paper-def.hh" +#include "score-element.hh" void Engraver::fill_staff_info (Staff_info&) diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc index dc7f4c22aa..2cedcea834 100644 --- a/lily/extender-spanner.cc +++ b/lily/extender-spanner.cc @@ -61,7 +61,7 @@ void 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 @@ -71,7 +71,7 @@ Extender_spanner::do_post_processing () 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); } diff --git a/lily/gourlay-breaking.cc b/lily/gourlay-breaking.cc index 533092aeee..63a6adc624 100644 --- a/lily/gourlay-breaking.cc +++ b/lily/gourlay-breaking.cc @@ -72,29 +72,17 @@ Gourlay_breaking::do_solve () const */ 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(line[0]->find_broken_piece (RIGHT)); line.top () = dynamic_cast(line.top ()->find_broken_piece (LEFT)); - if (!feasible (line)) - break; - Column_x_positions cp; cp.cols_ = line; @@ -103,13 +91,19 @@ Gourlay_breaking::do_solve () const 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) { @@ -119,19 +113,20 @@ Gourlay_breaking::do_solve () const } } + 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; @@ -150,17 +145,14 @@ Gourlay_breaking::do_solve () const 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_); @@ -188,5 +180,17 @@ Real 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; } diff --git a/lily/hyphen-spanner.cc b/lily/hyphen-spanner.cc index 990c24884b..86c840e7eb 100644 --- a/lily/hyphen-spanner.cc +++ b/lily/hyphen-spanner.cc @@ -71,7 +71,7 @@ void 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 @@ -81,7 +81,7 @@ Hyphen_spanner::do_post_processing () 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); } diff --git a/lily/include/bar-engraver.hh b/lily/include/bar-engraver.hh index bbb26c7c70..64f0063470 100644 --- a/lily/include/bar-engraver.hh +++ b/lily/include/bar-engraver.hh @@ -26,15 +26,13 @@ public: 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_; }; diff --git a/lily/include/bar-req-collector-engraver.hh b/lily/include/bar-req-collector-engraver.hh new file mode 100644 index 0000000000..126d2e0404 --- /dev/null +++ b/lily/include/bar-req-collector-engraver.hh @@ -0,0 +1,26 @@ +/* + bar-req-collect-engraver.hh -- declare + + source file of the GNU LilyPond music typesetter + + (c) 1999 Han-Wen Nienhuys + + */ + +#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 */ + diff --git a/lily/include/beam.hh b/lily/include/beam.hh index 145bbddce0..9e1cbb8346 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -31,7 +31,7 @@ public: 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 stems_; diff --git a/lily/include/break-algorithm.hh b/lily/include/break-algorithm.hh index e0548adf9e..8a25d7b554 100644 --- a/lily/include/break-algorithm.hh +++ b/lily/include/break-algorithm.hh @@ -25,7 +25,7 @@ class Break_algorithm { protected: Paper_score *pscore_l_; - Real linelength; + Real linewidth_f_; /// search all pcols which are breakable. Line_of_cols find_breaks() const; diff --git a/lily/include/column-x-positions.hh b/lily/include/column-x-positions.hh index 1048751401..d124535153 100644 --- a/lily/include/column-x-positions.hh +++ b/lily/include/column-x-positions.hh @@ -13,7 +13,7 @@ typedef Link_array Line_of_cols; struct Column_x_positions { - Simple_spacer * spacer_l_; + Line_of_cols cols_; Array config_; @@ -23,7 +23,6 @@ struct Column_x_positions { ~Column_x_positions(); Column_x_positions(); - void add_paper_column (Paper_column*c); void print() const; }; diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh index b7a29e0f11..ee64d1fe27 100644 --- a/lily/include/command-request.hh +++ b/lily/include/command-request.hh @@ -18,8 +18,7 @@ class Break_req : public Request { public: - enum { DISALLOW = -10000, FORCE = 10000 }; - int penalty_i_; + Real penalty_f_; Break_req (); protected: VIRTUAL_COPY_CONS(Music); diff --git a/lily/include/cross-staff.hh b/lily/include/cross-staff.hh new file mode 100644 index 0000000000..9fdfb97f84 --- /dev/null +++ b/lily/include/cross-staff.hh @@ -0,0 +1,17 @@ +/* + cross-staff.hh -- declare cross staff calc funcs. + + source file of the GNU LilyPond music typesetter + + (c) 1999 Han-Wen Nienhuys + + */ + +#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 */ + diff --git a/lily/include/ly-symbols.hh b/lily/include/ly-symbols.hh index 521fa3d06e..f0f3dd098d 100644 --- a/lily/include/ly-symbols.hh +++ b/lily/include/ly-symbols.hh @@ -64,6 +64,7 @@ DECLARE_LY_SYMBOL(octave_dir); 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); diff --git a/lily/include/music-iterator.hh b/lily/include/music-iterator.hh index f7d9c061e3..d5ca0e0560 100644 --- a/lily/include/music-iterator.hh +++ b/lily/include/music-iterator.hh @@ -28,6 +28,8 @@ class Music_iterator { Interpretation_context_handle handle_; protected: + bool playback_b_; // Should use SCMs + Music const * music_l_; /// ugh. JUNKME @@ -73,9 +75,9 @@ public: 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(); diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index 77942e8027..8615d9cf86 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -30,20 +30,18 @@ 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 *lookup_p_tab_p_; @@ -54,7 +52,6 @@ protected: public: virtual ~Paper_def (); - Array shape_int_a_; Real get_realvar (SCM symbol) const; @@ -67,26 +64,13 @@ public: 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 @@ -95,9 +79,10 @@ public: 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(); diff --git a/lily/include/paper-score.hh b/lily/include/paper-score.hh index c17afddfee..7fad9b8b32 100644 --- a/lily/include/paper-score.hh +++ b/lily/include/paper-score.hh @@ -23,14 +23,7 @@ class Paper_score : public Music_output { - /// crescs etc; no particular order - Link_array span_p_arr_; - - /// other elements - Link_array elem_p_arr_; - Link_array break_helpers_arr_; - - SCM protected_scms_; + SCM element_smob_list_; public: Paper_def *paper_l_; diff --git a/lily/include/score-column.hh b/lily/include/score-column.hh index 9c2097367e..eff9441bf3 100644 --- a/lily/include/score-column.hh +++ b/lily/include/score-column.hh @@ -26,16 +26,11 @@ */ 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); diff --git a/lily/include/score-element.hh b/lily/include/score-element.hh index af9b484faa..25a30532ff 100644 --- a/lily/include/score-element.hh +++ b/lily/include/score-element.hh @@ -35,8 +35,6 @@ Boolean (true iff defined) */ 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 @@ -82,7 +80,6 @@ public: Paper_def *paper_l () const; Lookup const *lookup_l () const; - virtual ~Score_element (); void add_processing (); void substitute_dependency (Score_element*,Score_element*); @@ -108,6 +105,12 @@ public: 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; @@ -144,6 +147,14 @@ protected: virtual Link_array 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_; }; diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index e98e002681..2851980e05 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -20,7 +20,6 @@ class Score_engraver : public Engraver_group_engraver, public Global_translator { Line_of_score * scoreline_l_; - int break_penalty_i_; int breaks_i_; Link_array elem_p_arr_; diff --git a/lily/include/slur.hh b/lily/include/slur.hh index bf61df4b86..2fb4b5ede4 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -15,12 +15,14 @@ */ 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 encompass_arr_; protected: diff --git a/lily/include/timing-engraver.hh b/lily/include/timing-engraver.hh index 00d55c5a46..99621579ec 100644 --- a/lily/include/timing-engraver.hh +++ b/lily/include/timing-engraver.hh @@ -18,9 +18,14 @@ */ 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); }; diff --git a/lily/include/unfolded-repeat-iterator.hh b/lily/include/unfolded-repeat-iterator.hh index 22888cf29a..71adef6598 100644 --- a/lily/include/unfolded-repeat-iterator.hh +++ b/lily/include/unfolded-repeat-iterator.hh @@ -24,6 +24,9 @@ public: */ int done_count_; + + /// unfold everything, or do volta? + bool full_unfold_b_; /// are we busy doing the body? bool do_main_b_; diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index b2017c27af..311397cdd8 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -169,10 +169,13 @@ init_functions () } extern void init_symbols (); +extern void init_smobs (); // guh -> .hh + void init_lily_guile () { init_symbols(); init_functions (); + init_smobs (); } diff --git a/lily/music-iterator.cc b/lily/music-iterator.cc index 9de2bb6af7..e5774c9f32 100644 --- a/lily/music-iterator.cc +++ b/lily/music-iterator.cc @@ -114,7 +114,7 @@ Music_iterator::ok() const } 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; @@ -142,14 +142,15 @@ Music_iterator::static_get_iterator_p (Music const *m) p = new Music_wrapper_iterator; else if (Repeated_music const * n = dynamic_cast (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; @@ -176,7 +177,7 @@ Music_iterator::init_translator (Music const *m, Translator_group *report_l) 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(); @@ -185,6 +186,7 @@ Music_iterator::get_iterator_p (Music const*m) const Music_iterator::Music_iterator() { + playback_b_ = false; first_b_ = true; } diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 620bbb660f..dc99d4d87b 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -108,10 +108,10 @@ Paper_def::line_dimensions_int (int n) const { 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 ()) @@ -120,17 +120,6 @@ Paper_def::line_dimensions_int (int n) const 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 @@ -171,24 +160,6 @@ Paper_def::set_lookup (int i, Lookup*l) } -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 { @@ -198,11 +169,6 @@ 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 diff --git a/lily/paper-score.cc b/lily/paper-score.cc index 0d7cbfdddf..ef983e8053 100644 --- a/lily/paper-score.cc +++ b/lily/paper-score.cc @@ -24,12 +24,11 @@ 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; } @@ -41,40 +40,17 @@ Paper_score::Paper_score (Paper_score const &s) 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 @@ -85,21 +61,20 @@ Paper_score::add_column (Paper_column *p) 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 } @@ -159,8 +134,6 @@ Paper_score::process () 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 ... "); @@ -174,9 +147,6 @@ Paper_score::process () 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; } diff --git a/lily/score-column.cc b/lily/score-column.cc index 6c5209a435..334a35d4ba 100644 --- a/lily/score-column.cc +++ b/lily/score-column.cc @@ -13,7 +13,6 @@ Score_column::Score_column (Moment w) { - break_penalty_i_ = 0; when_ = w; } @@ -22,9 +21,6 @@ Score_column::do_print() const { #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 diff --git a/lily/score-element.cc b/lily/score-element.cc index bdb4f4bd30..9282bfc010 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -44,13 +44,18 @@ Score_element::Score_element() 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_)); @@ -59,6 +64,8 @@ Score_element::Score_element (Score_element const&s) status_i_ = s.status_i_; lookup_l_ = s.lookup_l_; pscore_l_ = s.pscore_l_; + + smobify_self (); } Score_element::~Score_element() @@ -223,6 +230,9 @@ Score_element::output_processing () pscore_l_->outputter_l_->output_molecule (output_p_, o, classname(this)); + + delete output_p_; + output_p_ =0; } /* @@ -424,3 +434,70 @@ Score_element::find_broken_piece (Line_of_score*) const { 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 ("#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 (); +} diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 1c1d39205c..76580cbb38 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -20,7 +20,6 @@ Score_engraver::Score_engraver() { - break_penalty_i_ = 0; scoreline_l_ =0; command_column_l_ =0; musical_column_l_ =0; @@ -33,8 +32,8 @@ Score_engraver::prepare (Moment w) { 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(); } @@ -89,11 +88,7 @@ Score_engraver::announce_element (Score_element_info info) { announce_info_arr_.push (info); info.origin_trans_l_arr_.push (this); - - if (Spanner *s = dynamic_cast (info.elem_l_)) - pscore_p_->typeset_unbroken_spanner (s); - else if (Item *i = dynamic_cast (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 @@ -174,9 +169,8 @@ Score_engraver::typeset_all() 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; @@ -197,10 +191,8 @@ Score_engraver::set_columns (Score_column *new_command_l, 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; @@ -210,10 +202,7 @@ Score_engraver::set_columns (Score_column *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) { @@ -249,16 +238,22 @@ Score_engraver::do_try_music (Music*r) if (!gotcha) { - /* - UGH! THIS IS NOT SYMMETRIC. CLEAN ME UP! - */ if (Break_req* b = dynamic_cast (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; @@ -267,7 +262,7 @@ Score_engraver::do_try_music (Music*r) 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); diff --git a/lily/score.cc b/lily/score.cc index 0c56c31bbe..5f9a2b65c5 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -59,7 +59,9 @@ Score::run_translator (Music_output_def *odef_l) *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(); diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index 590a10c78b..a07381b615 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -90,6 +90,5 @@ Separating_group_spanner::do_substitute_element_pointer (Score_element*o, Separating_group_spanner::Separating_group_spanner() { - set_elt_property (break_helper_only_scm_sym, SCM_BOOL_T); padding_f_ =0.0; } diff --git a/lily/simultaneous-music-iterator.cc b/lily/simultaneous-music-iterator.cc index 1faaa67c13..7f1ff97560 100644 --- a/lily/simultaneous-music-iterator.cc +++ b/lily/simultaneous-music-iterator.cc @@ -31,7 +31,7 @@ Simultaneous_music_iterator::construct_children() Cons *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 */ diff --git a/lily/single-malt-grouping-item.cc b/lily/single-malt-grouping-item.cc index c3804bf2b3..90227b09b2 100644 --- a/lily/single-malt-grouping-item.cc +++ b/lily/single-malt-grouping-item.cc @@ -13,7 +13,6 @@ 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! diff --git a/lily/slur.cc b/lily/slur.cc index 0aa11a6ab4..c8582e8abb 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -24,8 +24,8 @@ #include "debug.hh" #include "box.hh" #include "bezier.hh" -#include "encompass-info.hh" #include "main.hh" +#include "cross-staff.hh" Slur::Slur () { @@ -91,6 +91,51 @@ Note_column_compare (Note_column *const&n1 , Note_column* const&n2) 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 () { @@ -198,36 +243,34 @@ 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 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 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]; } } } @@ -238,25 +281,13 @@ Slur::do_post_processing () 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; @@ -338,22 +369,24 @@ Slur::do_post_processing () 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; } } @@ -365,39 +398,53 @@ Slur::do_post_processing () */ 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 Slur::get_encompass_offset_arr () const { @@ -411,17 +458,6 @@ 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); @@ -429,15 +465,19 @@ Slur::get_encompass_offset_arr () const 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; } /* @@ -450,8 +490,8 @@ Slur::get_encompass_offset_arr () const 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], diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 479855cdcd..967783c294 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -17,7 +17,6 @@ Spacing_spanner::Spacing_spanner () { - set_elt_property (break_helper_only_scm_sym, SCM_BOOL_T); set_elt_property (transparent_scm_sym, SCM_BOOL_T); } diff --git a/lily/staff-sym.cc b/lily/staff-sym.cc index 4c33372710..7ab14e91ba 100644 --- a/lily/staff-sym.cc +++ b/lily/staff-sym.cc @@ -56,7 +56,7 @@ Staff_symbol::do_brew_molecule_p() const - 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))); diff --git a/lily/stem-info.cc b/lily/stem-info.cc index 8578c0e71b..4a9e06e05e 100644 --- a/lily/stem-info.cc +++ b/lily/stem-info.cc @@ -9,24 +9,23 @@ #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; @@ -41,14 +40,8 @@ Stem_info::Stem_info (Stem*s, int 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; @@ -105,8 +98,6 @@ Stem_info::Stem_info (Stem*s, int mult) /* 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; @@ -119,51 +110,15 @@ Stem_info::Stem_info (Stem*s, int mult) 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_; // 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 (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 (beam_refpoint)); - int stem_prio = - align->get_priority (dynamic_cast (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_; } diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index 5f2667bb79..71dead81d1 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -54,7 +54,7 @@ Stem_tremolo::do_brew_molecule_p () const 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? diff --git a/lily/stem.cc b/lily/stem.cc index aef8245546..919969187c 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -370,7 +370,8 @@ Stem::note_delta_f () const 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 (); diff --git a/lily/timing-engraver.cc b/lily/timing-engraver.cc index 953e802f4b..3fa208f15d 100644 --- a/lily/timing-engraver.cc +++ b/lily/timing-engraver.cc @@ -20,3 +20,50 @@ Timing_engraver::fill_staff_info (Staff_info &inf) 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 (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_; + } +} diff --git a/lily/unfolded-repeat-iterator.cc b/lily/unfolded-repeat-iterator.cc index cbc5e008a6..901d69f80b 100644 --- a/lily/unfolded-repeat-iterator.cc +++ b/lily/unfolded-repeat-iterator.cc @@ -49,7 +49,7 @@ Unfolded_repeat_iterator::next_element () { done_mom_ += mus->repeat_body_p_->length_mom (); - if (!mus->volta_fold_b_) + if (full_unfold_b_) done_count_ ++; if (alternative_cons_l_) @@ -57,7 +57,7 @@ Unfolded_repeat_iterator::next_element () 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; @@ -73,20 +73,20 @@ Unfolded_repeat_iterator::next_element () { 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 { @@ -114,6 +114,8 @@ void Unfolded_repeat_iterator::construct_children () { Repeated_music const* mus =dynamic_cast (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; diff --git a/ly/declarations.ly b/ly/declarations.ly index 3b44423d82..a6e51b9395 100644 --- a/ly/declarations.ly +++ b/ly/declarations.ly @@ -20,8 +20,8 @@ bigger = 1 center=0 -break = \penalty 10000; -nobreak = \penalty -10000; +break = \penalty -1000000; +nobreak = \penalty 1000000; major = 0 minor = 3 diff --git a/ly/engraver.ly b/ly/engraver.ly index fadc695390..1e8acfac43 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -188,7 +188,8 @@ StaffGroupContext= \translator { }; \translator { \StaffGroupContext } -\translator{ +% UGH! JUNKME +LyricsVoiceContext= \translator{ \type "Engraver_group_engraver"; \consistsend "Axis_group_engraver"; @@ -197,9 +198,10 @@ StaffGroupContext= \translator { \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. @@ -207,7 +209,8 @@ StaffGroupContext= \translator { \consistsend "Axis_group_engraver"; \accepts "LyricVoice"; -} +}; +\translator { \LyricsContext } \translator{ \type "Engraver_group_engraver"; @@ -271,13 +274,14 @@ ScoreContext = \translator { \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"; diff --git a/ly/params.ly b/ly/params.ly index f0e9893b8d..96b0057fa8 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -9,12 +9,11 @@ paperfile = \papersize + ".ly"; 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 @@ -153,8 +152,8 @@ tie_y_gap = 0.25 * \interline; 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. @@ -178,9 +177,6 @@ slur_rc_factor = 2.4; % ugh notewidth = (\quartwidth + \wholewidth) / 2.0; -% ugh -rulethickness = \staffline; - gourlay_energybound = 100000.; %{ Maximum number of measures per line to try when using Gourlay @@ -200,23 +196,23 @@ barthick_thin = 0.1*\interline; %} -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; @@ -228,12 +224,17 @@ mmrest_x_minimum = 1.4*\staffheight; % 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; diff --git a/ly/property.ly b/ly/property.ly index 351e34d008..ea41ac9656 100644 --- a/ly/property.ly +++ b/ly/property.ly @@ -66,17 +66,13 @@ voicefour = % 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 = @@ -86,15 +82,15 @@ 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 = diff --git a/make/toplevel.make.in b/make/toplevel.make.in index 9dce8fb503..a311af2b92 100644 --- a/make/toplevel.make.in +++ b/make/toplevel.make.in @@ -9,14 +9,13 @@ depth = . # 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) diff --git a/scm/lily.scm b/scm/lily.scm index 9c9ae7a896..8eafa4922a 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -267,7 +267,10 @@ (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 diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex index da9907c536..084d51ce55 100644 --- a/tex/lily-ps-defs.tex +++ b/tex/lily-ps-defs.tex @@ -8,13 +8,7 @@ % 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 @@ -23,7 +17,7 @@ } % \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 -- 2.39.5