PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=3
-PATCH_LEVEL=7
+PATCH_LEVEL=8
MY_PATCH_LEVEL=
}
+
\version "2.3.4"
+\paper {
+ raggedright = ##t
+}
-\score {
- { c8 c-\noBeam c c }
- }
+{ c8 c-\noBeam c c }
-
\header {
-
texidoc="Beams are place automatically; the last measure should have a single
beam."
-
}
\version "2.3.4"
-
-
\paper { raggedright = ##t }
\score {
\paper {
\context {
\Staff
- \remove "Clef_engraver"
-%% \remove "Staff_symbol_engraver"
+ \remove "Clef_engraver"
}
}
}
pipeSymbol = \bar "||"
-\score {
- { c'2 | c'2 | }
-}
+\paper { raggedright = ##t }
+{ c'2 | c'2 | }
\time 8/8
\key des \major
<<
+ \lyricsto "one" \new Lyrics \lyrics {
+ Do mi nus ex
+ }
\context Voice = one {
\voiceOne
bes'4 bes'4
\lyricsto "two" \new Lyrics \lyrics {
Do na
}
- \lyricsto "one" \new Lyrics \lyrics {
- Do mi nus ex
- }
>>
}
\paper { raggedright = ##t}
\header {
texidoc = "In lyrics, hyphens may be used."
}
-\score{
- <<
- \context Staff { c' (c') c'( c') }
- \context Lyrics \lyrics { bla -- alb xxx -- yyy }
- >>
+\paper {
+
+ raggedright= ##t
}
+<<
+ \context Staff { c' (c') c'( c') }
+ \context Lyrics \lyrics { bla -- alb xxx -- yyy }
+>>
+
texidoc= "Multi-measure rests are centered also in the case of grace notes."
}
-\score {
- <<
- \new Staff { R1 R1 R1*3 }
- \new Staff { \clef bass c1 \grace c8 c2 c2 c1 \grace c16 c2 c2 c1 }
+\paper { raggedright = ##t }
+
+<<
+ \new Staff { R1 R1 R1*3 }
+ \new Staff { \clef bass c1 \grace c8 c2 c2 c1 \grace c16 c2 c2 c1 }
>>
-}
%% \score
\relative {
- \override Slur #'after-line-breaking-callback = #New_slur::after_line_breaking
- \override Slur #'print-function = #New_slur::print
- \override Slur #'height = ##f
-
+
\grace e=''16( d8.[) c16]
- d8.[ \grace f16( e16)]
+ d=''8.[ \grace f16( e16)]
s2
<< {c=''8.([ es16] bes4~bes )}
\\
c,^( c'' c)
c,,^( c'')
c,,^( c')
- s4
| b='2( a4) s4
| b='4.( c8) s2
| << c=''1_(
\break
b4)
e=''4.( c8) s4
+ | << { b='8[( c]) } \\
+ { b='8[( c]) }>>
texidoc = "newlyrics, multiple stanzas, multiple lyric voices."
}
-
-%% only this works as advertised...
+\paper { raggedright = ##t }
<<
\new Staff \relative {
d'2 d c4 bes a2 \break
- c2 c d4 f g2
}
\newlyrics {
My first Li -- ly song,
- Not much can go wrong!
}
\newlyrics {
- My next Li -- ly verse
Not much can go wrong!
}
\new Staff \relative {
\clef bass
d2 d c4 bes a2 \break
- c2 c d4 f g2
}
\newlyrics {
MY FIRST LI -- LY SONG,
- NOT MUCH CAN GO WRONG!
}
\newlyrics {
- MY NEXT LI -- LY VERSE
NOT MUCH CAN GO WRONG!
}
>>
}
\version "2.3.4"
+\paper { raggedright = ##t }
-\score {
- <<
- \new Staff
- \partcombine
- { R1 * 2 }
- { c'8\> c'\! r2. }
- >>
-}
+<<
+ \new Staff
+ \partcombine
+ { R1 * 2 }
+ { c'8\> c'\! r2. }
+>>
not interfere with the overrides and reverts from polyphony."
}
+\paper { raggedright = ##t }
\version "2.3.4"
-\score {
\relative c'' {
<<
{ \grace e8 d2 }
\\ { a2 } >>
}
-}
texidoc = "Once properties take effect during a single time step only."
}
-\score {
- \relative c' {
- c4
- \once \set Stem = #'()
- c4
- \once \override Stem #'thickness = #5.0
- c4
- c4
- }
+\paper { raggedright = ##t }
+
+\relative c' {
+ c4
+ \once \set Stem = #'()
+ c4
+ \once \override Stem #'thickness = #5.0
+ c4
+ c4
}
}
\version "2.3.4"
+\paper { raggedright = ##t }
+
\addquote clarinet {
\transposition bes
d'16 d'16 d'8
d'16 d'16 d'8
d'16 d'16 d'8
- }
+}
\addquote sax {
\transposition es'
a8 a a a a a a a
- }
-
-\score {
- {
- \transposition f % french horn
-
- g'4
- << \quote clarinet 4 s4^"clar" >>
- << \quote sax 4 s4^"sax" >>
- }
+}
+{
+ \transposition f % french horn
+
+ g'4
+ << \quote clarinet 4 s4^"clar" >>
+ << \quote sax 4 s4^"sax" >>
}
texidoc = "In rhythmic staves stems should go up, and bar lines have the size for a 5 line staff. The whole note hangs from the rhythmic staff."
}
-\score { \context RhythmicStaff
- {
- r4 c4. c8 r8 c8 | c2 r2 | r1
- }
+\paper { raggedright = ##t }
+
+\context RhythmicStaff
+{
+ r4 c4. c8 r8 c8 | c2 r2 | r1
}
if (pmin < pmax)
{
- Real linethickness = me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness")) * robust_scm2double (me->get_property ("thickness"), 1.0);
+ Real linethickness = me->get_paper ()->get_dimension (ly_symbol2scm ("linethickness"))
+ * robust_scm2double (me->get_property ("thickness"), 1.0);
Real blotdiameter = me->get_paper ()->get_dimension (ly_symbol2scm ("blotdiameter"));
Interval x_extent = 0.5 * linethickness *Interval (-1,1);
Interval y_extent = Interval (pmin, pmax);
virtual System *get_system () const;
static int get_rank (Grob*);
-
+
DECLARE_SCHEME_CALLBACK (print, (SCM));
DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM));
};
void add_bound_item (Spanner*, Grob*);
-///DECLARE_UNSMOB (Spanner, spanner);
+bool spanner_less ( Spanner *s1, Spanner* s2);
int broken_spanner_index (Spanner * sp);
#endif
static int duration_log (Grob *);
static void set_beaming (Grob *, int, Direction d);
static int get_beaming (Grob *, Direction d);
- static Grob *get_beam (Grob *);
+ static Spanner *get_beam (Grob *);
static Grob *first_head (Grob *);
static Grob *last_head (Grob *);
static Drul_array<Grob*> extremal_heads (Grob *);
#include "group-interface.hh"
#include "spanner.hh"
#include "engraver.hh"
-#include "ambitus.hh"
class Ledger_line_engraver : public Engraver
{
#include "spanner.hh"
#include "group-interface.hh"
#include "paper-column.hh"
-#include "ambitus.hh"
struct Ledger_line_spanner
{
if (heads.is_empty ())
return SCM_EOL;
+
+ // find size of note heads.
+ Grob * staff = Staff_symbol_referencer::get_staff_symbol (me);
+ if (!staff)
+ return SCM_EOL;
+
Stencil ledgers;
Stencil default_ledger;
common[a] = common[a]->common_refpoint (g, a);
}
- // find size of note heads.
- Grob * staff = Staff_symbol_referencer::get_staff_symbol (me);
int interspaces = Staff_symbol::line_count (staff)-1;
Ledger_requests reqs;
Real length_fraction = 0.25;
Item *h = dynamic_cast<Item*> (heads[i]);
int pos = Staff_symbol_referencer::get_rounded_position (h);
- if (abs (pos) > interspaces)
+ if (pos
+ && abs (pos) > interspaces)
{
Interval head_extent = h->extent (common[X_AXIS], X_AXIS);
Interval ledger_extent = head_extent;
/*
- slur.cc -- implement score based Slur
+ slur.cc -- implement external interface for Slur
source file of the GNU LilyPond music typesetter
Drul_array<SCM> props (me->get_property ("left-items"),
me->get_property ("right-items"));
- Drul_array<Grob*> beams_drul (0,0);
+ Drul_array<Spanner*> beams_drul (0,0);
Drul_array<Grob*> stems_drul (0,0);
stem_dirs[LEFT] = stem_dirs[RIGHT] = CENTER;
stems_drul[d] = stem;
beams_drul[d] = Stem::get_beam (stem);
-
Direction sd = Stem::get_direction (stem);
if (stem_dirs[d] && stem_dirs[d] != sd)
/*
- slur.cc -- implement score based Slur
+ slur-quanting.cc -- Score based slur formatting
source file of the GNU LilyPond music typesetter
#include "staff-symbol.hh"
#include "stem.hh"
#include "warn.hh"
+#include "paper-column.hh"
+
struct Slur_score
{
{
Box stem_extent_;
Direction stem_dir_;
- Grob *bound_;
+ Item *bound_;
Grob *note_column_;
Grob *slur_head_;
Grob *staff_;
return end_ys;
}
+bool
+spanner_less (Spanner *s1, Spanner* s2)
+{
+ Slice b1, b2;
+ Direction d = LEFT;
+ do
+ {
+ b1[d] = s1->get_bound (d)->get_column ()->rank_;
+ b2[d] = s2->get_bound (d)->get_column ()->rank_;
+ } while (flip (&d) != LEFT);
+
+ return b2[LEFT] <= b1[LEFT] && b2[RIGHT] >= b1[RIGHT]
+ && (b2[LEFT] != b1[LEFT] || b2[RIGHT] != b1[RIGHT]);
+}
+
+
Drul_array<Offset>
get_base_attachments (Spanner *me,
Grob **common, Drul_array<Bound_info> extremes)
}
else
{
+ bool same_beam =
+ (extremes[d].stem_ && extremes[-d].stem_
+ && Stem::get_beam (extremes[d].stem_) == Stem::get_beam (extremes[-d].stem_));
if (stem
&& extremes[d].stem_dir_ == dir
&& Stem::get_beaming (stem, -d)
- && columns.size () > 2
- )
+ && (!spanner_less (me, Stem::get_beam (stem))
+ || same_beam))
y = extremes[d].stem_extent_[Y_AXIS][dir];
else if (head)
y = head->extent (common[Y_AXIS], Y_AXIS)[dir];
(c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-
+#include "spanner.hh"
#include "beam.hh"
#include "directional-element-interface.hh"
#include "item.hh"
Stem_tremolo::raw_stencil (Grob *me)
{
Grob *stem = unsmob_grob (me->get_property ("stem"));
- Grob *beam = Stem::get_beam (stem);
-
+ Spanner*beam = Stem::get_beam (stem);
Real dydx;
if (beam)
{
return SCM_EOL;
}
- Grob *beam = Stem::get_beam (stem);
+ Spanner *beam = Stem::get_beam (stem);
Direction stemdir = Stem::get_direction (stem);
if (stemdir == 0)
stemdir = UP;
return scm_make_real (r);
}
-Grob *
+Spanner *
Stem::get_beam (Grob *me)
{
SCM b = me->get_property ("beam");
- return unsmob_grob (b);
+ return dynamic_cast<Spanner*> (unsmob_grob (b));
}
Stem_info
\consists "Clef_engraver"
\consists "Key_engraver"
\consists "Time_signature_engraver"
+ \consists "Ledger_line_engraver"
\consists "Staff_symbol_engraver"
\consists "Collision_engraver"
\consists "Rest_collision_engraver"
\consists "Bar_engraver"
\consists "Time_signature_engraver"
\consists "Staff_symbol_engraver"
+ \consists "Ledger_line_engraver"
\consists "Instrument_name_engraver"
\consistsend "Axis_group_engraver"
\accepts "Voice"
\consists "Breathing_sign_engraver"
% \consists "Rest_engraver"
\consists "Note_heads_engraver"
- \consists "Ledger_line_engraver"
\consists "Rest_engraver"
\consists "Stem_engraver"
means force line break. Other values influence line breaking decisions
as a real penalty.")
- (pitch-max ,ly:pitch? "Top pitch for ambitus.")
- (pitch-min ,ly:pitch? "Bottom pitch for ambitus.")
-
(positions ,pair?
"Pair of staff coordinates @code{(@var{left}
. @var{right})}, where both @var{left} and @var{right} are in the
(after-line-breaking-callback ,procedure? "This procedure is called after line breaking. Its return value is ignored.")
(all-elements ,grob-list? "list of all grobs in this line. Its
function is to protect objects from being garbage collected.")
- (ambituses ,grob-list? "list of Ambitus objects")
(arpeggio ,ly:grob? "pointer to arpeggio object.")
(beam ,ly:grob? "pointer to the beam, if applicable.")
(center-element ,ly:grob? "grob which will be at the center of
(join-left ,boolean? "is this ligature head joined with the previous one by a vertical line?")
(context-info ,integer? "DOCME")
(inclinatum ,boolean? "is this neume an inclinatum?")
- (note-head-style ,string? "name of the font character to be used as note heads in the ambitus grob.")
(oriscus ,boolean? "is this neume an oriscus?")
(quilisma ,boolean? "is this neume a quilisma?")
(pes-or-flexa ,boolean? "shall this neume be joined with the previous head?")
;; end ancient notation
- ; ugh.
- (accidentals-style ,symbol? "style for ambitus.")
-
)))
(define-public all-backend-properties