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 =
+This file documents bugs which were "re-introduced" in various pl's
+
+pl69
+ * slurs.ly
+
+pl68:
+ * opening rests of wohltemperirt
+
+
+ * midi broken
=over 4
-=item -
+=item *
composing
-=item -
+=item *
engraving
-=item -
+=item *
playing
-=item -
+=item *
sequencing
-=item -
+=item *
interchanging music
=over 4
-=item -
+=item *
arranging
-=item -
+=item *
performing
=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
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
=over 4
-=item *
+=item *
Gather a moderate number of test users and hackers
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
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
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
=head2 Unknown
+=item MusiCopy, ?
+
+Ohio State university.
+
=item Berlioz, http://www.bsi.fr/~montel/
+
+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
- 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
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
* enter script priority
- * a Hands on tutorial [HKN]
+ * a Hands on tutorial
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
- 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
PARSER
* Duration -> Musical_duration, typedef Rational Duration?
-HKN buglist:
-
-tekst staat erg ver van notenbalken af
-
BUGS
* fix mysterious Flex malloc bug
* move towards incremental algorithms.
-
* design meta-language like TeX and Metafont
local $base="lilypond/";
local @examples=("multi", "wohltemperirt" ,"standchen", "toccata-fuga-E",
- "scsii-menuetto", "collisions", "cadenza", "scales");
+ "scsii-menuetto", "collisions", "cadenza", "scales", "book");
# rhythm, scales,
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";
}
--- /dev/null
+%{
+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;
+ }
+}
--- /dev/null
+% 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}
\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 | % :|
}
accompany = \melodic {
- \clef \bass;
+ \clef "bass";
\octave'c;
\duration 4;
c4 c' | e' c' | f' c' | e' c' |
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 =
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;
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++) {
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();
assert(end->breakable_b());
#endif
}
+
+Array<Col_hpositions>
+Break_algorithm::solve()const
+{
+
+ return do_solve();
+}
+
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;
/// does curline fit on the paper?
bool feasible(Line_of_cols)const;
- virtual Array<Col_hpositions> 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<Col_hpositions> do_solve()const=0;
+public:
+ Break_algorithm(PScore&);
+
+ /// check if the spacing/breaking problem is well-stated
+ void problem_OK()const;
+
+ Array<Col_hpositions> solve()const;
};
/// wordwrap type algorithm: move to next line if current is optimal.
struct Word_wrap : Break_algorithm {
- virtual Array<Col_hpositions> solve();
+ virtual Array<Col_hpositions> do_solve()const;
Word_wrap(PScore&);
};
#endif // BREAK_HH
struct Slur_engraver;
struct Slur_req;
struct Spacing_req ;
+struct Spacing_problem;
struct Span_dynamic_req;
struct Span_req;
struct Spanner;
*/
Array<Col_hpositions>
-Word_wrap::solve()
+Word_wrap::do_solve()const
{
problem_OK();
iter_top(pscore_.cols,curcol);
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
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++
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 <hanwen@stack.nl>
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
}
-% 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.