From: Han-Wen Nienhuys Date: Mon, 21 Jul 1997 20:33:55 +0000 (+0200) Subject: release: 0.0.75 X-Git-Tag: release/0.0.75 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=aa2bfa145710e9008db143e4ddc567fa418d35e5;p=lilypond.git release: 0.0.75 --- diff --git a/.version b/.version index ef1a729850..53178afdc6 100644 --- a/.version +++ b/.version @@ -1,7 +1,7 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 0 -TOPLEVEL_PATCH_LEVEL = 74 +TOPLEVEL_PATCH_LEVEL = 75 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf -TOPLEVEL_MY_PATCH_LEVEL = pre.jcn1 +TOPLEVEL_MY_PATCH_LEVEL = diff --git a/BUGS b/BUGS index e69de29bb2..f246b3a96b 100644 --- a/BUGS +++ b/BUGS @@ -0,0 +1,10 @@ +This file documents bugs which were "re-introduced" in various pl's + +pl69 + * slurs.ly + +pl68: + * opening rests of wohltemperirt + + + * midi broken diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod index 98b8b3600d..f487b5da8f 100644 --- a/Documentation/gnu-music.pod +++ b/Documentation/gnu-music.pod @@ -12,23 +12,23 @@ Provide musicians with free software for =over 4 -=item - +=item * composing -=item - +=item * engraving -=item - +=item * playing -=item - +=item * sequencing -=item - +=item * interchanging music @@ -38,11 +38,11 @@ and possibly for =over 4 -=item - +=item * arranging -=item - +=item * performing @@ -75,23 +75,23 @@ should be. =over 4 -=item * high-quality +=item high-quality (cf TeX), from engraving point of view -=item * high-quality +=item high-quality (cf Emacs) from software point of view: like all GNU software, it should have no limits, be fast, etc. -=item * tweakable +=item tweakable Printed music has a lot of styles, and special symbols. It may be unfeasible to provide and maintain lots of code that is hardwired into the system. The tools should be extensible/programmable like Emacs and TeX -=item * easy to use. +=item easy to use. That is, for technical users (that can read a manual). The learning curve should be as easy as possible but not at the expense of comfort @@ -108,7 +108,7 @@ of use and power. Preferably in Metafont, suited to both screen display and use on paper; This is because the copyright heritage of {Opus,Musix}tex is unclear. -=item A typesetting engine. +=item A typesetting engine A system with rules on how to set properties of items to be printed (up/down directions, breaking, etc) LilyPond provides one, but it is @@ -192,7 +192,7 @@ recognizing input. =over 4 -=item * +=item * Gather a moderate number of test users and hackers @@ -208,7 +208,7 @@ Libs for r/w MIDI Think about interfaces for components. -=item * +=item * Find sponsors. This project will take a long time, and in its infant stages, having a hard and small core which does a lot of work, is more diff --git a/Documentation/lilyliterature.pod b/Documentation/lilyliterature.pod index 8ab344a029..dd8c40f20d 100644 --- a/Documentation/lilyliterature.pod +++ b/Documentation/lilyliterature.pod @@ -81,34 +81,66 @@ John S. Gourlay. ``Spacing a Line of Music,'' Technical Report OSU-CISRC-10/87-TR35, Department of Computer and Information Science, The Ohio State University, 1987. +[Algorithm to generate spacing in polyphonic music, tailored for use +with MusiCopy HWN] + +Allen Parish, Wael A. Hegazy, John S. Gourlay, Dean K. Roush and +F. Javier Sola. ``MusiCopy: An automated Music Formatting System''. +Technical Report OSU-CISRC-10/87-TR29, Department of Computer and +Information Science, The Ohio State University, 1987. + +[A brief overview of MusiCopy HWN] + John S. Gourlay, A. Parrish, D. Roush, F. Sola, Y. Tien. ``Computer Formatting of Music,'' Technical Report OSU-CISRC-2/87-TR3, Department of Computer and Information Science, The Ohio State University, 1987. +[This paper discusses the development of algorithms for the formatting +of musical scores (from abstract). It also appeared at PROTEXT III, +Ireland 1986] + Wael A. Hegazy. ``On the Implementation of the MusiCopy Language Processor,'' Technical Report OSU-CISRC-10/87-TR34, Department of Computer and Information Science, The Ohio State University, 1987. +[Describes the "parser" which converts MusiCopy MDL to MusiCopy +Simultaneities & columns HWN] + +Dean K. Roush. ``Using MusiCopy''. Technical Report +OSU-CISRC-18/87-TR31, Department of Computer and Information Science, +The Ohio State University, 1987 + +[User manual of MusiCopy. Includes an impressive example piece. HWN.] + A. Parrish and John S. Gourlay. ``Computer Formatting of Musical Simultaneities,'' Technical Report OSU-CISRC-10/87-TR28, Department of Computer and Information Science, The Ohio State University, 1987. +[Placement of balls, stems, dots which occur at the same moment +("Simultaneity") HWN] + D. Roush. ``Music Formatting Guidelines,'' Technical Report OSU-CISRC-3/88-TR10, Department of Computer and Information Science, The Ohio State University, 1988. +[Rules on formatting music formulated for use in computers HWN] + F. Sola. ``Computer Design of Musical Slurs, Ties and Phrase Marks,'' Technical Report OSU-CISRC-10/87-TR32, Department of Computer and Information Science, The Ohio State University, 1987. +[Overview of a procedure for generating slurs HWN] + F. Sola and D. Roush. ``Design of Musical Beams,'' Technical Report OSU-CISRC-10/87-TR30, Department of Computer and Information Science, The Ohio State University, 1987. +[Calculating beam slopes HWN] + John. S. Gourlay. ``A language for music printing'', Communications of the ACM, Vol. 29(5), 388--401, 1986. -[This paper describes a vapourware music setting system and an input +[This paper describes the MusiCopy musicsetting system and an input language to go with it. HWN] Dorothea Blostein and Lippold Haken, ``The Lime Music Editor: A Diagram diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod index bfd965afb0..eb32c65b68 100644 --- a/Documentation/other-packages.pod +++ b/Documentation/other-packages.pod @@ -17,7 +17,8 @@ An alpha version notation editor for X. Source available on request. A Notation editor/Sequencer for X (win95 port underway). Outputs musictex. -=item Common Notation, http://www-ccrma.stanford.edu/ccrma/Software/cmn/cmn.html +=item Common Notation, +http://www-ccrma.stanford.edu/CCRMA/Software/cmn/cmn.html A versatile lisp package. Part of the Common Music system. Input is in Lisp. It needs Adobe fonts @@ -113,5 +114,9 @@ A shareware windows package =head2 Unknown +=item MusiCopy, ? + +Ohio State university. + =item Berlioz, http://www.bsi.fr/~montel/ diff --git a/NEWS b/NEWS index cd728f5bdf..d013e18266 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,8 @@ + +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 @@ -7,13 +12,16 @@ pl 72pre.jcn1 - 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 diff --git a/TODO b/TODO index 790be44516..cfb9f4229a 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,19 @@ Features you cannot find in the doco as working, should be mentioned here. - + This is an assorted collection of stuff that will be done, might be done, or is an idea that I want to think about Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr + * script for unified musicological source: + + blah blah latex + \begin{mudela} c4 d4 e4 f4 + \end{mudela} + + * lyrics with chords broken + * Redo MIDI output to use Translators - remember more horizontal info than melodics: - tempo change @@ -33,7 +41,7 @@ grep for TODO and ugh/ugr * enter script priority - * a Hands on tutorial [HKN] + * a Hands on tutorial PROJECTS @@ -41,7 +49,8 @@ PROJECTS - adapt for multiple font sizes. - make separate class for Grace_*_engravers (which is at Voice_gravs level) - - move stem, beam, slur into baseclass to adapt for (fixed size) grace notes. + - move stem, beam, slur into baseclass to adapt for (fixed + size) grace notes. * accidentals per Voice_group @@ -95,6 +104,7 @@ PROJECTS - hack up mf sources for decent spacing info (and then read AFM/TFM directly, for text too) - use MF to generate rules. + - rewrite : make a metafont iso font * lines: - Ledger lines, should be separate item: Ledger_lines, Ledger_lines @@ -119,10 +129,6 @@ PROJECTS PARSER * Duration -> Musical_duration, typedef Rational Duration? -HKN buglist: - -tekst staat erg ver van notenbalken af - BUGS * fix mysterious Flex malloc bug @@ -359,5 +365,4 @@ IDEAS * move towards incremental algorithms. - * design meta-language like TeX and Metafont diff --git a/bin/make_website b/bin/make_website index 4fec78309e..89fafd7c24 100755 --- a/bin/make_website +++ b/bin/make_website @@ -72,7 +72,7 @@ sub my_system local $base="lilypond/"; local @examples=("multi", "wohltemperirt" ,"standchen", "toccata-fuga-E", - "scsii-menuetto", "collisions", "cadenza", "scales"); + "scsii-menuetto", "collisions", "cadenza", "scales", "book"); # rhythm, scales, @@ -108,7 +108,7 @@ sub gen_examples foreach $a (@examples) { $texfile="lelie"; $tex = "tex $texfile"; - if ($a eq "standchen" || $a eq "scsii-menuetto" ) { + if ($a eq "standchen" || $a eq "scsii-menuetto" || $a eq "book" ) { $tex = "latex $a"; $texfile = "$a"; } diff --git a/input/book.ly b/input/book.ly new file mode 100644 index 0000000000..534fe34f59 --- /dev/null +++ b/input/book.ly @@ -0,0 +1,49 @@ +%{ +MudelaHeader + + filename: book.ly + title: + description: demonstrate inclusion of Lily output into (La)TeX +documents + composers: + entered-by: + copyright: + + Tested Features: natural width +EndMudelaHeader +%} +\version "0.0.61"; + + + +\score {\melodic { \clef "bass"; + [c8 g e' d'] [e' g e' g] + [c a f' e'] [f' a f' a] + } + + \paper { + \output "bach1.out"; + linewidth =-1.0\cm; + } +} + +\score {\melodic { \clef "bass"; + [c8() g e'() d'] [e'( g e') g] + [c() a f' ()e'] [f'( a f') a] + } + \paper { + \output "bach2.out"; + linewidth= -1.0\cm; + } +} + +\score {\melodic { \clef "bass"; + [c8 g( e' d'] [)e' g( e' )g] + [c a( f' e'] [)f' a( f' )a] + } + \paper { + \output "bach3.out"; + linewidth = -1.0\cm; + unitspace = 2.0\cm; + } +} diff --git a/input/book.tex b/input/book.tex new file mode 100644 index 0000000000..9a1e16453d --- /dev/null +++ b/input/book.tex @@ -0,0 +1,67 @@ +% should be scriptified, probably +\documentclass{article} +\input lilyponddefs +\title{Bach's Cello suites} + +\author{A.U.Thor} +\begin{document} +\maketitle + +\section{Banjo} + +It is normal to have some text around various figures. Such as this +text which is merely to add some weight to the page. In het midden van +mei/Als de nachtegaals zingen/En de avondglans huwt/aan de morgense schijn. +Als de schuchtere geur/ van de bloeiende seringen/zich mengt met de +geur/van de late jasmijn. Op een tochtje langs de rijn. + +\def\EndLilyPondOutput{} +\begin{figure}[h] + \begin{center} + \leavevmode + \input bach1.out + \caption{original} + \end{center} +\end{figure} + +Voglio centocinquante gramme di gorgonzola, tre di questi pannini e due bionde +ragazze con ciocolatta e panna, per favore. Presto! Non posso parlare +o scrivere la lingua italiana, ma provo. + +\section{Hammond-organ and electric guitar} + +It is normal to have some text around various figures. Such as this +text which is merely to add some weight to the page. In het midden van +mei/Als de nachtegaals zingen/En de avondglans huwt/aan de morgense schijn. +Als de schuchtere geur/ van de bloeiende seringen/zich mengt met de +geur/van de late jasmijn. Op een tochtje langs de rijn. + +\begin{figure}[h] + \begin{center} + \leavevmode +\input bach2.out + + \caption{interpretation 1} + \end{center} +\end{figure} + +It is normal to have some text around various figures. Such as this +text which is merely to add some weight to the page. In het midden van +mei/Als de nachtegaals zingen/En de avondglans huwt/aan de morgense schijn. +Als de schuchtere geur/ van de bloeiende seringen/zich mengt met de +geur/van de late jasmijn. Op een tochtje langs de rijn. + +\begin{figure}[h] + \begin{center} + \leavevmode +\input bach3.out + + \caption{interpretation 2} + \end{center} +\end{figure} + +Voglio centocinquante gramme di gorgonzola, tre di questi pannini e due bionde +ragazze con ciocolatta e panna, per favore. Presto! Non posso parlare +o scrivere la lingua italiana, ma provo. + +\end{document} diff --git a/input/twinkle.ly b/input/twinkle.ly index e3f0619b63..80b6ac10ae 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -17,7 +17,7 @@ EndMudelaHeader \version "0.0.61"; melody = \melodic{ - \clef\violin; + \clef violin; \octave c'; c4 c | g g | a a | g g | f f | e e | d d8.( e16 | )c2 | % :| @@ -31,7 +31,7 @@ melody = \melodic{ } accompany = \melodic { - \clef \bass; + \clef "bass"; \octave'c; \duration 4; c4 c' | e' c' | f' c' | e' c' | diff --git a/lily/.version b/lily/.version index 3175b2b620..ae05f26ac5 100644 --- a/lily/.version +++ b/lily/.version @@ -1,7 +1,7 @@ MAJOR_VERSION = 0 MINOR_VERSION = 0 -PATCH_LEVEL = 74 +PATCH_LEVEL = 75 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf -MY_PATCH_LEVEL = pre.jcn1 +MY_PATCH_LEVEL = diff --git a/lily/break.cc b/lily/break.cc index 0f0aabe681..826346f4b3 100644 --- a/lily/break.cc +++ b/lily/break.cc @@ -20,22 +20,35 @@ Line_of_cols Break_algorithm::find_breaks() const { Line_of_cols retval; - for (iter_top(pscore_.cols,c); c.ok(); c++) + for (iter_top(pscore_.cols,c); c.ok(); c++) { if (c->breakable_b()) retval.push(c); - assert(retval.top() == pscore_.cols.bottom().ptr()); + } + if ( linelength <=0) + while ( retval.size() >2) + retval.del(1); + return retval; } +void +Break_algorithm::generate_spacing_problem(Line_of_cols curline, Spacing_problem & sp)const +{ + sp.add_column(curline[0], true, 0.0); + for (int i=1; i< curline.size()-1; i++) + sp.add_column(curline[i]); + + if ( linelength > 0) + sp.add_column(curline.top(), true, linelength); + else + sp.add_column(curline.top()); +} Col_hpositions Break_algorithm::stupid_solution(Line_of_cols curline)const { Spacing_problem sp; - sp.add_column(curline[0], true, 0.0); - for (int i=1; i< curline.size()-1; i++) - sp.add_column(curline[i]); - sp.add_column(curline.top(), true, linelength); + generate_spacing_problem(curline, sp); Col_hpositions colhpos; colhpos.cols = curline; colhpos.energy = INFTY; @@ -49,11 +62,7 @@ Col_hpositions Break_algorithm::solve_line(Line_of_cols curline) const { Spacing_problem sp; - - sp.add_column(curline[0], true, 0.0); - for (int i=1; i< curline.size()-1; i++) - sp.add_column(curline[i]); - sp.add_column(curline.top(), true, linelength); + generate_spacing_problem(curline, sp); // misschien moeven uit Spacing_problem? for (iter_top(pscore_.suz,i); i.ok(); i++) { @@ -80,6 +89,9 @@ Break_algorithm::Break_algorithm(PScore&s) bool Break_algorithm::feasible(Line_of_cols curline) const { + if (linelength <= 0) + return true; + Real l =0; for (int i=0; i < curline.size(); i++) l +=curline[i]->width().length(); @@ -99,3 +111,11 @@ Break_algorithm::problem_OK() const assert(end->breakable_b()); #endif } + +Array +Break_algorithm::solve()const +{ + + return do_solve(); +} + diff --git a/lily/include/acceptor.hh b/lily/include/acceptor.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/break.hh b/lily/include/break.hh index 85b5ef0145..703f9bb816 100644 --- a/lily/include/break.hh +++ b/lily/include/break.hh @@ -20,17 +20,12 @@ a like. A "parindent", caching of breakpoints */ -struct Break_algorithm { +class Break_algorithm { + void generate_spacing_problem(Line_of_cols,Spacing_problem&)const; +protected: PScore &pscore_; Real linelength; - /* *************** */ - - Break_algorithm(PScore&); - - /// check if the spacing/breaking problem is well-stated - void problem_OK()const; - /// search all pcols which are breakable. Line_of_cols find_breaks() const; @@ -40,16 +35,23 @@ struct Break_algorithm { /// does curline fit on the paper? bool feasible(Line_of_cols)const; - virtual Array solve()=0; /** generate a solution with no regard to idealspacings or constraints. should always work */ Col_hpositions stupid_solution(Line_of_cols) const; + virtual Array do_solve()const=0; +public: + Break_algorithm(PScore&); + + /// check if the spacing/breaking problem is well-stated + void problem_OK()const; + + Array solve()const; }; /// wordwrap type algorithm: move to next line if current is optimal. struct Word_wrap : Break_algorithm { - virtual Array solve(); + virtual Array do_solve()const; Word_wrap(PScore&); }; #endif // BREAK_HH diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 86573e0001..ab3549f1f5 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -154,6 +154,7 @@ struct Slur; struct Slur_engraver; struct Slur_req; struct Spacing_req ; +struct Spacing_problem; struct Span_dynamic_req; struct Span_req; struct Spanner; diff --git a/lily/wordwrap.cc b/lily/wordwrap.cc index f0ddf035e3..5aefed16f3 100644 --- a/lily/wordwrap.cc +++ b/lily/wordwrap.cc @@ -17,7 +17,7 @@ */ Array -Word_wrap::solve() +Word_wrap::do_solve()const { problem_OK(); iter_top(pscore_.cols,curcol); diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 991a9f5987..3105802e7e 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -2,8 +2,8 @@ Begin3 Title: LilyPond -Version: 0.0.74pre -Entered-date: 07/08/97 +Version: 0.0.75 +Entered-date: 07/22/97 Description: LilyPond is a program which converts a music-script (mudela) into TeX output, or MIDI to produce multi-staff scores. Features include multiple meters, clefs, keys, lyrics, versatile input-language, cadenzas @@ -13,7 +13,7 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: pcnov095.win.tue.nl /pub/lilypond/ - 300k lilypond-0.0.74pre.tar.gz + 300k lilypond-0.0.75.tar.gz Alternate-site: Original-site: Platform: unix/win32, GNU C++ diff --git a/make/lilypond.spec b/make/lilypond.spec index 9d83eea9c2..91029f1173 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.0.74pre +Version: 0.0.75 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.74pre.tar.gz +Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.75.tar.gz Summary: A preprocessor to make TeX typeset music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys @@ -27,7 +27,7 @@ rm -rf $RPM_BUILD_ROOT strip lily/out/lilypond mi2mu/out/mi2mu make prefix="$RPM_BUILD_ROOT/usr" install %files -%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela.text Documentation/out/other-packages.text input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif +%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/faq.text Documentation/out/gnu-music.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilyliterature.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela.text Documentation/out/other-packages.text input/beams.ly input/book.ly input/book.tex input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif /usr/bin/convert-mudela /usr/bin/lilypond /usr/lib/libflower.so diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 9607702de1..bbfef12dfc 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -211,12 +211,7 @@ } -% redefine if not happy with interline spacing -% -\def\interstaffline{% - \vskip 10pt -} -\def\interscoreline{\beauty} +\def\interscoreline{\vskip 16pt} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % big fat marks, if errors are detected.