From c8e6f4f3b9c4308d88d844909e645fc5ff437fa8 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 11 Nov 1997 01:23:35 +0100 Subject: [PATCH] release: 0.1.30 --- AUTHORS.text | 2 +- Documentation/gnu-music.pod | 4 - Documentation/links.pod | 4 + Documentation/mudela-book.pod | 2 +- INSTALL.text | 12 +- NEWS | 6 + README | 9 +- TODO | 38 +++--- VERSION | 2 +- init/feta16.ly | 8 +- init/feta20.ly | 8 +- init/table16.ly | 2 +- input/standchen.ly | 46 +++---- lily/VERSION | 2 +- lily/bar-column-grav.cc | 38 +++--- lily/crescendo.cc | 3 +- lily/dynamic-grav.cc | 5 +- lily/include/staff-side.hh | 43 +++---- lily/include/staff-sym.hh | 2 + lily/lexer.l | 2 +- lily/script-grav.cc | 5 +- lily/script.cc | 4 +- lily/staff-side.cc | 76 ++++-------- lily/staff-sym.cc | 18 ++- lily/text-item.cc | 2 +- make/debian/watch | 2 +- make/lelievijver.lsm | 8 +- make/lilypond.lsm | 12 +- make/lilypond.lsm.in | 4 +- make/lilypond.spec | 4 +- mf/autometric.mf | 5 + mf/feta-bolletjes.mf | 11 +- mf/feta-generic.mf | 4 +- mf/feta-klef.mf | 222 +++++++++++++++++++++++++--------- mf/feta-schrift.mf | 10 +- mf/feta-toevallig.mf | 14 +++ tex/feta16.tex | 4 +- tex/feta20.tex | 4 +- 38 files changed, 392 insertions(+), 255 deletions(-) diff --git a/AUTHORS.text b/AUTHORS.text index dfec8605b5..428689b5ca 100644 --- a/AUTHORS.text +++ b/AUTHORS.text @@ -61,6 +61,6 @@ CCCCOOOONNNNTTTTRRRRIIIIBBBBUUUUTTTTOOOORRRRSS -27/Oct/97 LilyPond 0.1.29 1 +27/Oct/97 LilyPond 0.1.30 1 diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod index a2a9ee0f05..2d52c81195 100644 --- a/Documentation/gnu-music.pod +++ b/Documentation/gnu-music.pod @@ -231,7 +231,3 @@ Francois Pinard. This history note is probably biased in some way, because I wrote it. The rest of this document is also entirely mine, and is not meant to reflect anyone else's opinion. - - -For metacomposing, see New Scientist, aug 9 1997, or -http://art.ucsc.edu/faculty/cope/home diff --git a/Documentation/links.pod b/Documentation/links.pod index e8044573e1..e0b5c61d76 100644 --- a/Documentation/links.pod +++ b/Documentation/links.pod @@ -24,6 +24,10 @@ The documentation system for C++ sources, which the LilyPond sources use. An enormous collection of music related URLs +=item http://art.ucsc.edu/faculty/cope/home + +See New Scientist, aug 9 1997. + =back =head2 Ftp diff --git a/Documentation/mudela-book.pod b/Documentation/mudela-book.pod index b19009b172..f44c60b354 100644 --- a/Documentation/mudela-book.pod +++ b/Documentation/mudela-book.pod @@ -4,7 +4,7 @@ mudela-book - integrate LaTeX and mudela =head1 SYNOPSIS - convert-mudela [options] [file] + mudela-book [options] [file] =head1 DESCRIPTION diff --git a/INSTALL.text b/INSTALL.text index aaed4e5d25..93fd8e0faa 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -20/Oct/97 LilyPond 0.1.29 1 +20/Oct/97 LilyPond 0.1.30 1 @@ -127,7 +127,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -20/Oct/97 LilyPond 0.1.29 2 +20/Oct/97 LilyPond 0.1.30 2 @@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -20/Oct/97 LilyPond 0.1.29 3 +20/Oct/97 LilyPond 0.1.30 3 @@ -259,7 +259,7 @@ IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG -20/Oct/97 LilyPond 0.1.29 4 +20/Oct/97 LilyPond 0.1.30 4 @@ -325,7 +325,7 @@ RRRREEEEDDDDHHHHAAAATTTT LLLLIIIINNNNUUUUXXXX -20/Oct/97 LilyPond 0.1.29 5 +20/Oct/97 LilyPond 0.1.30 5 @@ -391,6 +391,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -20/Oct/97 LilyPond 0.1.29 6 +20/Oct/97 LilyPond 0.1.30 6 diff --git a/NEWS b/NEWS index 0868b00741..7710007f24 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,10 @@ +pl 30 + - feta: G clef. + - scripts now do relative coords (fixes lyrics + barnumber bug) + - bf: Lyrics lexer mode + - bf: bass clef +******** pl 29 - feta: bass clef, bf: dynamics, bf: 64th flag diff --git a/README b/README index 1f3b542c66..fc5a277cb2 100644 --- a/README +++ b/README @@ -1,9 +1,12 @@ This is the toplevel README to LilyPond -*-Text-*- -GNU LilyPond which converts music definition files into visual or -audio output: it can typeset formatted sheet music in TeX and -and (mechanical) perfomances to MIDI files. +LilyPond is the GNU Project music typesetter. The program generates +visual or auditive output from a music definition file: it can typeset +formatted sheet music to a TeX file and play (mechanical) performances +to a MIDI file. Features include multiple staffs, meters, clefs, +keys, lyrics, versatile input-language, cadenzas, beams, slurs, +triplets. 1. VERSIONING diff --git a/TODO b/TODO index 5eb9af3245..6038253a3f 100644 --- a/TODO +++ b/TODO @@ -6,6 +6,8 @@ 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 +0.2: + * LILYSOURCEDIR * documentation @@ -14,15 +16,17 @@ grep for TODO and ugh/ugr * standchen: warning: Excentric column (Meter dims?) - * optimal pagebreaking. + * naming Mozarella, Madeira, Muella? - * put errorlevel in Input class + * versioning for Feta - * AFM for font input? + * bf: abbrevs over whole note - * naming Mozarella, Madeira, Muella? + * Score_bar/Piano_braces, are *not* ordinary bars - * bf: abbrevs over whole note +STUFF + + * give Items/Spanners access to unbroken originals * scoping for properties @@ -47,9 +51,13 @@ grep for TODO and ugh/ugr - MIDI instrument - staff title - * give Items/Spanners access to unbroken originals + * optimal pagebreaking. + + * put errorlevel in Input class + + * AFM for font input? + - * Score_bar/Piano_braces, are *not* ordinary bars 3RD PARTY BUGS: * Rational infty(HUGE_VAL) on glibc / w32 @@ -113,19 +121,6 @@ languages: - ABC? - SMDL? - * placement of bar-numbers - -****************** - - \score { < - \melodic \type Staff { c'4 g'4 } - \lyric { \id "Lyric" ""; hello4 bye4 < a chord > } - \lyric { \id "Lyric" ""; bye4 hello4 } - \melodic { \id "Staff" ""; c'4 g'4 } - > } - -****************** - * add to MIDI output: - tempo change - repeat @@ -275,6 +270,7 @@ SMALLISH PROJECTS * write Dynamic_line (to group dynamics horizontally) * use Real for all y positions. + - use translate_axis( .. ,Y_AXIS) * half-sharps, half-flats @@ -353,7 +349,7 @@ Mudela. * move MIDI stuff (including Quantization) to a ANSI C libmidi library. - * use an embedded language: Python + * use an embedded language: Python, Scheme for: - Score_elems - Engraver diff --git a/VERSION b/VERSION index db68ff0c0d..9692368e96 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 29 +TOPLEVEL_PATCH_LEVEL = 30 TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/init/feta16.ly b/init/feta16.ly index fe4aff5ab3..8c4a51080b 100644 --- a/init/feta16.ly +++ b/init/feta16.ly @@ -1,5 +1,5 @@ % generated automatically by mf-to-table.py version 0.4 -% on Wed Nov 5 23:51:17 1997 +% on Tue Nov 11 13:31:20 1997 % Do not edit % input from out/feta16.log % name=\symboltables { @@ -67,7 +67,9 @@ "d6" "\\dsixtyfourthflag" -0.20\pt 4.54\pt -0.20\pt 17.66\pt } "klef" = \table { - "bass" "\\bassclef" -0.00\pt 10.80\pt -10.00\pt 4.00\pt - "bass_change" "\\cbassclef" -0.00\pt 8.64\pt -8.00\pt 3.20\pt + "bass" "\\bassclef" 1.20\pt 12.80\pt -10.00\pt 4.00\pt + "bass_change" "\\cbassclef" 0.96\pt 10.24\pt -8.00\pt 3.20\pt + "violin" "\\violinclef" 0.11\pt 10.55\pt -12.00\pt 20.00\pt + "violin_change" "\\cviolinclef" -0.23\pt 8.12\pt -9.60\pt 16.00\pt } % } % $name diff --git a/init/feta20.ly b/init/feta20.ly index 144f3f45f0..dccf7ba6bd 100644 --- a/init/feta20.ly +++ b/init/feta20.ly @@ -1,5 +1,5 @@ % generated automatically by mf-to-table.py version 0.4 -% on Wed Nov 5 23:51:26 1997 +% on Tue Nov 11 13:31:29 1997 % Do not edit % input from out/feta20.log % name=\symboltables { @@ -67,7 +67,9 @@ "d6" "\\dsixtyfourthflag" -0.25\pt 5.68\pt -0.25\pt 22.08\pt } "klef" = \table { - "bass" "\\bassclef" -0.00\pt 13.50\pt -12.50\pt 5.00\pt - "bass_change" "\\cbassclef" -0.00\pt 10.80\pt -10.00\pt 4.00\pt + "bass" "\\bassclef" 1.50\pt 16.00\pt -12.50\pt 5.00\pt + "bass_change" "\\cbassclef" 1.20\pt 12.80\pt -10.00\pt 4.00\pt + "violin" "\\violinclef" 0.14\pt 13.19\pt -15.00\pt 25.00\pt + "violin_change" "\\cviolinclef" -0.29\pt 10.15\pt -12.00\pt 20.00\pt } % } % $name diff --git a/init/table16.ly b/init/table16.ly index daa17af924..f95cb2fdcc 100644 --- a/init/table16.ly +++ b/init/table16.ly @@ -53,7 +53,7 @@ table_sixteen= "clefs" = \table { "violin" "\violinclef" 0.0\pt 12.8\pt -10.0\pt 18.0\pt - "bass" "\bassclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt + "bass" "\bassclef" -1.0\pt 12.8\pt 0.0\pt 16.0\pt "alto" "\altoclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt "tenor" "\altoclef" 0.0\pt 12.8\pt 0.0\pt 16.0\pt "violin_change" "\cviolinclef" 0.0\pt 11.2\pt -12.0\pt 12.0\pt diff --git a/input/standchen.ly b/input/standchen.ly index 756a6c218d..9faee5ed92 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -44,30 +44,30 @@ melodie = \melodic{ %%4 r < [ 'a cis > e < 'a cis > e < 'a cis ] > | %%5 - [2/3 a~ bes a ]1/1 d'4. a | + [2/3 a() bes a ]1/1 d'4. a | %%6 - [2/3 g~ a g ]1/1 d'4 g r | + [2/3 g() a g ]1/1 d'4 g r | %%7 - a4.^> g [2/3 g~ f e ]1/1 | + a4.^> g [2/3 g() f e ]1/1 | %%8 f2 r4 | %%9 - < { a'4.~ g' [2/3 g'( f' )e' ]1/1 } + < { a'4.() g' [2/3 g'( f' )e' ]1/1 } { cis'4. e'_"dolce" \plet 2/3; e' \plet 1/1; } > | %%10 < f'2. d'2. > | %%11 - [2/3 a ~ bes a ]1/1 f'4. a | + [2/3 a () bes a ]1/1 f'4. a | %%12 - [2/3 g~ a g ]1/1 e'4. d' | + [2/3 g() a g ]1/1 e'4. d' | %%13 - c'4. bes [2/3 bes~ a g ]1/1 | + c'4. bes [2/3 bes() a g ]1/1 | %%14 a2 r - < { d'~ c'4. g [2/3 bes a g ]1/1 } - { f \p ~ e4._"dolce" bes + < { d'() c'4. g [2/3 bes a g ]1/1 } + { f \p () e4._"dolce" bes \plet 2/3; g \plet 1/1; } > | @@ -81,12 +81,12 @@ melodie = \melodic{ [ d'8. a16 ] f4. d | %%19 %#% c'\grace\stemup - [2/3 bes ~ a bes ]1/1 d'4. bes | + [2/3 bes () a bes ]1/1 d'4. bes | %%20 a2. | %%21 %#% a\grace - [2/3 g~ fis g ]1/1 bes4.^> g | + [2/3 g() fis g ]1/1 bes4.^> g | %%22 f!2. | %%23 @@ -94,16 +94,16 @@ melodie = \melodic{ %%24 [ d'8. a16 ] fis4. d | %%25 - [2/3 b \mf~ ais b ]1/1 d'4. b | + [2/3 b \mf() ais b ]1/1 d'4. b | %%26 < a2. fis2. > | %%27 - [2/3 e' \f~ dis' e' ]1/1 g'4. cis' | + [2/3 e' \f() dis' e' ]1/1 g'4. cis' | %%28 < d'2. fis2. > | %#%\volta1 %%29 - < { bes2( [ d'8.~ )bes16 ] } + < { bes2( [ d'8.() )bes16 ] } { g2 \mf [ bes8. g16 ] } > | %%30 < { a4. [ a-. a-. a-. ] } @@ -114,7 +114,7 @@ melodie = \melodic{ %%32 < a2 fis2 \pp > < a4 fis4 > | %%33 - < { b2( [ d'8.~ )b16 ] } + < { b2( [ d'8.() )b16 ] } { g2 [ b8. g16 ] } > | %%34 < { a4. [ a-. a-. a-. ] } @@ -128,14 +128,14 @@ melodie = \melodic{ %%37 [ a8. a16 ] [ cis'8. cis'16 ] [ e'8. e'16 ] | %%38 - d'4~ cis'4 r4 | + d'4() cis'4 r4 | %%39 %#% > a4. [ cis' e'8. >! d'16 ] | a4. \> [ cis' e'8. \! d'16 ] | %%40 cis'2 r4 | %%41 - < fis'4. \> cis'4. \f > e' [2/3 e'~ d' \! cis' ]1/1 | + < fis'4. \> cis'4. \f > e' [2/3 e'() d' \! cis' ]1/1 | %%42 [ b8. cis'16 ] d'4^> b r | %%43 @@ -144,19 +144,19 @@ melodie = \melodic{ %%44 [ b8. \> cis'16 ] d'4^> b \! r | %%45 - [2/3 b \p ~ ais b ]1/1 d'4. b | + [2/3 b \p () ais b ]1/1 d'4. b | %%46 | %%47 - [2/3 e' \f~ dis' e' ]1/1 g'4.^> cis' | + [2/3 e' \f() dis' e' ]1/1 g'4.^> cis' | %%48 \textstyle "italic"; < - { fis2.~ + { fis2.( %\group "+1"; - \stemdown f2. } - { d'2. ~ \stemup - d'4 r4_"decresc." d'4 } + \stemdown )f2. } + { d'2. ( \stemup + ) d'4 r4_"decresc." d'4 } > \textstyle "roman"; | %%50 diff --git a/lily/VERSION b/lily/VERSION index c66f32fc18..ab7dbaa23a 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,4 +1,4 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 29 +PATCH_LEVEL = 30 MY_PATCH_LEVEL = diff --git a/lily/bar-column-grav.cc b/lily/bar-column-grav.cc index e86a8cee62..8ab52f41d5 100644 --- a/lily/bar-column-grav.cc +++ b/lily/bar-column-grav.cc @@ -24,34 +24,34 @@ void Bar_column_engraver::acknowledge_element (Score_elem_info info) { if (info.elem_l_->is_type_b (Script::static_name()) - && info.req_l_->command() - && info.origin_grav_l_arr_.size() == 1) - { - script_l_arr_.push ((Script*)info.elem_l_->item()); + && info.req_l_->command() + && info.origin_grav_l_arr_.size() == 1) + { + script_l_arr_.push ((Script*)info.elem_l_->item()); } else { - if (info.origin_grav_l_arr_.size() == 1 - && info.elem_l_->is_type_b (Bar::static_name())) - bar_l_ = (Bar*)info.elem_l_->item(); + if (info.origin_grav_l_arr_.size() == 1 + && info.elem_l_->is_type_b (Bar::static_name())) + bar_l_ = (Bar*)info.elem_l_->item(); } if (bar_l_ && !barcol_p_) { - barcol_p_ = new Bar_column; - barcol_p_->breakable_b_ =true; - barcol_p_->set_bar (bar_l_); - announce_element (Score_elem_info (barcol_p_, 0)); + barcol_p_ = new Bar_column; + barcol_p_->breakable_b_ =true; + barcol_p_->set_bar (bar_l_); + announce_element (Score_elem_info (barcol_p_, 0)); } if (barcol_p_) { - for (int i=0; i < script_l_arr_.size(); i++) - { - script_l_arr_[i]->breakable_b_ = true; - barcol_p_->add (script_l_arr_[i]); - } - script_l_arr_.clear(); + for (int i=0; i < script_l_arr_.size(); i++) + { + script_l_arr_[i]->breakable_b_ = true; + barcol_p_->add (script_l_arr_[i]); + } + script_l_arr_.clear(); } } @@ -60,8 +60,8 @@ Bar_column_engraver::do_pre_move_processing() { if (barcol_p_) { - typeset_element (barcol_p_); - barcol_p_ =0; + typeset_element (barcol_p_); + barcol_p_ =0; } } diff --git a/lily/crescendo.cc b/lily/crescendo.cc index acb8a5bdf3..ffe6648c53 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -18,7 +18,6 @@ Crescendo::Crescendo() grow_dir_ =0; dir_ = DOWN ; dyn_b_drul_[LEFT] = dyn_b_drul_[RIGHT] =false; - inside_staff_b_ = false; } Interval @@ -62,7 +61,7 @@ Crescendo::brew_molecule_p() const m_p = new Molecule; Atom s (get_symbol()); m_p->add (Atom (s)); - m_p->translate (Offset (x_off_dim, pos_i_ * paper()->internote_f ())); + m_p->translate (Offset (x_off_dim, y_)); return m_p; } diff --git a/lily/dynamic-grav.cc b/lily/dynamic-grav.cc index 7a62123f83..d4b9544e3a 100644 --- a/lily/dynamic-grav.cc +++ b/lily/dynamic-grav.cc @@ -105,7 +105,8 @@ Dynamic_engraver::do_pre_move_processing() Staff_symbol* s_l = get_staff_info().staff_sym_l_; if (dynamic_p_) { - dynamic_p_->set_staffsym (s_l); + + dynamic_p_->add_support (s_l); typeset_element (dynamic_p_); dynamic_p_ = 0; } @@ -115,7 +116,7 @@ Dynamic_engraver::do_pre_move_processing() to_end_cresc_p_->dyn_b_drul_[RIGHT]=true; to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_l ()); - to_end_cresc_p_->set_staffsym (s_l); + to_end_cresc_p_->add_support (s_l); typeset_element (to_end_cresc_p_); to_end_cresc_p_ = 0; } diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh index c682c9efbd..131b265186 100644 --- a/lily/include/staff-side.hh +++ b/lily/include/staff-side.hh @@ -18,35 +18,36 @@ */ class Staff_side : virtual Score_elem { - Link_array support_l_arr_; - int staff_size_i_; - Interval support_height() const; - Staff_symbol* staff_sym_l_; - int get_position_i() const; + Link_array support_l_arr_; + int staff_size_i_; + Interval support_height() const; + Staff_symbol* staff_sym_l_; + Real get_position_f() const; - void read_staff_sym(); + void read_staff_sym(); public: - /** - Vertical dir of symbol relative to staff. -1 = below staff? - */ - Direction dir_; - Interval sym_int_; + /** + Vertical dir of symbol relative to staff. -1 = below staff? + */ + Direction dir_; + Interval sym_int_; - /// follow the support inside the staff? - bool inside_staff_b_; + /// follow the support inside the staff? + bool inside_staff_b_; - int pos_i_; + Real y_; - void set_staffsym (Staff_symbol * ); + + void set_staffsym (Staff_symbol * ); - Staff_side(); - void add_support (Score_elem*); - DECLARE_MY_RUNTIME_TYPEINFO; + Staff_side(); + void add_support (Score_elem*); + DECLARE_MY_RUNTIME_TYPEINFO; protected: - virtual Interval symbol_height() const; - virtual void do_substitute_dependency (Score_elem *, Score_elem*); - virtual void do_post_processing(); + virtual Interval symbol_height() const; + virtual void do_substitute_dependency (Score_elem *, Score_elem*); + virtual void do_post_processing(); }; #endif // STAFF_SIDE_HH diff --git a/lily/include/staff-sym.hh b/lily/include/staff-sym.hh index 31b69273cc..4a4888a522 100644 --- a/lily/include/staff-sym.hh +++ b/lily/include/staff-sym.hh @@ -19,6 +19,7 @@ class Staff_symbol : public Spanner { /// this many lines. int no_lines_i_; + Real interline_f_; public: DECLARE_MY_RUNTIME_TYPEINFO; Staff_symbol (int lines); @@ -26,6 +27,7 @@ public: int steps_i() const; protected: SCORE_ELEM_CLONE(Staff_symbol); + virtual Interval do_height () const; virtual Molecule* brew_molecule_p() const; virtual void do_print() const; }; diff --git a/lily/lexer.l b/lily/lexer.l index 96ee56b49d..840e2b31ce 100644 --- a/lily/lexer.l +++ b/lily/lexer.l @@ -66,7 +66,7 @@ A [a-zA-Z] AA {A}|_ N [0-9] AN {AA}|{N} -PUNCT [?!,.:'] +PUNCT [?!:'] ACCENT \\[`'"^] NATIONAL [\001-\006\021-\027\031\036\200-\377] TEX {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL} diff --git a/lily/script-grav.cc b/lily/script-grav.cc index 1fed7f0299..597fe0809a 100644 --- a/lily/script-grav.cc +++ b/lily/script-grav.cc @@ -9,6 +9,7 @@ #include "musical-request.hh" #include "stem.hh" #include "staff-sym.hh" +#include "general-script-def.hh" Script_engraver::Script_engraver() { @@ -55,7 +56,9 @@ Script_engraver::do_pre_move_processing() for (int i=0; i < script_p_arr_.size(); i++) { Script*script_p = script_p_arr_[i]; - script_p->set_staffsym (s_l); + if (!script_p->specs_l_->inside_b()) + script_p->add_support (s_l); + typeset_element (script_p); } script_p_arr_.clear(); diff --git a/lily/script.cc b/lily/script.cc index ceaeacd4c3..0979cfe824 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -86,7 +86,6 @@ Script::do_pre_processing() if (!dir_) set_default_dir(); - inside_staff_b_ = specs_l_->inside_b(); } Interval @@ -98,11 +97,10 @@ Script::symbol_height() const Molecule* Script::brew_molecule_p() const { - Real dy = paper()->internote_f (); Real dx = paper()->note_width()/2; Molecule*out = new Molecule (specs_l_->get_atom (paper(), dir_)); - out->translate_axis (dy * pos_i_, Y_AXIS); + out->translate_axis (y_, Y_AXIS); out->translate_axis (dx, X_AXIS); // FIXME! ugh return out; } diff --git a/lily/staff-side.cc b/lily/staff-side.cc index 7f9abeeb83..4099f2eece 100644 --- a/lily/staff-side.cc +++ b/lily/staff-side.cc @@ -13,44 +13,37 @@ #include "staff-sym.hh" #include "debug.hh" -void -Staff_side::set_staffsym (Staff_symbol* s_l) -{ - staff_sym_l_ = s_l; - add_dependency (s_l); -} Staff_side::Staff_side() { - pos_i_ =0; + y_=0; sym_int_ = Interval (0,0); - staff_size_i_ = 0; - staff_sym_l_ = 0; dir_ = CENTER; inside_staff_b_ = false; } -void -Staff_side::read_staff_sym() -{ - if (! staff_sym_l_) - return ; - staff_size_i_ = staff_sym_l_->steps_i(); -} - Interval Staff_side::support_height() const { - Interval r; + Interval y_int; + for (int i=0; i < support_l_arr_.size(); i++) + { + Axis_group_element *common = + common_group (support_l_arr_[i], Y_AXIS); + + Real y = support_l_arr_[i]->relative_coordinate (common, Y_AXIS) + -relative_coordinate (common,Y_AXIS); - for (int i=0; i < support_l_arr_.size(); i++) - r.unite (support_l_arr_[i]->height()); - if (r.empty_b()) + y_int.unite (y + support_l_arr_[i]->height()); + } + + + if (y_int.empty_b()) { - r = Interval (0,0); + y_int = Interval (0,0); } - return r; + return y_int; } void @@ -60,8 +53,8 @@ Staff_side::add_support (Score_elem*i) add_dependency (i); } -int -Staff_side::get_position_i() const +Real +Staff_side::get_position_f() const { if (!dir_) { @@ -73,28 +66,11 @@ Staff_side::get_position_i() const Real y=0; Real inter_f = paper()-> internote_f (); - if (!inside_staff_b_) - { - y = (staff_sym_l_) ? dir_ * (staff_sym_l_->steps_i()/2 + 2) : -2; - y *=inter_f; - - Interval v= support_height(); - - if (dir_ > 0) - { - y = y >? (v.max() + 2*inter_f); - } - else if (dir_ < 0) - { - y = y internote_f ())); + y_ += - sym_int_[-dir_]; } void Staff_side::do_substitute_dependency (Score_elem*o, Score_elem*n) { support_l_arr_.unordered_substitute (o,n); - if (staff_sym_l_ == o) - staff_sym_l_ = n ? (Staff_symbol*) n->spanner():0; } diff --git a/lily/staff-sym.cc b/lily/staff-sym.cc index ebacee46f7..4cd214b79b 100644 --- a/lily/staff-sym.cc +++ b/lily/staff-sym.cc @@ -10,12 +10,13 @@ #include "paper-def.hh" #include "molecule.hh" #include "debug.hh" - +#include "dimen.hh" Staff_symbol::Staff_symbol (int l) { no_lines_i_ = l; + interline_f_ = 0 PT; } @@ -30,19 +31,25 @@ Staff_symbol::do_print() const #endif } +Interval +Staff_symbol::do_height() const +{ + int n = no_lines_i_ -1; + return 2* inter_note_f () * Interval (-n, n); +} + Molecule* Staff_symbol::brew_molecule_p() const { Paper_def * p = paper(); Atom rule = p->lookup_l ()->rule_symbol (p->get_var ("rule_thickness"), width ().length ()); - Real inter = p->interline_f (); - Real height = (no_lines_i_-1) * inter/2; + Real height = (no_lines_i_-1) * inter_note_f(); Molecule * m = new Molecule; for (int i=0; i < no_lines_i_; i++) { Atom a (rule); - a.translate_axis (height - i * inter, Y_AXIS); + a.translate_axis (height - i * inter_note_f()*2, Y_AXIS); m->add (a); } @@ -52,6 +59,9 @@ Staff_symbol::brew_molecule_p() const Real Staff_symbol::inter_note_f() const { + if (interline_f_) + return interline_f_/2; + return paper()->internote_f (); } diff --git a/lily/text-item.cc b/lily/text-item.cc index 8d62ea7289..16a45977f1 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -52,7 +52,7 @@ Text_item::brew_molecule_p() const if (dir_<0) // should do something better anyway. mol_p->translate_axis (-mol_p->extent().y ().left , Y_AXIS); - mol_p->translate_axis (pos_i_ * paper()->internote_f (), Y_AXIS); + mol_p->translate_axis (y_, Y_AXIS); return mol_p; } diff --git a/make/debian/watch b/make/debian/watch index 2b1a91d0d7..1a1bb286a0 100644 --- a/make/debian/watch +++ b/make/debian/watch @@ -2,4 +2,4 @@ # Rename this file to "watch" and then you can run the "uscan" command # to check for upstream updates and more. # Site Directory Pattern Version Script -pcnov095.win.tue.nl /pub/lilypond lilypond-*.tar.gz debian uupdate +pcnov095.win.tue.nl /pub/lilypond/development lilypond-*.tar.gz debian uupdate diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index a9436ed3e8..4ca6b9c40c 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.29 -Inschrijf datum: 06NOV97 +Versie: 0.1.30 +Inschrijf datum: 11NOV97 Beschrijving: LilyPond is de muziek typesetter van het GNU Project. Het programma genereert muziek in zichtbare of hoorbare vorm uit uit een muzikale definitie file: @@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 395k lilypond-0.1.29.tar.gz + 395k lilypond-0.1.30.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.29.tar.gz + 395k lilypond-0.1.30.tar.gz Copi"eer politie: GPL End diff --git a/make/lilypond.lsm b/make/lilypond.lsm index d3085da434..28812b00e6 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.29 -Entered-date: 06NOV97 +Version: 0.1.30 +Entered-date: 11NOV97 Description: LilyPond is the GNU Project music typesetter. The program generates visual or auditive output from a music definition file: it can typeset formatted sheet music @@ -13,9 +13,9 @@ Keywords: music notation typesetting midi Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) -Primary-site: sunsite.unc.edu /pub/Linux/apps - 440k lilypond-0.1.29.tar.gz -Original-site: pcnov095.win.tue.nl /pub/lilypond/ - 440k lilypond-0.1.29.tar.gz +Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert + 440k lilypond-0.1.30.tar.gz +Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ + 440k lilypond-0.1.30.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.lsm.in b/make/lilypond.lsm.in index fc173051cf..bc3e34ed5d 100644 --- a/make/lilypond.lsm.in +++ b/make/lilypond.lsm.in @@ -13,9 +13,9 @@ Keywords: music notation typesetting midi Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) -Primary-site: sunsite.unc.edu /pub/Linux/apps +Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert 440k lilypond-@TOPLEVEL_VERSION@.tar.gz -Original-site: pcnov095.win.tue.nl /pub/lilypond/ +Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ 440k lilypond-@TOPLEVEL_VERSION@.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index 714757289c..343da659ed 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.29 +Version: 0.1.30 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.29.tar.gz +Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.30.tar.gz Summary: A program for typesetting music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/mf/autometric.mf b/mf/autometric.mf index 47afdd263e..3b1b798684 100644 --- a/mf/autometric.mf +++ b/mf/autometric.mf @@ -40,6 +40,11 @@ def autometric_output_char= message "@{char@:"&charnamestr&"@:"&decimal charcode&"@:"&decimal charbp&"@:"&decimal charwd&"@:"&decimal chardp&"@:"&decimal charht&"@:"&idstr&"@:"&texstr&"@}"; enddef; +def hround_pixels(expr sharped) = hround(sharped * hppp) enddef; +def vround_pixels(expr sharped) = vround(sharped * vppp) enddef; + + + def tand(expr alpha) = (sind alpha/cosd alpha) enddef; diff --git a/mf/feta-bolletjes.mf b/mf/feta-bolletjes.mf index 53535b6a22..69f7eb9af2 100644 --- a/mf/feta-bolletjes.mf +++ b/mf/feta-bolletjes.mf @@ -1,5 +1,12 @@ -% bolletjes.mf -% part of LilyPond's pretty-but-neat music font +% +% feta-bolletjes.mf -- implement noteheads +% +% source file of LilyPond's pretty-but-neat music font +% +% (c) 1997 Jan Nieuwenhuizen +% & Han-Wen Nienhuys +% + % most beautiful noteheads are pronounced, not circular, % and not even symmetric. diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index c710d56da2..dd8abe5e91 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -25,8 +25,8 @@ if test = 0: input feta-banier; input feta-klef; else: - input feta-bolletjes; - input feta-banier; +% input feta-bolletjes; +% input feta-banier; % input feta-eindelijk; input feta-klef; diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf index 077971baba..e9b285d7e5 100644 --- a/mf/feta-klef.mf +++ b/mf/feta-klef.mf @@ -1,58 +1,26 @@ +% +% feta-klef.mf -- implement Clefs +% +% source file of the Feta (Font-En-Tja) music font +% +% (c) 1997 Han-Wen Nienhuys +% fet_begingroup("klef"); -def draw_bass_clef(expr reduction, center) = - save thinness, left_shoot, reduced_il; - save left_fat, right_fat, dot_size, dot_sep; - save hip_factor; - - left_shoot = 0.3; - left_fat = .3; - right_fat = .5; - dot_size = .4; - dot_sep = 1.2; - hip_factor = 0.95; - thinness = stafflinethickness; - - - reduced_il# = interline# * reduction; - define_pixels(reduced_il); - set_char_box(left_fat * reduced_il#, - (1 + hip_factor + right_fat/2)* reduced_il# + - (dot_sep+ 1) * dot_size *reduced_il# - , 2.5 reduced_il#, 1.0 reduced_il#) - - z2 - z1 = (1.1 reduced_il, reduced_il); - z3 = (x2 + hip_factor* reduced_il, y1); - z4 - z1 = (- left_shoot * reduced_il, -2.5 reduced_il); - - z1extreme = z1l - ( thinness/2, 0); - penpos1(left_fat* reduced_il , 0); - z1r = (center, 0); - z5 = (x3l + dot_sep * dot_size * interline, .5 interline); - - - penpos3(right_fat * reduced_il, 180); - - penlabels(1,3); - labels(2,4); +def draw_staff(expr first, last)= + pickup pencircle scaled stafflinethickness; + for i:= first step 1 until last: + draw (- interline, i* interline) .. (4 interline, i* interline); + endfor - pickup pencircle scaled thinness; - filldraw z1r{up} .. z2{right} .. z3r{down} .. {curl 0} z4 {curl 0} - .. z3l{up} .. z2{left} .. z1l{down} -- cycle; - - draw_bulb(1, z1r, z1extreme, 1.2 , 1.2); - - pickup pencircle scaled (dot_size * interline); - draw z5; - draw z5 yscaled -1; + enddef; -enddef; % -% Inspired by Baerenreiter, Auf dem Strom +% Inspired by Baerenreiter and Breitkopf % % FIXME: dims % FIXME: right vertical tangent seems to be lower than the F-line @@ -62,22 +30,25 @@ enddef; % [Wanske] says that the extreme x point should be exactly between % the dots, but her picture shows that the extreme is ~ 0.2 ss lower -def draw_bass_klef(expr reduction) = +def draw_bass_klef(expr exact_center, reduction) = save reduced_il, left_tilt, left_thick; reduced_il# = interline# * reduction; - left_tilt = 10; - + left_tilt = 5; define_pixels(reduced_il); left_thick = .25 reduced_il; - set_char_box(0, 2.7 reduced_il#, 2.5 reduced_il#, reduced_il#); + set_char_box( + - xpart exact_center+ .2 reduced_il#, + xpart exact_center + 2.7 reduced_il#, + - ypart exact_center + 2.5 reduced_il#, + ypart exact_center +reduced_il#); x1r - x1l = left_thick; - x1l = 0; - y1l = 0; + z1l = (hround_pixels(xpart exact_center), + vround_pixels(ypart exact_center)); y2 = reduced_il; - x3r = x1l + 12/7 reduced_il; + x3l - x1l = 2.1 reduced_il; x2 = .5 [x1,x3]; x3l - x3r = .48 reduced_il; y3l = -0.05 interline; @@ -93,24 +64,159 @@ def draw_bass_klef(expr reduction) = draw_bulb(1, z1r, z1l, .45 reduced_il, 1.0); - fill z1r{up} .. z2r{right} .. tension .9 .. z3r{down} .. {curl 0} + fill z1r{up} .. z2r{right} .. tension 1.0 .. z3r{down} .. {curl 0} simple_serif(z4r, z4l, 90) {curl 0} - .. z3l{up} .. tension .9 .. z2l{left} + .. z3l{up} .. tension 0.9 .. z2l{left} .. z1l{dir (-90 + left_tilt)} -- cycle; labels(2,4); penlabels(1,2,3,4); - pickup pencircle scaled (1/3 reduced_il); + pickup pencircle scaled (.35 reduced_il); draw z5; draw z5 yscaled -1; enddef; + + fet_beginchar("F clef ", "bass", "bassclef") - draw_bass_klef(1.0); + if test = 1: + draw_staff(-3,1); + fi; + draw_bass_klef((.5 interline#, 0), 1.0); fet_endchar; fet_beginchar("F clef (reduced)", "bass_change", "cbassclef") - draw_bass_klef(0.8); + draw_bass_klef((.4 interline#, 0),0.8); fet_endchar; + +% +% Inspired by Baerenreiter +% +% FIXME top +% FIXME bulb should curve (see bass clef) +% FIXME start (inside) should be little thinner +% FIXME parametrise. +% FIXME should be a bit more upright +% +def draw_gclef (expr exact_center, reduction)= + save reduced_il, downstroke_dir, downstroke_angle, hair, center; + save breapth_factor, inner_thick_end, thinness, thickness, thinnib +, thinness, thinpen; + reduced_il# = interline# * reduction; + define_pixels(reduced_il); + pair downstroke_dir, center; + + center := (hround_pixels(xpart exact_center), + vround_pixels(ypart exact_center)); + + hair = .3 stafflinethickness; + thinness = 1.3 stafflinethickness; + downstroke_dir = (14, -75); + breapth_factor = 11/7; + inner_thick_end = 45; + thickness = .4 interline - hair; + + thinnib = thinness - hair; + thinpen = thinness; + set_char_box(-xpart exact_center + breapth_factor* reduced_il#, + xpart exact_center + .66 breapth_factor* reduced_il#, + -ypart exact_center + 3 * reduced_il#, + ypart exact_center + 5 * reduced_il#); + + pickup pencircle scaled hair; + + downstroke_angle = angle downstroke_dir; + z1 = center + whatever * (-1, -2); + x1 = xpart center -.28 reduced_il; + + top z2r = center + (0,reduced_il + stafflinethickness/2); + + x4 = xpart center - .1 reduced_il; + bot y4r = -(reduced_il + .5 stafflinethickness); + + z3 = (z4 - center) rotated inner_thick_end + center; + + z5r = (- breapth_factor, .37)* reduced_il + center; + penpos5(thickness, 135); + + z6 = center + whatever * downstroke_dir; + y6 = ypart center + 2 reduced_il; + + + z7l - z6 = whatever *(z5- z6) ; + y7l = 3.5 reduced_il; + + + + z8r = .4 [z9r, z7r] + 1.5 stafflinethickness * dir 52; + + x9 = .7 [x10, x7r]; + top y9l = 5 reduced_il; + + y10 = 3. reduced_il; + y11 = -11/7 reduced_il; + + y12 = ypart center - 18.5/7 reduced_il; + x12 = x11 - 5 /7 reduced_il; + + z13 = z12 + .6 reduced_il*(-1,1); + + (z10r - z10l) dotprod (unitvector downstroke_dir rotated 90) = + thinnib; + + center - z10= whatever * downstroke_dir; + center - z11 = whatever * downstroke_dir; + + penpos1(thinnib, angle(-1,-2)); + penpos2(thickness, 90); + penpos3(thinnib, -90 + inner_thick_end); + penpos4(thinnib, -90); + + + penpos7(thickness, 135); + penpos8(1.5 thinnib, - 70 + angle downstroke_dir); + penpos9(1.5 thickness, -80); + penpos10(whatever, downstroke_angle + 10); + penpos11(thinnib, downstroke_angle + 90); + penpos12(thinnib, -90); + penpos13(3 thinnib, 180); + + + filldraw z2l{right} .. z3l.. z4l{left} .. z5l{up} .. z7l{up} + %.. z8l + .. z9l & z9l .. + {downstroke_dir}z10l --- z11l -- z11r --- z10r{- downstroke_dir} + .. tension .8 + .. z9r & z9r + %.. z8r + .. z7r{down} .. z5r{down} .. z4r{right} + .. z3r .. z2r{left} .. + tension .95 .. + z1r -- z1l + .. tension 0.85 ..cycle; + + filldraw simple_serif(z1r, z1l, 90) -- cycle; + + filldraw z12r{left} .. z13r{up} -- z13l{down} .. z12l{right} .. cycle; + + draw_bulb(-1, z13l, lft z13r, 6/14 reduced_il, 1.0); + + pickup pencircle scaled (thinpen); + draw z10 --- z11 .. z12{left}; + + penlabels(range 1 thru 15); +enddef; + + +fet_beginchar("G clef", "violin", "violinclef") + if test = 1: + draw_staff(-1,3); + fi; + draw_gclef((1.6 interline#,0), 1.0); +fet_endchar; +fet_beginchar("G clef", "violin_change", "cviolinclef") + draw_gclef((1.2 interline#,0), .8); +fet_endchar; + fet_endgroup("klef"); diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index ad274d6a8c..37d551b925 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -1,6 +1,10 @@ -% -% scripts -% +% +% feta-schrift.mf -- implement scripts +% +% source file of the Feta (Font-En-Tja) music font +% +% (c) 1997 Han-Wen Nienhuys +% fet_begingroup("scripts") diff --git a/mf/feta-toevallig.mf b/mf/feta-toevallig.mf index 8528ee47cd..a3cddb3fa0 100644 --- a/mf/feta-toevallig.mf +++ b/mf/feta-toevallig.mf @@ -1,3 +1,12 @@ +% +% feta-toevallig.mf -- implement Accidentals +% +% source file of the Feta (Font-En-Tja) music font +% +% (c) 1997 Han-Wen Nienhuys +% + + % % Accidentals from various sources, notably % @@ -12,6 +21,11 @@ fet_begingroup("accidentals"); +% +% The beams of most sharps have horizontal endings (as if drawn with +% a square pen). [Wanske] does not mention this, so we'll just ignore +% this fact +% fet_beginchar("Sharp" , "1", "sharp"); set_char_box(0, 1.1 interline#, 1.5 interline#, 1.5 interline#); diff --git a/tex/feta16.tex b/tex/feta16.tex index 1dd3f19865..777cda5fa7 100644 --- a/tex/feta16.tex +++ b/tex/feta16.tex @@ -1,5 +1,5 @@ % generated automatically by mf-to-table.py version 0.4 -% on Wed Nov 5 23:51:17 1997 +% on Tue Nov 11 13:31:20 1997 % Do not edit % input from out/feta16.log % name @@ -69,4 +69,6 @@ % klef \fetdef\bassclef{51} \fetdef\cbassclef{52} +\fetdef\violinclef{53} +\fetdef\cviolinclef{54} diff --git a/tex/feta20.tex b/tex/feta20.tex index 5a820d00bb..00dad23d8b 100644 --- a/tex/feta20.tex +++ b/tex/feta20.tex @@ -1,5 +1,5 @@ % generated automatically by mf-to-table.py version 0.4 -% on Wed Nov 5 23:51:26 1997 +% on Tue Nov 11 13:31:29 1997 % Do not edit % input from out/feta20.log % name @@ -69,4 +69,6 @@ % klef \fetdef\bassclef{51} \fetdef\cbassclef{52} +\fetdef\violinclef{53} +\fetdef\cviolinclef{54} -- 2.39.5