+1.3.79.jcn1
+===========
+
+* Made crude fixes slurs don't crash, bezier still crashes on
+ infinitely steep slurs (eg flauti-part *with* slur_engraver).
+
+1.3.79
+======
+
* etf2ly.py: Finale to LilyPond conversion.
1.3.78.jcn4
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=79
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=jcn1
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
-\score{
- \context Staff <
- \context Voice=one { \skip 1; }
- \context Voice=two { \skip 1; }
-
- \context Voice=one \partcombine Voice
- \context Thread=one \notes\relative c'' {
- a4 c4.()g8 a4
- }
- \context Thread=two \notes\relative c'' {
- g4 e4.()d8 c4
- }
- >
- \paper{
- linewidth=60.\mm;
- }
-}
-
\score{
\context Staff <
- \context Voice=one { \skip 1; }
- \context Voice=two { \skip 1; }
-
+ \time 4/4;
\context Voice=one \partcombine Voice
\context Thread=one \notes\relative c'' {
- %a4 c4.()g8 a4 |
+ a4 c4.()g8 a4 |
g4 e' g()f |
b, a c2
}
\context Thread=two \notes\relative c'' {
- %g4 e4.()d8 c4 |
- g4 c, e()f |
+ g4 e4.()d8 c4 |
+ g'4 c, e()f |
d2 a
}
>
\translator {
\VoiceContext
soloADue = ##f
- %\remove Slur_engraver;
- \consists Slur_engraver;
}
-% \translator {
-% \ThreadContext
-% \consists Slur_engraver;
-% }
}
}
return o;
}
-MAKE_SCHEME_CALLBACK(Slur,after_line_breaking);
-
+MAKE_SCHEME_CALLBACK (Slur, after_line_breaking);
SCM
Slur::after_line_breaking (SCM smob)
{
Score_element *me = unsmob_element (smob);
+ if (!gh_scm2int(scm_length (me->get_elt_property ("note-columns"))))
+ {
+ me->suicide ();
+ return SCM_UNSPECIFIED;
+ }
set_extremities (me);
set_control_points (me);
return SCM_UNSPECIFIED;
Array<Offset>
Slur::get_encompass_offset_arr (Score_element*me)
{
- Spanner*sp = dynamic_cast<Spanner*>(me);
+ Spanner*sp = dynamic_cast<Spanner*>(me);
SCM eltlist = me->get_elt_property ("note-columns");
Score_element *common[] = {me->common_refpoint (eltlist,X_AXIS),
me->common_refpoint (eltlist,Y_AXIS)};
/*
Ugh should have dash-length + dash-period
*/
-MAKE_SCHEME_CALLBACK(Slur,brew_molecule);
+MAKE_SCHEME_CALLBACK (Slur, brew_molecule);
SCM
Slur::brew_molecule (SCM smob)
{
Score_element * me = unsmob_element (smob);
+ if (!gh_scm2int(scm_length (me->get_elt_property ("note-columns"))))
+ {
+ me->suicide ();
+ return SCM_EOL;
+ }
+
Real thick = me->paper_l ()->get_var ("stafflinethickness") *
gh_scm2double (me->get_elt_property ("thickness"));
Bezier one = get_curve (me);
\score{
\$flauti_staff
- \include "coriolan-part-paper.ly"
+ %\include "coriolan-part-paper.ly"
+
+ \paper {
+ textheight = 295.0\mm;
+ linewidth = 180.0\mm;
+
+ % slurs are never beautiful (no steep slurs)
+ slur_beautiful = 0.0;
+
+ \translator {
+ \VoiceContext
+ \remove Slur_engraver;
+ }
+ \translator {
+ \ScoreContext skipBars = ##t
+ %% URG: this changes dynamics too
+ %%textStyle = #"italic"
+ timeSignatureStyle = #"C"
+ instrumentScriptPadding = #60 %% urg, this is in pt
+ instrScriptPadding = #40 %% urg, this is in pt
+ marginScriptHorizontalAlignment = #1
+ maximumRestCount = #1
+ }
+ }
\include "coriolan-midi.ly"
}
\include "flauto-1.ly"
\include "flauto-2.ly"
-$flauti_staff = \context Staff = flauti <
+$flauti_staff = \notes \context Staff = flauti <
\property Staff.midiInstrument = #"flute"
\property Staff.instrument = #"2 Flauti"
\property Staff.instr = #"Fl."
- %\notes \context Voice=flauti <
- \notes \context Staff=flauti <
- \global
- \context VoiceOne=flautoi
- \$flauto1
- \context VoiceTwo=flautoii
- \$flauto2
- >
+
+ \global
+
+ \context Voice=one { \skip 1; }
+ \context Voice=two { \skip 1; }
+
+ \context Voice=one \partcombine Voice
+ \context Thread=one \$flauto1
+ \context Thread=two \$flauto2
>
;; (cons (lambda (slur dir) (begin (display "before head") (newline))#f) #f)
+ ;; urg: don't crash on a slur without note-columns
+ (cons (lambda (slur dir)
+ (< (length (ly-get-elt-property slur 'note-columns)) 1)) 'head)
+
(cons (lambda (slur dir)
;; urg, code dup
(let* ((note-columns (ly-get-elt-property slur 'note-columns))