---- ../lilypond-1.1.29.jcn1/NEWS Tue Feb 9 17:15:49 1999
+--- ../lilypond-1.1.29.jcn2/NEWS Tue Feb 9 22:46:07 1999
+++ b/NEWS Wed Feb 10 15:21:05 1999
+@@ -1,3 +1,7 @@
+pl 29.jcn3
+ - fix: slur-case3.ly
+ - init.sly: .fly with linewidt=-1
+
+ pl 29.jcn2
+ - resurrected ps output
+ --- ../lilypond-1.1.29.jcn1/NEWS Tue Feb 9 17:15:49 1999
++ b/NEWS Tue Feb 9 22:46:07 1999
@@ -1,3 +1,6 @@
pl 29.jcn2
.* TODO before 1.2
. *
> Yes. I want ties to tie only notes of the same pitch, so that
-> < a~ a,> a
+> f < a~ a,> a
> works as you'd expect it to.
+
+I don't think that's functional, but there is a bug (--jcn):
+Lily will set a tie between the a and the preceeding f.
. * 1. Can Lily be told where to start numbering?
+Fix: set bar-number to 0 if first bar is an anacrouse?
. * The timpani part has rests the full first line. Is it possible
to force lilypond to print all parts on the first page of the score
but use the hara-kiri mechanism on the remaining pages?
"Additional expressions to highlight in Outline mode.")
(add-hook 'outline-mode-hook
- (lambda ()
+ '(lambda ()
(setq font-lock-maximum-decoration t)
(setq font-lock-maximum-decoration t)
(make-local-variable 'font-lock-defaults)
(setq font-lock-defaults '(outline-font-lock-keywords t))
- (font-lock-mode (global-font-lock-mode))))
+ (font-lock-mode global-font-lock-mode)
+ ))
(require 'allout)
(outline-init 't)
MAJOR_VERSION=1
MINOR_VERSION=1
PATCH_LEVEL=29
-MY_PATCH_LEVEL=jcn2
+MY_PATCH_LEVEL=jcn3
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
--- /dev/null
+% CASE 3
+d''4 ( ) b a ( ) e' \break
+g,( \stemdown ) b \stemboth c ( ) f, \break
+
+% no adjusting...
+\stemup [d'8 ( b a] \stemboth ) e' \break
+\stemup [g,8 ( b d] \stemboth ) c \break
+
+% still ugly
+g4 ( b d ) c \break
+
+%TIES
+d ~ b a ~ e' \break
+g, ~ \stemdown b \stemboth c ~ f, \break
+
STOP = 1
};
+inline Direction
+other_dir (Direction const d)
+{
+ return (Direction)(-d);
+}
+
+inline Direction
+operator - (Direction const d)
+{
+ return other_dir (d);
+}
+
+// huh?
inline Direction
flip (Direction *i) {
if (*i == (Direction)1)
split_path (str,a,b,c,ext_r);
// add extension if not present.
- // UGH. Should parametrise in list of default extensions.
- if (ext_r.empty_b ())
+ char const* extensions[] = {"", "", ".ly", ".fly", ".sly", 0};
+ extensions[0] = ext_r.ch_C ();
+ for (int i = 0; extensions[i]; i++)
{
- ext_r = ".fly";
- if (global_path.find (a+b+c+ext_r).empty_b ())
- ext_r = ".ly";
+ if (!global_path.find (a+b+c+extensions[i]).empty_b ())
+ {
+ ext_r = extensions[i];
+ break;
+ }
}
str = a+b+c+ext_r;
}
Direction d=LEFT;
+#define NORMAL_SLUR_b(dir) \
+ (extrema[dir]->stem_l_ \
+ && !extrema[dir]->stem_l_->transparent_b_ \
+ && extrema[dir]->head_l_arr_.size ())
+
do
{
/*
/*
normal slur
*/
- else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_
- && extrema[d]->head_l_arr_.size ())
+ else if (NORMAL_SLUR_b (d))
{
Real notewidth_f = extrema[d]->extent (X_AXIS).length ();
dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_-> extent (Y_AXIS)[dir_]);
}
while (flip(&d) != LEFT);
+ /*
+ Slur should follow line of music
+ */
+ if (NORMAL_SLUR_b (LEFT) && NORMAL_SLUR_b (RIGHT)
+ && (extrema[LEFT]->stem_l_ != extrema[RIGHT]->stem_l_))
+ {
+ Real note_dy = extrema[RIGHT]->stem_l_->head_positions ()[dir_]
+ - extrema[LEFT]->stem_l_->head_positions ()[dir_];
+ Real dy = dy_f_drul_[RIGHT] - dy_f_drul_[LEFT];
+ /*
+ Should we always follow note-heads, (like a tie)?
+ For now, only if the note_dy != slur_dy, we'll do
+ slur_dy := note_dy * factor.
+ */
+ if (sign (dy) != sign (note_dy))
+ {
+ Real damp_f = paper ()->get_var ("slur_slope_follow_music_factor");
+ Real dy = note_dy * damp_f;
+ Direction adjust_dir = (Direction)(- dir_ * sign (dy));
+ /*
+ adjust only if no beam gets in the way
+ */
+ if (!extrema[adjust_dir]->stem_l_->beam_l_
+ || (adjust_dir == extrema[adjust_dir]->stem_l_->dir_)
+ || (extrema[adjust_dir]->stem_l_->beams_i_drul_[-adjust_dir] < 1))
+ {
+ dy_f_drul_[adjust_dir] = dy_f_drul_[-adjust_dir]
+ + 2 * adjust_dir * dy;
+ Real dx = notewidth_f / 2;
+ if (adjust_dir != extrema[adjust_dir]->stem_l_->dir_)
+ dx /= 2;
+ dx_f_drul_[adjust_dir] -= adjust_dir * dx;
+ }
+ }
+ }
+
/*
Avoid too steep slurs.
- * slur from notehead to stemend: c''()b''
*/
Real damp_f = paper ()->get_var ("slur_slope_damping");
Offset d_off = Offset (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT],
a.push (r);
return a;
}
+
depth = ..
-INI_FILES = $(FLY_FILES) $(LY_FILES)
+INI_FILES = $(FLY_FILES) $(SLY_FILES) $(LY_FILES)
EXTRA_DIST_FILES = $(SCM_FILES)
INSTALLATION_DIR=$(datadir)/ly/
--- /dev/null
+% Toplevel initialisation file.
+
+\version "1.0.14";
+
+
+\include "declarations.ly"
+
+\score {
+ \notes\relative c {
+ \maininput
+ }
+ \paper {
+ linewidth=-1.0;
+ }
+ \midi{ }
+}
% slope damping: keep dy/dx < slur_slope_damping
slur_slope_damping = 0.6;
+% dy_slur := dy_music * factor
+slur_slope_follow_music_factor = 0.8;
+
tie_x_minimum = \slur_x_minimum;
tie_x_gap = \slur_x_gap;
tie_slope_damping = 0.8;
# UGH UGH
include $(make-dir)/lilypond-vars.make
-FLY_FILES = $(wildcard *.fly)
LY_FILES = $(wildcard *.ly)
+FLY_FILES = $(wildcard *.fly)
+SLY_FILES = $(wildcard *.sly)
+
M4_FILES = $(wildcard *.m4)
LYM4_FILES = $(wildcard *.lym4)
-EXTRA_DIST_FILES += $(FLY_FILES) $(LY_FILES) $(M4_FILES) $(LYM4_FILES)
+EXTRA_DIST_FILES += $(FLY_FILES) $(SLY_FILES) $(LY_FILES) $(M4_FILES) $(LYM4_FILES)
# WWW.make
ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly.txt, $(examples)))
fly_examples=$(addprefix $(outdir)/, $(addsuffix .fly.txt, $(flexamples)))
+sly_examples=$(addprefix $(outdir)/, $(addsuffix .sly.txt, $(slexamples)))
-all_examples=$(flexamples) $(examples)
+all_examples=$(flexamples) $(slexamples) $(examples)
ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(all_examples)))
gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(all_examples)))