* Small doco fixes.
-* Removed duplicated engraver hieararchies from coriolan and
-orchestral examples.
+* Removed duplicated engraver hierarchies from coriolan and orchestral
+examples.
-* Changed defaults for devNullThread, devNullVoice from 'unisolo to '().
+* Added user control for devnull engravers. Default: switched off
-1.3.128.jcn1
+* Small doco fixes.
+
+1.3.128.hwn1
============
-* Small doco fixes.
+* Doco fixes
+
+* Glissando fix (Rune Zedeler)
+
+1.3.128.mb2
+===========
+
+* Made the percussion clef somewhat fatter, thanks to Rune Zedeler.
+Note: font updated! Added this clef to input/regression/clefs.ly.
-* Added user control for devnull engravers.
+* updated \endincipit macro and the examples input/test/incipit.ly and
+input/regression/clefs.ly
1.3.127.jcn3
============
Those deserving special mentioning (in no particular order): Esther,
Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, Maartje, Suzanne,
-Ilse (gee, again?), Marieke, Irene, Martine and last (but
+Ilse (gee, again?), Marieke, Irene, Martine, Idwine and last (but
certainly not least) Janneke!
HWN
@node GNU Free Documentation License
-@c @appendixsec GNU Free Documentation License
-@c Hmm, only have one section in appendix: move up to chapter level
@appendix GNU Free Documentation License
@cindex FDL, GNU Free Documentation License
@menu
* Overview::
-* Music constructs::
* Modifying music::
* Repeats::
* Note entry::
* Piano music::
* Lyrics::
* Chords::
+* Writing parts::
* Page layout::
* Sound::
* Music entry::
@end itemize
-@c . {Music constructs}
-@node Music constructs
-@section Music constructs
-@cindex Music constructs
-@menu
-* Music expressions::
-* Sequential music::
-* Simultaneous music::
-* Compound music expressions::
-@end menu
-
-@c . {Music expressions}
-@node Music expressions
-@subsection Music expressions
-
-@cindex music expressions
-
-Music in LilyPond is entered as a music expression. Notes, rests, lyric
-syllables are music expressions (the atomic expressions), and you can
-combine music expressions to form new ones. This example forms a
-compound expressions out of the quarter @code{c} note and a @code{d}
-note:
-
-@example
-\sequential @{ c4 d4 @}
-@end example
-
-The meaning of this compound expression is to play the @code{c}
-first, and then the @code{d} (as opposed to playing them
-simultaneously, for instance).
-
-@c . {Sequential music}
-@node Sequential music
-@subsection Sequential music
-@cindex Sequential music
-@cindex @code{\sequential}
-@cindex sequential music
-
-@example
- \sequential @code{@{} @var{musicexprlist} @code{@}}
-@end example
-
-This means that list should be played or written in sequence, i.e.,
-the second after the first, the third after the second. The duration
-of sequential music is the the sum of the durations of the elements.
-There is a shorthand, which leaves out the keyword:
-
-@example
-@cindex @code{<}
-@cindex @code{>}
-
- @code{@{} @var{musicexprlist} @code{@}}
-@end example
-
-@c . {Simultaneous music}
-@node Simultaneous music
-@subsection Simultaneous music
-@cindex Simultaneous music
-@cindex @code{\simultaneous}
-
-@example
- \simultaneous @code{@{} @var{musicexprlist} @code{@}}
-@end example
-
-It constructs a music expression where all of its arguments start at
-the same moment. The duration is the maximum of the durations of the
-elements. The following shorthand is a common idiom:
-
-@example
- @code{<} @var{musicexprlist} @code{>}
-@end example
-
-If you try to use a chord as the first thing in your score, you might
-get multiple staffs instead of a chord.
-
-@lilypond[verbatim,center]
- \score {
- \notes <c''4 e''>
- \paper {
- linewidth = -1.;
- }
- }
-@end lilypond
-
-This happens because the chord is interpreted by a score context.
-Each time a note is encountered a default Voice context (along with a
-Staff context) is created. The solution is to explicitly instantiate
-a Voice context:
-
-@lilypond[verbatim,center]
- \score {
- \notes\context Voice <c''4 e''>
- \paper {
- linewidth = -1.;
- }
- }
-@end lilypond
-
-@c . {Compound music expressions}
-@node Compound music expressions
-@subsection Compound music expressions
-
-@cindex Compound music expressions
-
-Music expressions are compound data structures. You can nest music
-expressions any way you like. This simple example shows how three
-chords can be expressed in two different ways:
-
-@lilypond[fragment,verbatim,center]
- \notes \context Staff {
- <a c'> <b d' > <c' e'>
- < { a b c' } { c' d' e' } >
- }
-
-@end lilypond
-
-@cindex @code{\context}
-@cindex context selection
-
-@example
- \context @var{contexttype} [= @var{contextname}] @var{musicexpr}
-@end example
-
-Interpret @var{musicexpr} within a context of type @var{contexttype}.
-If the context does not exist, it will be created. The new context
-can optionally be given a name.
-
@c . {Modifying music}
@node Modifying music
Repeating music expressions?
@menu
-* Transpose::
* Apply::
@end menu
-@c . {Transpose}
-@node Transpose
-@subsection Transpose
-@cindex Transpose
-@cindex transposition of pitches
-@cindex @code{\transpose}
-
-A music expression can be transposed with @code{\transpose}. The syntax
-is
-@example
- \transpose @var{pitch} @var{musicexpr}
-@end example
-
-This means that middle C in @var{musicexpr} is transposed to
-@var{pitch}.
-
-@code{\transpose} distinguishes between enharmonic pitches: both
-@code{\transpose cis'} or @code{\transpose des'} will transpose up half
-a tone. The first version will print sharps and the second version
-will print flats.
-
-@quotation
-@lilypond[fragment,verbatim]
-\context Staff {
- \clef "F";
- { \key e \major; c d e f }
- \clef "G";
- \transpose des'' { \key e \major; c d e f }
- \transpose cis'' { \key e \major; c d e f }
-}
-
-@end lilypond
-@end quotation
-
-If you want to use both @code{\transpose} and @code{\relative}, then
-you must use @code{\transpose} first. @code{\relative} will have no
-effect music that appears inside a @code{\transpose}.
@c . {Apply}
@node Apply
Print a |: bar line
@item 'stop-repeat
Print a :| bar line
-@item (volta . #f)
@item (volta . @var{text})
Print a volta bracket saying @var{text}.
+@item (volta . #f)
+ Stop a running volta bracket
@end table
@lilypond[verbatim, fragment]
* Durations::
* Notes::
* Rests::
-* Multi measure rests::
* Skip::
@end menu
@end lilypond
-
-
@c . {Rests}
@node Rests
@subsection Rests
duration.
-@c . {Multi measure rests}
-@node Multi measure rests
-@subsection Multi measure rests
-@cindex Multi measure rests
-
-@cindex @code{R}
-
-[todo: moveme to orchestral-part section?]
-
-Multi measure rests are entered using `@code{R}'. It is specifically
-meant for entering parts: the rest can expand to fill a score with
-rests, or it can be printed as a single multimeasure rest This expansion
-is controlled by the property @code{Score.skipBars}. If this is set to true,
-Lily will not expand empty measures, and the appropriate number is added
-automatically.
-
-@lilypond[fragment,verbatim]
- \time 3/4; R2.*2 \property Score.skipBars = ##t R2.*17 R2.*4
-@end lilypond
-
-Currently, there is no way to condense multiple rests into a single
-multimeasure rest.
-
-@cindex condensing rests
-
@c . {Skip}
@node Skip
@subsection Skip
* Crescendo and Decrescendo::
* Bar lines::
* Breath marks::
-* Rehearsal marks::
@end menu
@subsubsection Breath marks
@cindex Breath marks
-@c . {Rehearsal marks}
-@node Rehearsal marks
-@subsubsection Rehearsal marks
-@cindex Rehearsal marks
-@cindex mark
-@cindex @code{\mark}
-
-@example
- \mark @var{unsigned};
-@cindex @code{Mark_engraver}
- \mark @var{string};
-@end example
-
-Prints a mark over or under the staff.
@c . {Bar check}
@end quotation
-
-
-
-
-
-
@c . {Lyrics}
@node Lyrics
@section Lyrics
@end lilypond
@end quotation
+@node Writing parts
+@section Writing parts
+
+@c . {Transpose}
+@menu
+* Rehearsal marks::
+* Transpose::
+* Multi measure rests::
+@end menu
+
+[TODO:
+
+partcombine
+
+rehearsal marks
+
+bar numbering
+
+tranposing midi property.
+
+]
+
+@c . {Rehearsal marks}
+@node Rehearsal marks
+@subsection Rehearsal marks
+@cindex Rehearsal marks
+@cindex mark
+@cindex @code{\mark}
+
+@example
+ \mark @var{unsigned};
+@cindex @code{Mark_engraver}
+ \mark @var{string};
+@end example
+
+Prints a mark over or under the staff.
+
+[TODO: automatic increments]
+
+@node Transpose
+@subsection Transpose
+@cindex Transpose
+@cindex transposition of pitches
+@cindex @code{\transpose}
+
+A music expression can be transposed with @code{\transpose}. The syntax
+is
+@example
+ \transpose @var{pitch} @var{musicexpr}
+@end example
+
+This means that middle C in @var{musicexpr} is transposed to
+@var{pitch}.
+
+@code{\transpose} distinguishes between enharmonic pitches: both
+@code{\transpose cis'} or @code{\transpose des'} will transpose up half
+a tone. The first version will print sharps and the second version
+will print flats.
+
+@quotation
+@lilypond[fragment,verbatim]
+\context Staff {
+ \clef "F";
+ { \key e \major; c d e f }
+ \clef "G";
+ \transpose des'' { \key e \major; c d e f }
+ \transpose cis'' { \key e \major; c d e f }
+}
+
+@end lilypond
+@end quotation
+
+If you want to use both @code{\transpose} and @code{\relative}, then
+you must use @code{\transpose} first. @code{\relative} will have no
+effect music that appears inside a @code{\transpose}.
+
+
+@c . {Multi measure rests}
+@node Multi measure rests
+@subsection Multi measure rests
+@cindex Multi measure rests
+
+@cindex @code{R}
+
+Multi measure rests are entered using `@code{R}'. It is specifically
+meant for entering parts: the rest can expand to fill a score with
+rests, or it can be printed as a single multimeasure rest This expansion
+is controlled by the property @code{Score.skipBars}. If this is set to true,
+Lily will not expand empty measures, and the appropriate number is added
+automatically.
+
+@lilypond[fragment,verbatim]
+ \time 3/4; R2.*2 \property Score.skipBars = ##t R2.*17 R2.*4
+@end lilypond
+Currently, there is no way to condense multiple rests into a single
+multimeasure rest.
+
+@cindex condensing rests
@c . {Page layout}
@section Engravers
@cindex engravers
@menu
+* Selecting contexts::
* Context definitions::
* Notation Contexts::
@end menu
-[rewrite this entirely]
+@c . {Music expressions}
+@node Selecting contexts
+@subsection Selecting contexts
+
+@cindex @code{\context}
+@cindex context selection
+
+@example
+ \context @var{contexttype} [= @var{contextname}] @var{musicexpr}
+@end example
+
+Interpret @var{musicexpr} within a context of type @var{contexttype}.
+If the context does not exist, it will be created. The new context
+can optionally be given a name.
+
+
@c . {Context definitions}
@node Context definitions
@menu
* Top level::
* Identifiers::
+* Music expressions::
* Assignments::
* Lexical details::
* Lexical modes::
@end itemize
+@node Music expressions
+@subsection Music expressions
+
+@cindex music expressions
+
+Music in LilyPond is entered as a music expression. Notes, rests, lyric
+syllables are music expressions, and you can combine music expressions
+to form new ones, for example by enclosing a list of expressions in
+@code{\sequential @{ @}} or @code{< >}. In this example, a compound
+expression is formed out of the quarter note @code{c} and a quarter note
+@code{d}:
+
+@example
+\sequential @{ c4 d4 @}
+@end example
+
+@cindex Sequential music
+@cindex @code{\sequential}
+@cindex sequential music
+@cindex @code{<}
+@cindex @code{>}
+@cindex Simultaneous music
+@cindex @code{\simultaneous}
+
+The two basic compound music expressions are simultaneous and
+sequential music.
+
+@example
+ \sequential @code{@{} @var{musicexprlist} @code{@}}
+ \simultaneous @code{@{} @var{musicexprlist} @code{@}}
+@end example
+For both, there is a shorthand:
+@example
+ @code{@{} @var{musicexprlist} @code{@}}
+@end example
+for sequential and
+@example
+ @code{<} @var{musicexprlist} @code{>}
+@end example
+for simultaneous music.
+Other compound music expressions include
+@example
+ \repeat @var{expr}
+ \transpose @var{pitch} @var{expr}
+ \apply @var{func} @var{expr}
+ \context @var{type} = @var{id} @var{expr}
+ \times @var{fraction} @var{expr}
+@end example
+
+In principle, the way in which you nest sequential and simultaneous to
+produce music is not relevant. In the following example, three chords
+are expressed in two different ways:
+
+@lilypond[fragment,verbatim,center]
+ \notes \context Voice {
+ <a c'> <b d' > <c' e'>
+ < { a b c' } { c' d' e' } >
+ }
+@end lilypond
+
+However, in some cases, LilyPond will also try to choose contexts, and
+use the structure of the music expression to do so. This can have
+undesired effects: for example, LilyPond will create a separate staff
+for each note if you start a @code{\score} with a chord:
+@lilypond[verbatim,center]
+ \score {
+ \notes <c''4 e''>
+ \paper {
+ linewidth = -1.;
+ }
+ }
+@end lilypond
+ The solution is to explicitly instantiate the context you desire.
+In this case this is typically a Voice context
+@lilypond[verbatim,center]
+ \score {
+ \notes\context Voice <c''4 e''>
+ \paper {
+ linewidth = -1.;
+ }
+ }
+@end lilypond
+If you use @code{\context Staff} you will get separate stems for each
+note head, leading to collisions, so don't use that.
+
+
+
@c . {Assignments}
@node Assignments
@subsection Assignments
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=128
-MY_PATCH_LEVEL=jcn4
+PATCH_LEVEL=129
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
depth = ..
-SUBDIRS=bugs features test regression tutorial
+SUBDIRS=bugs tricks test regression tutorial
examples=trip star-spangled-banner paddy scarlatti-test
flexamples=
+++ /dev/null
-depth = ../..
-
-LOCALSTEPMAKE_TEMPLATES=mutopia
-include $(depth)/make/stepmake.make
-
-
+++ /dev/null
-
-fragment = \notes {
- f'32 g a b b a g f
-
- \property Voice.autoBeamSettings
- \set #'(end * * * *) = #(make-moment 1 4)
- f32 g a b b a g f
-
- f32 g a
- \property Voice.stemRightBeamCount = #1 b
- \property Voice.stemLeftBeamCount = #1 b
- a g f
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-\header{
-texidoc="
-There are several ways to calculate the direction of a beam
-
-@table @samp
-@item majority
-number count of up or down notes
-@item mean
-mean centre distance of all notes
-@item median
-mean centre distance weighted per note
-@end table
-
-We should see:
-
- up down down
-
- up up down
-";
-}
-
-\score {
- \notes \relative c'' {
- % the default
- %\property Voice.Beam \set #'dir-function = #beam-dir-majority
- [d8 a]
- \property Voice.Beam \set #'dir-function = #beam-dir-mean
- [d a]
- \property Voice.Beam \set #'dir-function = #beam-dir-median
- [d a]
-
- \property Voice.Beam \set #'dir-function = #beam-dir-majority
- \time 3/8;
- [d8 a a]
- \property Voice.Beam \set #'dir-function = #beam-dir-mean
- [d a a]
- \property Voice.Beam \set #'dir-function = #beam-dir-median
- [d a a]
- }
-}
+++ /dev/null
-
-fragment = \notes {
- [b''8 b]
- \property Voice.Beam \set #'default-neutral-direction = #-1
- [b b]
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-
-fragment = \notes {
- \property Voice.Beam \set #'staff-position = #2
- \property Voice.Beam \set #'height = #-2
- [c'8 c]
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-\header{
-texidoc="
-Beams over rests.
-";
-}
-
-\score{
- \context Staff=one \notes\relative c''{
- r4 [r8 g a]
- [bes8 r16 f g a]
- [bes8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
- }
-
- \paper{
- linewidth =-1;
- }
-}
+++ /dev/null
-
-fragment = \notes {
- \property Voice.Beam \set #'direction = #1
- \property Voice.Beam \set #'height-hs = #0
- [a''8 e' d c]
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-
-fragment = \notes {
- \context Voice {
- \property Voice.crescendoText = "cresc."
- \property Voice.crescendoSpanner = #'dashed-line
- a''2\mf\< a a \!a
- }
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-\score {
- \notes \relative c'' {
- a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
- -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
- b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
- s2
- a'1
- }
- \paper { linewidth = 70 * \staffspace; }
-}
+++ /dev/null
-
-fragment = \notes {
- a''^"3 $\\times$ \\`a deux"
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-\header{
-texidoc="
-Theads can be traced automagically when they switch staffs by setting
-property @code{followThread}.
-";
-}
-% followThread: connect note heads with line when thread switches staff
-
-fragment = \notes {
- \context PianoStaff <
- \property PianoStaff.followThread = ##t
- \context Staff \context Voice {
- c'1
- \translator Staff=two
- b2 a
- }
- \context Staff=two {\clef bass; \skip 1*2;}
- >
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-fragment = \notes {
-
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-
-\version "1.3.117";
-
-% Test scm markup text and kerning
-
-% Warning
-%
-% This is not a feature, it is a hack. If you change anything,
-% it will probably break (that's because scm markup text is a
-% bit broken and needs fixing). Chances are, it's already
-% broken by the time you read this. Don't complain.
-%
-% FIXME: put in an item, and typeset by an engraver.
-
-#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
-#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
-#(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
-
-\score {
- \notes\relative c'' {
- a1^#`(rows ,dotted-eight-note " = 64")
- }
- \paper {
- linewidth = -1.;
- \translator{
- \ScoreContext
- TextScript \override #'font-shape = #'upright
- }
- }
-}
+++ /dev/null
-\score {
- \context Staff \notes <
- \context Voice=i {
- \property Voice.MultiMeasureRest \override #'staff-position = #3
- R1
- }
- \context Voice=ii {
- \property Voice.MultiMeasureRest \override #'staff-position = #-3
- R1
- }
- >
- \paper {
- \translator {
- \StaffContext
- \remove Multi_measure_rest_engraver;
- \remove Bar_engraver;
- }
- \translator {
- \VoiceContext
- \consists Multi_measure_rest_engraver;
- \consists Bar_engraver;
- }
- }
-}
+++ /dev/null
-
-fragment = \notes {
- \outputproperty #(make-type-checker 'note-head-interface)
- #'extra-offset = #'(2 . 3)
- c''2 c
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-#(define (make-text-checker text)
- (lambda (grob) (equal? text (ly-get-elt-property grob 'text))))
-
-\score {
- \notes\relative c''' {
- \property Voice.Stem \set #'direction = #1
- \outputproperty #(make-text-checker "m.d.")
- #'extra-offset = #'(-3.5 . -4.5)
- a^2^"m.d."
- }
- \paper { linewidth = -1.; }
-}
+++ /dev/null
-\score {
- \notes \relative c'' {
- a b c d
- d c b a
- }
- \paper {
- linewidth = -1.;
- \translator {
- \StaffContext
- whichBar = #""
- \remove "Time_signature_engraver";
- }
- }
-}
-
+++ /dev/null
-\score {
- \notes { c4 c4 c8 c8 }
- \paper {
- linewidth = -1.;
- \translator {
- \StaffContext
- \remove Staff_symbol_engraver;
- \consists Pitch_squash_engraver;
- \remove Clef_engraver;
- }
- }
-}
-
+++ /dev/null
-\header{
-texidoc="
-Slurs can be forced to always attach to note heads.
-";
-}
-
-fragment = \notes {
- \property Voice.Slur \set #'direction = #1
- \property Voice.Slur \set #'attachment = #'(head . head)
- g''16()g()g()g()d'()d()d()d
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-
-fragment = \notes {
- a'''' b c a
- \property Voice.TextSpanner \set #'type = #'dotted-line
- \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
- \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
- \property Staff.centralCPosition = #-13
- a\spanrequest \start "text" b c a \spanrequest \stop "text"
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-\header{
-texidoc="
-In orchestral scores and hymns, voices are traditionally combined onto
-one staff. LilyPond has a part combiner, that combines or separates two
-voices according to actual rhythm and pitch. User-defined texts such as
-``solo'' and ``@`a2'' are typeset automagically, as appropriate.
-";
-}
-
-\score{
- \context Staff = flauti <
- \time 4/4;
- \context Voice=one \partcombine Voice
- \context Thread=one \notes\relative c'' {
- c4 d e f | b,4 d c d | r2 e4 f | c4 d e f |
- c4 r e f | c4 r e f | c4 r a r | a a r a |
- a2 \property Voice.soloADue = ##f a |
- }
- \context Thread=two \notes\relative c'' {
- g4 b d f | r2 c4 d | a c c d | a4. b8 c4 d
- c r e r | r2 s2 | a,4 r a r | a r r a |
- a2 \property Voice.soloADue = ##f a |
- }
- >
- \paper{
- linewidth = 80 * \staffspace;
- \translator{
- \ThreadContext
- \consists Rest_engraver;
- }
- \translator{
- \VoiceContext
- \remove Rest_engraver;
- }
- }
-}
-
+++ /dev/null
-\header {
-texidoc="
-Simple customised music apply.
-";
-}
-
-music = \notes { c'4 d'4( e'4 f'4 }
-
-#(define (reverse-music music)
- (let* ((elements (ly-get-mus-property music 'elements))
- (reversed (reverse elements))
- (span-dir (ly-get-mus-property music 'span-direction)))
-
- (ly-set-mus-property music 'elements reversed)
-
- (if (dir? span-dir)
- (ly-set-mus-property music 'span-direction (- span-dir)))
-
- (map reverse-music reversed)
-
- music))
-
-\score {
- \context Voice {
- \music
- \apply #reverse-music \music
- }
- \paper { linewidth = -1.; }
-}
-
+++ /dev/null
-\header{
-texidoc="
-In some cases, you may want to set slur attachments by hand.
-";
-}
-
-
-fragment = \notes {
- \property Voice.Stem \set #'direction = #1
- \property Voice.Slur \set #'direction = #1
- d'32( d'4 )d8..
- \property Voice.Slur \set #'attachment = #'(stem . stem)
- d,32( d'4 )d8..
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-
-fragment = \notes {
- \property Voice.Slur \set #'direction = #1
- \property Voice.Stem \set #'length = #5.5
- g''8(g)g4
- g4(g8)g
- \property Voice.Slur \set #'attachment = #'(stem . stem)
- g8(g)g4
- g4(g8)g
-}
-
-\paper { linewidth = -1.; }
-
-\score {
- \notes\relative c \fragment
- \paper { }
-}
+++ /dev/null
-\header {
-texidoc="You can get ugly slurs, if you want.
-";
-}
-
-baseWalk = \notes \relative c {
- d,8( a' d f a d f d a f d )a
-}
-
-\score {
- \notes \context PianoStaff <
- \time 6/4;
- \context Staff=up { s1 * 6/4 }
- \context Staff=down <
- \clef bass;
- \autochange Staff \context Voice \baseWalk
- >
- >
- \paper {
- linewidth = -1.;
- \translator {
- \VoiceContext
- Slur \override #'beautiful = #5.0
- Slur \override #'direction = #1
- Stem \override #'direction = #-1
- autoBeamSettings \override #'(end * * * *)
- = #(make-moment 1 2)
- }
- \translator {
- \PianoStaffContext
- VerticalAlignment \override #'threshold = #'(5 . 5)
- }
- }
-}
-
+++ /dev/null
-\header {
-texidoc="
-@example
- Here's a copy of my feature request :
-@quotation
- Your task, if you accept it is to implement a \smarttranspose
- command> that would translate such oddities into more natural
- notations. Double accidentals should be removed, as well as #E
- (-> F), bC (-> B), bF (-> E), #B (-> C).
-@end quotation
-
-You mean like this. (Sorry 'bout the nuked indentation.)
-@end example
-";
-}
-
-% Btw, I've leant an el-neato trick for formatting code in email messages,
-% using inderect buffers.
-%
-% M-x make-indirect-buffer RET RET foo RET C-x b foo RET
-% Select region and then narrow: C-x n n
-% Set mode, eg: M-x sch TAB RET
-%
-
-#(define (unhair-pitch p)
- (let* ((o (pitch-octave p))
- (a (pitch-alteration p))
- (n (pitch-notename p)))
-
- (cond
- ((and (> a 0) (or (eq? n 6) (eq? n 2)))
- (set! a (- a 1)) (set! n (+ n 1)))
- ((and (< a 0) (or (eq? n 0) (eq? n 3)))
- (set! a (+ a 1)) (set! n (- n 1))))
-
- (cond
- ((eq? a 2) (set! a 0) (set! n (+ n 1)))
- ((eq? a -2) (set! a 0) (set! n (- n 1))))
-
- (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
- (if (> n 7) (begin (set! o (+ o 1)) (set! n (- n 7))))
-
- (make-pitch o n a)))
-
-#(define (smart-transpose music pitch)
- (let* ((es (ly-get-mus-property music 'elements))
- (e (ly-get-mus-property music 'element))
- (p (ly-get-mus-property music 'pitch))
- (body (ly-get-mus-property music 'body))
- (alts (ly-get-mus-property music 'alternatives)))
-
- (if (pair? es)
- (ly-set-mus-property
- music 'elements
- (map (lambda (x) (smart-transpose x pitch)) es)))
-
- (if (music? alts)
- (ly-set-mus-property
- music 'alternatives
- (smart-transpose alts pitch)))
-
- (if (music? body)
- (ly-set-mus-property
- music 'body
- (smart-transpose body pitch)))
-
- (if (music? e)
- (ly-set-mus-property
- music 'element
- (smart-transpose e pitch)))
-
- (if (pitch? p)
- (begin
- (set! p (unhair-pitch (Pitch::transpose p pitch)))
- (ly-set-mus-property music 'pitch p)))
-
- music))
-
-
-music = \notes \relative c' { c4 d e f g a b c }
-
-\score {
- \notes \context Staff {
- \transpose ais' \music
- \apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1)))
- \music
- }
- \paper { linewidth = -1.; }
-}
-
\clef "G^8";c'1^"{sup 8?}" c'1 \bar "||";
\clef "bass";c'1^"{bass}" \bar "||";
\clef "subbass";c'1^"{subbass}" \bar "||";
- \property Staff.clefStyle="transparent"
- \clef "treble"; c'1^"clefStyle=\"transparent\"" \bar "||";
- \property Staff.clefStyle="fullSizeChanges"
- \clef "treble"; c'1^"clefStyle=\"fullSizeChanges\"" \bar "|.";
+ \property Staff.Clef \override #'transparent = ##t
+ \clef "treble"; c'1^"transparent=\#t" \bar "||";
+ \property Staff.Clef \override #'transparent = ##f
+ \context Staff \outputproperty #(make-type-checker 'clef-interface) #'full-size-change = ##t
+ \clef "french"; c'1^"full-size-change = \#t" \bar "|.";
}
\paper{
+ \translator{
+ \StaffContext
+% Clef \override #'full-size-change = ##t
+ }
}
}
--- /dev/null
+\header {
+texidoc = "Note head lines (eg glissando)
+run between centers of the note heads.";
+}
+
+\include "paper20.ly"
+\include "norsk.ly"
+
+su = \notes{ \translator Staff = up}
+sd = \notes{ \translator Staff = down}
+
+\score {
+ \context PianoStaff
+ \notes <
+ \context Staff = up {
+ \property PianoStaff.connectArpeggios = ##t
+ \showStaffSwitch
+ \clef F;
+ c4 d \sd h a g8 f16 e32 d \su g2 \glissando a,4 \sd \break a2. \su g4 \glissando f1
+ }
+ \context Staff = down {
+ \clef F; s1*4
+ }
+ >
+\paper {
+ linewidth = 8.0 \cm;
+}
+}
+
}
\paper {
- \paper_sixteen
+ \paperSixteen
indent=100.0\mm;
linewidth=150.0\mm;
\translator {
\version "1.3.117";
-incipit = \notes\relative c'{
- <b1 fis' b d>
+violinincipit = \notes\relative c''{
+ \clef "french";
+ \time 2/2;
+ \property Staff.TimeSignature \override #'style = #'old
+ a4. b8 c4 fis |
+% <b1 fis' b d>
+ \property Staff.TimeSignature \override #'style = #'C
}
-emptyincipit = \notes{
- s1
+bcincipit = \notes\relative c{
+ \clef bass;
+ \property Staff.TimeSignature \override #'style = #'old
+ b2. cis4 |
+ \property Staff.TimeSignature \override #'style = #'C
}
violin = \notes\relative c''{
- \specialkey \keysignature f' fis'' g' gis'';
+% Key signatures with different alterations in different octaves
+% are broken since 1.3.58!
+% \specialkey \keysignature f' fis'' g' gis'';
+ \key d \major;
\time 2/2;
- \clef "treble";
+ \clef treble;
- \key;
a4. b8 c4 fis |
gis~ gis8 fis16^\trill ()e b8 c \context Staff<{\voiceOne a d}{\voiceTwo es,4}>|
}
\score{
<
\context Staff = violin {\notes{
- \property Staff.clefStyle = "transparent"
- \incipit \bar ".|"; \endincipit
+ \property Staff.Clef \override #'transparent = ##t
+ \violinincipit \bar ".|";
+ \property Staff.Clef \revert #'transparent
+ \endincipit
\violin
}}
\context Staff = BC{\notes{
- \property Staff.clefStyle = "transparent"
- \emptyincipit \bar ".|"; \endincipit
+ \property Staff.Clef \override #'transparent = ##t
+ \bcincipit \bar ".|";
+ \property Staff.Clef \revert #'transparent
+ \endincipit
\BC
}}
>
- \paper{
- \translator{\StaffContext
- timeSignatureStyle = "C";
- }
- }
}
\score{
\context Staff < \global \one >
- \paper {
- \translator { \OrchestralPartStaffContext
- }
- }
}
--- /dev/null
+depth = ../..
+
+LOCALSTEPMAKE_TEMPLATES=mutopia
+include $(depth)/make/stepmake.make
+
+
--- /dev/null
+
+fragment = \notes {
+ f'32 g a b b a g f
+
+ \property Voice.autoBeamSettings
+ \set #'(end * * * *) = #(make-moment 1 4)
+ f32 g a b b a g f
+
+ f32 g a
+ \property Voice.stemRightBeamCount = #1 b
+ \property Voice.stemLeftBeamCount = #1 b
+ a g f
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+\header{
+texidoc="
+There are several ways to calculate the direction of a beam
+
+@table @samp
+@item majority
+number count of up or down notes
+@item mean
+mean centre distance of all notes
+@item median
+mean centre distance weighted per note
+@end table
+
+We should see:
+
+ up down down
+
+ up up down
+";
+}
+
+\score {
+ \notes \relative c'' {
+ % the default
+ %\property Voice.Beam \set #'dir-function = #beam-dir-majority
+ [d8 a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-mean
+ [d a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-median
+ [d a]
+
+ \property Voice.Beam \set #'dir-function = #beam-dir-majority
+ \time 3/8;
+ [d8 a a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-mean
+ [d a a]
+ \property Voice.Beam \set #'dir-function = #beam-dir-median
+ [d a a]
+ }
+}
--- /dev/null
+
+fragment = \notes {
+ [b''8 b]
+ \property Voice.Beam \set #'default-neutral-direction = #-1
+ [b b]
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+
+fragment = \notes {
+ \property Voice.Beam \set #'staff-position = #2
+ \property Voice.Beam \set #'height = #-2
+ [c'8 c]
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+\header{
+texidoc="
+Beams over rests.
+";
+}
+
+\score{
+ \context Staff=one \notes\relative c''{
+ r4 [r8 g a]
+ [bes8 r16 f g a]
+ [bes8 r16 \property Voice.stemLeftBeamCount = #1 f g a]
+ }
+
+ \paper{
+ linewidth =-1;
+ }
+}
--- /dev/null
+
+fragment = \notes {
+ \property Voice.Beam \set #'direction = #1
+ \property Voice.Beam \set #'height-hs = #0
+ [a''8 e' d c]
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+
+fragment = \notes {
+ \context Voice {
+ \property Voice.crescendoText = "cresc."
+ \property Voice.crescendoSpanner = #'dashed-line
+ a''2\mf\< a a \!a
+ }
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+\score {
+ \notes \relative c'' {
+ a-#"\\embeddedps{3 4 moveto 5 3 rlineto stroke}"
+ -#"\\embeddedps{ [ 0 1 ] 0 setdash 3 5 moveto 5 -3 rlineto stroke}"
+ b-#"\\embeddedps{3 4 moveto 0 0 1 2 8 4 20 3.5 rcurveto stroke}"
+ s2
+ a'1
+ }
+ \paper { linewidth = 70 * \staffspace; }
+}
--- /dev/null
+
+fragment = \notes {
+ a''^"3 $\\times$ \\`a deux"
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+\header{
+texidoc="
+Theads can be traced automagically when they switch staffs by setting
+property @code{followThread}.
+";
+}
+% followThread: connect note heads with line when thread switches staff
+
+fragment = \notes {
+ \context PianoStaff <
+ \property PianoStaff.followThread = ##t
+ \context Staff \context Voice {
+ c'1
+ \translator Staff=two
+ b2 a
+ }
+ \context Staff=two {\clef bass; \skip 1*2;}
+ >
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+fragment = \notes {
+
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+
+\version "1.3.117";
+
+% Test scm markup text and kerning
+
+% Warning
+%
+% This is not a feature, it is a hack. If you change anything,
+% it will probably break (that's because scm markup text is a
+% bit broken and needs fixing). Chances are, it's already
+% broken by the time you read this. Don't complain.
+%
+% FIXME: put in an item, and typeset by an engraver.
+
+#(define note '(rows (music "noteheads-2" ((kern . -0.1) "flags-stem"))))
+#(define eight-note `(rows ,note ((kern . -0.1) (music ((raise . 3.5) "flags-u3")))))
+#(define dotted-eight-note `(rows ,eight-note (music "dots-dot")))
+
+\score {
+ \notes\relative c'' {
+ a1^#`(rows ,dotted-eight-note " = 64")
+ }
+ \paper {
+ linewidth = -1.;
+ \translator{
+ \ScoreContext
+ TextScript \override #'font-shape = #'upright
+ }
+ }
+}
--- /dev/null
+\score {
+ \context Staff \notes <
+ \context Voice=i {
+ \property Voice.MultiMeasureRest \override #'staff-position = #3
+ R1
+ }
+ \context Voice=ii {
+ \property Voice.MultiMeasureRest \override #'staff-position = #-3
+ R1
+ }
+ >
+ \paper {
+ \translator {
+ \StaffContext
+ \remove Multi_measure_rest_engraver;
+ \remove Bar_engraver;
+ }
+ \translator {
+ \VoiceContext
+ \consists Multi_measure_rest_engraver;
+ \consists Bar_engraver;
+ }
+ }
+}
--- /dev/null
+
+fragment = \notes {
+ \outputproperty #(make-type-checker 'note-head-interface)
+ #'extra-offset = #'(2 . 3)
+ c''2 c
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+#(define (make-text-checker text)
+ (lambda (grob) (equal? text (ly-get-elt-property grob 'text))))
+
+\score {
+ \notes\relative c''' {
+ \property Voice.Stem \set #'direction = #1
+ \outputproperty #(make-text-checker "m.d.")
+ #'extra-offset = #'(-3.5 . -4.5)
+ a^2^"m.d."
+ }
+ \paper { linewidth = -1.; }
+}
--- /dev/null
+\score {
+ \notes \relative c'' {
+ a b c d
+ d c b a
+ }
+ \paper {
+ linewidth = -1.;
+ \translator {
+ \StaffContext
+ whichBar = #""
+ \remove "Time_signature_engraver";
+ }
+ }
+}
+
--- /dev/null
+\score {
+ \notes { c4 c4 c8 c8 }
+ \paper {
+ linewidth = -1.;
+ \translator {
+ \StaffContext
+ \remove Staff_symbol_engraver;
+ \consists Pitch_squash_engraver;
+ \remove Clef_engraver;
+ }
+ }
+}
+
--- /dev/null
+\header{
+texidoc="
+Slurs can be forced to always attach to note heads.
+";
+}
+
+fragment = \notes {
+ \property Voice.Slur \set #'direction = #1
+ \property Voice.Slur \set #'attachment = #'(head . head)
+ g''16()g()g()g()d'()d()d()d
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+
+fragment = \notes {
+ a'''' b c a
+ \property Voice.TextSpanner \set #'type = #'dotted-line
+ \property Voice.TextSpanner \set #'edge-height = #'(0 . 1.5)
+ \property Voice.TextSpanner \set #'edge-text = #'("8va " . "")
+ \property Staff.centralCPosition = #-13
+ a\spanrequest \start "text" b c a \spanrequest \stop "text"
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+\header{
+texidoc="
+In orchestral scores and hymns, voices are traditionally combined onto
+one staff. LilyPond has a part combiner, that combines or separates two
+voices according to actual rhythm and pitch. User-defined texts such as
+``solo'' and ``@`a2'' are typeset automagically, as appropriate.
+";
+}
+
+\score{
+ \context Staff = flauti <
+ \time 4/4;
+ \context Voice=one \partcombine Voice
+ \context Thread=one \notes\relative c'' {
+ c4 d e f | b,4 d c d | r2 e4 f | c4 d e f |
+ c4 r e f | c4 r e f | c4 r a r | a a r a |
+ a2 \property Voice.soloADue = ##f a |
+ }
+ \context Thread=two \notes\relative c'' {
+ g4 b d f | r2 c4 d | a c c d | a4. b8 c4 d
+ c r e r | r2 s2 | a,4 r a r | a r r a |
+ a2 \property Voice.soloADue = ##f a |
+ }
+ >
+ \paper{
+ linewidth = 80 * \staffspace;
+ \translator{
+ \ThreadContext
+ \consists Rest_engraver;
+ }
+ \translator{
+ \VoiceContext
+ \remove Rest_engraver;
+ }
+ }
+}
+
--- /dev/null
+\header {
+texidoc="
+Simple customised music apply.
+";
+}
+
+music = \notes { c'4 d'4( e'4 f'4 }
+
+#(define (reverse-music music)
+ (let* ((elements (ly-get-mus-property music 'elements))
+ (reversed (reverse elements))
+ (span-dir (ly-get-mus-property music 'span-direction)))
+
+ (ly-set-mus-property music 'elements reversed)
+
+ (if (dir? span-dir)
+ (ly-set-mus-property music 'span-direction (- span-dir)))
+
+ (map reverse-music reversed)
+
+ music))
+
+\score {
+ \context Voice {
+ \music
+ \apply #reverse-music \music
+ }
+ \paper { linewidth = -1.; }
+}
+
--- /dev/null
+\header{
+texidoc="
+In some cases, you may want to set slur attachments by hand.
+";
+}
+
+
+fragment = \notes {
+ \property Voice.Stem \set #'direction = #1
+ \property Voice.Slur \set #'direction = #1
+ d'32( d'4 )d8..
+ \property Voice.Slur \set #'attachment = #'(stem . stem)
+ d,32( d'4 )d8..
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+
+fragment = \notes {
+ \property Voice.Slur \set #'direction = #1
+ \property Voice.Stem \set #'length = #5.5
+ g''8(g)g4
+ g4(g8)g
+ \property Voice.Slur \set #'attachment = #'(stem . stem)
+ g8(g)g4
+ g4(g8)g
+}
+
+\paper { linewidth = -1.; }
+
+\score {
+ \notes\relative c \fragment
+ \paper { }
+}
--- /dev/null
+\header {
+texidoc="You can get ugly slurs, if you want.
+";
+}
+
+baseWalk = \notes \relative c {
+ d,8( a' d f a d f d a f d )a
+}
+
+\score {
+ \notes \context PianoStaff <
+ \time 6/4;
+ \context Staff=up { s1 * 6/4 }
+ \context Staff=down <
+ \clef bass;
+ \autochange Staff \context Voice \baseWalk
+ >
+ >
+ \paper {
+ linewidth = -1.;
+ \translator {
+ \VoiceContext
+ Slur \override #'beautiful = #5.0
+ Slur \override #'direction = #1
+ Stem \override #'direction = #-1
+ autoBeamSettings \override #'(end * * * *)
+ = #(make-moment 1 2)
+ }
+ \translator {
+ \PianoStaffContext
+ VerticalAlignment \override #'threshold = #'(5 . 5)
+ }
+ }
+}
+
--- /dev/null
+\header {
+texidoc="
+@example
+ Here's a copy of my feature request :
+@quotation
+ Your task, if you accept it is to implement a \smarttranspose
+ command> that would translate such oddities into more natural
+ notations. Double accidentals should be removed, as well as #E
+ (-> F), bC (-> B), bF (-> E), #B (-> C).
+@end quotation
+
+You mean like this. (Sorry 'bout the nuked indentation.)
+@end example
+";
+}
+
+% Btw, I've leant an el-neato trick for formatting code in email messages,
+% using inderect buffers.
+%
+% M-x make-indirect-buffer RET RET foo RET C-x b foo RET
+% Select region and then narrow: C-x n n
+% Set mode, eg: M-x sch TAB RET
+%
+
+#(define (unhair-pitch p)
+ (let* ((o (pitch-octave p))
+ (a (pitch-alteration p))
+ (n (pitch-notename p)))
+
+ (cond
+ ((and (> a 0) (or (eq? n 6) (eq? n 2)))
+ (set! a (- a 1)) (set! n (+ n 1)))
+ ((and (< a 0) (or (eq? n 0) (eq? n 3)))
+ (set! a (+ a 1)) (set! n (- n 1))))
+
+ (cond
+ ((eq? a 2) (set! a 0) (set! n (+ n 1)))
+ ((eq? a -2) (set! a 0) (set! n (- n 1))))
+
+ (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
+ (if (> n 7) (begin (set! o (+ o 1)) (set! n (- n 7))))
+
+ (make-pitch o n a)))
+
+#(define (smart-transpose music pitch)
+ (let* ((es (ly-get-mus-property music 'elements))
+ (e (ly-get-mus-property music 'element))
+ (p (ly-get-mus-property music 'pitch))
+ (body (ly-get-mus-property music 'body))
+ (alts (ly-get-mus-property music 'alternatives)))
+
+ (if (pair? es)
+ (ly-set-mus-property
+ music 'elements
+ (map (lambda (x) (smart-transpose x pitch)) es)))
+
+ (if (music? alts)
+ (ly-set-mus-property
+ music 'alternatives
+ (smart-transpose alts pitch)))
+
+ (if (music? body)
+ (ly-set-mus-property
+ music 'body
+ (smart-transpose body pitch)))
+
+ (if (music? e)
+ (ly-set-mus-property
+ music 'element
+ (smart-transpose e pitch)))
+
+ (if (pitch? p)
+ (begin
+ (set! p (unhair-pitch (Pitch::transpose p pitch)))
+ (ly-set-mus-property music 'pitch p)))
+
+ music))
+
+
+music = \notes \relative c' { c4 d e f g a b c }
+
+\score {
+ \notes \context Staff {
+ \transpose ais' \music
+ \apply #(lambda (x) (smart-transpose x (make-pitch 0 5 1)))
+ \music
+ }
+ \paper { linewidth = -1.; }
+}
+
if (script_p_)
{
- Side_position::add_staff_support (script_p_);
typeset_grob (script_p_);
script_p_ = 0;
}
#include "paper-column.hh"
#include "staff-symbol-referencer.hh"
+#include <math.h>
+
SCM
Line_spanner::line_atom (Grob* me, Real dx, Real dy)
{
}
Real gap = gh_scm2double (me->get_grob_property ("gap"));
-
+ Real dist; /*distance between points */
+
+ Offset ofxy (gap, 0); /*offset from start point to start of line*/
Offset dxy ;
Offset my_off;
Offset his_off;
+
if (bound[LEFT]->break_status_dir () || bound[RIGHT]->break_status_dir ())
/* across line break */
}
else
{
- dxy[X_AXIS] = bound[RIGHT]->extent (common[X_AXIS], X_AXIS)[LEFT]
- - bound[LEFT]->extent (common[X_AXIS], X_AXIS)[RIGHT];
+ Real off = gap + ((bound[LEFT]->extent (bound[LEFT], X_AXIS).length ()*3)/4); // distance from center to start of line
+ dxy[X_AXIS] = bound[RIGHT]->extent (common[X_AXIS], X_AXIS).center ()
+ - bound[LEFT]->extent (common[X_AXIS], X_AXIS).center ();
dxy[Y_AXIS] = bound[RIGHT]->extent (common[Y_AXIS], Y_AXIS).center ()
- bound[LEFT]->extent (common[Y_AXIS], Y_AXIS).center ();
- dxy[X_AXIS] -= 2 * gap;
+
+ dist = sqrt(dxy[X_AXIS]*dxy[X_AXIS]+dxy[Y_AXIS]*dxy[Y_AXIS]);
+ ofxy = dxy*(off/dist);
+ dxy -= 2*ofxy;
my_off = Offset (me->relative_coordinate (common[X_AXIS], X_AXIS),
me->relative_coordinate (common[Y_AXIS], Y_AXIS));
Box b (Interval (0, dxy[X_AXIS]), Interval (0, dxy[Y_AXIS]));
line = Molecule (b, list);
- line.translate_axis (bound[LEFT]->extent (bound[LEFT], X_AXIS).length (), X_AXIS);
+ line.translate_axis (bound[LEFT]->extent (bound[LEFT], X_AXIS).length ()/2, X_AXIS);
- Offset g (gap, 0);
- line.translate (g - my_off + his_off);
+ //Offset g (gap, 0);
+ line.translate (ofxy - my_off + his_off);
return line.smobbed_copy ();
}
&& (to_boolean (get_property ("unison"))
|| to_boolean (get_property ("unisilence")))
&& to_boolean (get_property ("soloADue"))))
- i.elem_l_->suicide ();
+ i.elem_l_->suicide ();
}
return;
#endif
- if (s == ly_symbol2scm ("allways")
- || (s == SCM_EOL
+ if (gh_equal_p (s, ly_symbol2scm ("allways"))
+ || (s == SCM_EOL
&& daddy_trans_l_->id_str_.left_str (3) == "two"
&& (to_boolean (get_property ("unison"))
|| to_boolean (get_property ("unisilence")))))
{
if (Span_req *s = dynamic_cast <Span_req *> (m))
{
- if (s->get_mus_property ("span-type") == ly_symbol2scm (*p))
+ if (scm_equal_p (s->get_mus_property ("span-type"),
+ ly_str02scm ( *p)) == SCM_BOOL_T)
{
return true;
}
&& daddy_trans_l_->id_str_.left_str (3) == "two"
&& (to_boolean (get_property ("unison"))
|| to_boolean (get_property ("unisilence")))))
-
- for (char const **p = junk_interfaces; *p; p++)
- if (i.elem_l_->has_interface (ly_symbol2scm (*p)))
- {
- i.elem_l_->suicide ();
- return;
- }
+ for (char const **p = junk_interfaces; *p; p++)
+ if (i.elem_l_->has_interface (ly_symbol2scm (*p)))
+ {
+ i.elem_l_->suicide ();
+ return;
+ }
}
% End the incipit and print a ``normal line start''.
endincipit = \notes{
\partial 16; s16 % Hack to handle e.g. \bar ".|"; \endincipit
- \property Staff.clefStyle = #"fullSizeChanges"
+ \context Staff \outputproperty #(make-type-checker 'clef-interface) #'full-size-change = ##t
+ \context Staff \outputproperty #(make-type-checker 'clef-interface) #'non-default = ##t
\bar "";
}
$(outdir)/%.latex: %.doc
rm -f $@
- LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/features/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ $<
+ LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ $<
chmod -w $@
# don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir.
# it is not, for --scrdir builds
$(outdir)/%.texi: %.tely
rm -f $@
- LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/features/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --format=texi $<
+ LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --format=texi $<
chmod -w $@
# nexi: no-lily texi
# for plain info doco: don't run lily
$(outdir)/%.nexi: %.tely
rm -f $@
- LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) --no-lily -I $(pwd) -I $(input-dir)/features/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ --format=texi $<
+ LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) --no-lily -I $(pwd) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ --format=texi $<
mv $(@D)/$(*F).texi $@
chmod -w $@
Begin3
Title: LilyPond
-Version: 1.3.128
-Entered-date: 05FEB01
+Version: 1.3.129
+Entered-date: 09FEB01
Description:
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 1000k lilypond-1.3.128.tar.gz
+ 1000k lilypond-1.3.129.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.128.tar.gz
+ 1000k lilypond-1.3.129.tar.gz
Copying-policy: GPL
End
%define info yes
Name: lilypond
-Version: 1.3.128
+Version: 1.3.129
Release: 1
License: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.128.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.129.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
# Icon: lilypond-icon.gif
save reduced_il;
reduced_il# = staff_space# * reduction;
define_pixels(reduced_il);
- set_char_box(0,.6reduced_il#,reduced_il#,reduced_il#);
- pickup pencircle scaled 1.5 stafflinethickness;
+ set_char_box(.5reduced_il#,1.25reduced_il#,reduced_il#,reduced_il#);
+ pickup pencircle scaled 3.33 stafflinethickness;
draw (b,h) -- (b,-d);
draw (w,h) -- (w,-d);
enddef;
))
(DynamicLineSpanner . (
- (axes . (1))
- (direction . -1)
+ (axes . ( 1))
(padding . 0.6)
(minimum-space . 1.2)
(meta . ,(grob-description "DynamicLineSpanner" dynamic-interface axis-group-interface side-position-interface))