+++ /dev/null
-Keywords: midi notation music typesetting gnu font engraving
-Subject: GNU LilyPond 1.0 released - The Music Typesetter
-
-GNU LilyPond - The Music Typesetter
-
-
-WHAT IS LilyPond?
-
-LilyPond is the GNU Project music typesetter. This program can print
-beautiful sheet music from a music definition file. It can also play
-performances to a MIDI file.
-
-
-WHAT'S NEW SINCE VERSION 0.1?
-
-* LilyPond now includes a completely new music font: the Feta font.
- We were quite disappointed with available music fonts, so we rolled
- our own. We did our best to copy the best symbol designs available,
- and we think that we've succeeded in doing so. We're proud of the
- result, and we hope you agree, so go check it out!
-
-* More elegant output due to
-
- * more sophisticated beam/slur formatting
- * better spacing
- * better line breaking
- * better font design
- * PostScript output for variable symbols
-
-* Lots of bugfixes
-
-* More robust, flexible and tweakable design
-
-* Better MIDI file importing
-
-* Easier to use due to better shell scripts and input format
-enhancements
-
-* MusixTeX is not needed anymore
-
-* Faster
-
-
-
-FEATURES
-
-* Multiple staffs, polyphonic music (more voices on one staff),
-Polymetric music.
-
-* Support for full orchestral score: Hara_kiri systems (lines with
-only rests are automatically skipped), multi-measure rests, bar
-numbering, brackets at the left.
-
-* Optimal beam slopes, slur/notehead collision resolution, dashed
-slurs. Formatting parameters are runtime tunable
-
-* Very beautiful symbols. Variable size symbols generated on the fly
-as embedded postscript.
-
-* MIDI output
-
-* Optimal linebreaking, manual intervention possible. Linelength is
-settable per line.
-
-* Readable yet very fast to type input language. With configurable
-note names and identifiers. Comes with an emacs-mode
-
-* With lots of examples (among others a fragment of Van Beethoven's
-Coriolan, J.S.Bach Cello Suite II, F. Schubert "Leise flehen meine
-Lieder")
-
-* Runs on UNIX and Windows-32.
-
-* Easy generation of titling.
-
-* WWW browsable documentation.
-
-* Support for Urtext: separation of modern and original interpretation.
-
-* Polyphonic music (with automatic collision resolution)
-
-* Spacing and collision resolution of accidentals and syllables is
-done automatically
-
-* Internationalisation support (Italian, Dutch)
-
-* Multiple font sizes within one piece
-
-* Integration with LaTeX and YODL
-
-
-MORE INFO
-
-Sources for this project are on
-
- ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe)
- ftp://ftp.gnu.org/pub/gnu/
-
-More detailed info and examples can be found on the webpage at
-
- http://www.cs.uu.nl/~hanwen/lilypond/index.html
-
+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
pl5.jcn3
- website fixes
-pl5.jcn2
+opl5.jcn2
- extender-*, see input/test/extender.ly
- bf: half-beam length (urg)
- fixes: standchen, star
- tex output support
- all output through scheme
- option: f, output-format=X
- - geile placebox
+o - geile placebox
- mf/mfplain.ini
pl 17.jcn2
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=1
-PATCH_LEVEL=51
+PATCH_LEVEL=52
MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
\grace c8 c4
\grace { [c32 c32] } c4
\grace { [b32 ( c32] } c4
- \grace c16 [c8 c8]
+ \grace c8 [c8 c8]
}
}
stem_p_->set_elt_property (length_scm_sym, gh_double2scm (prop.to_f ()));
}
+ prop = get_property ("stemStyle", 0);
+ if (prop.to_bool ())
+ {
+ stem_p_->set_elt_property (style_scm_sym, gh_str02scm (prop.ch_C()));
+ }
+
typeset_element(stem_p_);
stem_p_ = 0;
}
}
else
length_f = paper_l ()->get_var ("stem_length0");
-
- Real shorten_f = paper_l ()->get_var ("forced_stem_shorten0");
+
+ bool grace_b = get_elt_property (grace_scm_sym) != SCM_BOOL_F;
+ String type_str = grace_b ? "grace_" : "";
+
+ Real shorten_f = paper_l ()->get_var (type_str + "forced_stem_shorten0");
if (!dir_)
dir_ = get_default_dir ();
set_stemend ((dir_ > 0) ? head_positions()[BIGGER] + length_f:
head_positions()[SMALLER] - length_f);
- if (dir_ * stem_end_f () < 0)
+ if (!grace_b && (dir_ * stem_end_f () < 0))
set_stemend (0);
}
}
}
+Molecule
+Stem::flag () const
+{
+ String style;
+ SCM st = get_elt_property (style_scm_sym);
+ if ( st != SCM_BOOL_F)
+ {
+ st = SCM_CDR(st);
+ style = ly_scm2string (st);
+ }
+
+ char c = (dir_ == UP) ? 'u' : 'd';
+ return lookup_l ()->afm_find (String ("flags-") + to_str (c) + to_str (flag_i_) + style);
+}
Interval
Stem::do_width () const
; // TODO!
else
{
- r = lookup_l ()->flag (flag_i_, dir_).dim_.x ();
+ r = flag ().dim_.x ();
r += note_delta_f ();
}
return r;
if (!beam_l_ && abs (flag_i_) > 2)
{
- Molecule fl = lookup_l ()->flag (flag_i_, dir_);
+ Molecule fl = flag ();
fl.translate_axis(stem_y[dir_]*dy, Y_AXIS);
mol_p->add_molecule (fl);
}
define_pixels(flare, hip_width, hip_thickness,
flagspace,
foot_depth, foot_thickness);
-
draw_flag((stemthickness/2,- flagspace), flare,
(hip_width, foot_depth),
hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
draw (0, 0) .. (0,-2 interline);
fet_endchar;
+fet_beginchar("grace 8th Flag (up)", "u3grace", "graceeighthflag")
+ save flare,
+ hip_depth_ratio, hip_width,
+ foot_depth, foot_width_ratio;
+
+ flare# = 1.0 interline#;
+ hip_depth_ratio = .72;
+ foot_width_ratio = .8;
+ hip_width# = upflag_width# - hip_thickness#/2;
+
+ foot_depth# = 3 interline#;
+
+ set_char_box(hip_width# * hip_depth_ratio,
+ hip_width# + stemthickness#/2 + right_upflag_space#,
+ foot_depth# + foot_thickness#/2, stemthickness#/2)
+
+ define_pixels(flare, hip_width, hip_thickness,
+ foot_depth, foot_thickness);
+ draw_flag((stemthickness/2,0), flare,
+ (hip_width, foot_depth),
+ hip_depth_ratio, foot_width_ratio, hip_thickness, foot_thickness);
+
+ pickup pencircle scaled stemthickness;
+ draw (0, 0) .. (0,-2 interline);
+ draw (-b ,-foot_depth * hip_depth_ratio) ..
+ (w, -flare);
+fet_endchar;
+
fet_beginchar("8th (down)", "d3", "deighthflag")
save flare,
hip_depth_ratio, hip_width,
draw (0, 0) .. (0,-2 interline);
y_mirror_char;
fet_endchar;
+
+
+fet_beginchar("grace 8th (down)", "d3grace", "dgraceeighthflag")
+ save flare,
+ hip_depth_ratio, hip_width,
+ foot_depth, foot_width_ratio;
+ save flagspace, total_depth, flag_count;
+
+ flag_count = 1;
+ flare# = .99 interline#;
+ flagspace# = .9 interline#;
+ hip_depth_ratio = .72 ;
+ hip_width# = downflag_width# - hip_thickness#/2;
+ total_depth# = 2.85 interline#;
+ (flag_count-1) * flagspace# + foot_depth# = total_depth#;
+
+ foot_width_ratio = .8;
+
+ set_char_box(hip_width# * hip_depth_ratio,
+ hip_width# + stemthickness#/2 + right_downflag_space#,
+ total_depth# + foot_thickness#/2, stemthickness#/2)
+
+ define_pixels(flare, hip_width, hip_thickness,
+ flagspace,
+ foot_depth, foot_thickness);
+
+ draw_flag((stemthickness/2,- (flag_count-1) *flagspace), flare,
+ (hip_width, foot_depth),
+ hip_depth_ratio,foot_width_ratio, hip_thickness, foot_thickness);
+
+
+ pickup pencircle scaled stemthickness;
+ draw (0, 0) .. (0,-2 interline);
+ draw (-b, -foot_depth * hip_depth_ratio) .. (w,-flare);
+ y_mirror_char;
+fet_endchar;
+
fet_endgroup("flags");
% input feta-eindelijk;
% input feta-klef;
% input feta-toevallig;
- input feta-schrift;
+% input feta-schrift;
% input feta-haak;
% input feta-timesig;
fi
\bar "" ;
r8 a [b cis]
-% \grace e16
+ \grace { e8( }
[d16 cis d e]
f4 ~ [f16 e d c]
b4-\turn
[g8.(_"a tempo" e16 g8. )e16]
a4. g8 [f8 e8 d8 c8]
g2 d'2-\trill
-% \grace { [c32 d] }
+ \grace { [c32 d] }
c4
} }
\score {
\notes { \cad }
- \paper {
- }
- \midi { \tempo 4 = 90; }
+% \midi { \tempo 4 = 90; }
+ \paper { casting_algorithm = \Wordwrap;}
+
}