+1.3.125.jcn2
+============
+
+* Moved feature and regression-test input to input/feature, input/regression.
+
+* Added some regtests.
+
+* Bugfix: auto-knee for beam over rest.
+
+* Fixes for Coriolan and viola Solo Cello Suites.
+
+* Replaced generic 'collapse-height' for System_start_delimiter with
+brace-collapse-height, bracket-collapse-height, bar-line-collapse-height.
+
+* Bugfix: measure System_start_delimiter's *-collapse-height in staff-space.
+
1.3.125.jcn1
============
* Fixed some info and html links.
+* Automatic knees now on by default for vertical distances >= 7 staff-space.
+
1.3.124.jcn3
============
@lilypondfile[printfilename]{break.ly}
+@lilypondfile[printfilename]{bar-number.ly}
+
@lilypondfile[printfilename]{bar-scripts.ly}
@lilypondfile[printfilename]{staff-margin.ly}
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=125
-MY_PATCH_LEVEL=jcn1
+MY_PATCH_LEVEL=jcn2
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
depth = ..
-SUBDIRS=test bugs tutorial
+SUBDIRS=bugs features test regression tutorial
examples=trip star-spangled-banner paddy scarlatti-test
flexamples=
-\header{
-texidoc="
-Hara kiri staffs kill themselves if they are empty. This example really
-contains two staffs, but the second contains only spaces, and is
-therefore removed. Also, any staff brackets and braces are removed.
-";
-}
-
-\version "1.3.117";
-zager = \context Staff = zager \notes \relative c'' {
- \clef treble;
- c1
-}
-
-zoger = \context Staff = zoger \notes \relative c'' {
- \clef treble;
- \skip 1* 1;
-}
-
-zagers = \context GrandStaff <
- \zager
- \zoger
->
-
-\score{
- <
- \context StaffGroup = zagers <
- \zagers
- >
- >
- \paper{
- linewidth = 80.0\mm;
-
- \translator { \HaraKiriStaffContext }
-%uh?
-
- }
-}
-
-
--- /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 #'y-position-hs = #4
+ \property Voice.Beam \set #'height-hs = #-4
+ [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
+
+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.; }
+}
+
--- /dev/null
+depth = ../..
+
+LOCALSTEPMAKE_TEMPLATES=mutopia
+include $(depth)/make/stepmake.make
+
+
--- /dev/null
+\header{
+texidoc="
+A sharp sign after a double sharp sign, as well as a flat sign
+after a double flat sign is automatically prepended with a
+natural sign.
+";
+}
+\version "1.3.117";
+
+
+thenotes = \notes \relative cis' { \time 4/4;
+gisis'4 gis gisis ges |
+geses ges geses gis |
+gisis g geses g |
+gis g ges g |
+\key a \major;
+gisis4 gis gisis ges |
+geses ges geses gis |
+gisis g geses g |
+gis g ges g |
+}
+
+\score { < \context Staff \thenotes
+ \context NoteNames {
+ \property NoteNames.basicNoteNameProperties \override #'no-spacing-rods = ##f
+ \thenotes
+ }
+ >
+}
--- /dev/null
+\header{
+texidoc="
+Accidentals work: the second note does not get a sharp. The third and
+fourth show forced and courtesy accidentals.
+";
+}
+
+foo = \notes\relative c'' { \key as \major; dis4 dis dis! dis? }
+
+\score {
+
+ < \foo
+ \context NoteNames \foo
+ >
+}
--- /dev/null
+\header{
+texidoc="
+Arpeggios are supported, both cross-staff and broken single staff.
+";
+}
+
+\version "1.3.117";
+
+\score{
+ \context PianoStaff <
+ \context Staff=one \notes\relative c''{
+ \context Voice < fis,-\arpeggio d a >
+ %%\property PianoStaff.SpanArpeggio \override #'connect = ##t
+ \property PianoStaff.connectArpeggios = ##t
+ <fis,\arpeggio a c>
+ }
+ \context Staff=two \notes\relative c{
+ \clef bass;
+ \context Voice < g b d-\arpeggio >
+ <g\arpeggio b d>
+ }
+ >
+}
--- /dev/null
+\header{
+texidoc="
+The first two a8 notes should not be beamed.
+Also, no automatic beaming accross bar lines.
+";
+}
+
+\score{
+\notes \notes\relative c'' {
+\time 2/8;
+a8 a
+\time 6/8;
+a16 cis d a bes g fis4 g8
+%a4. fis4 g8
+a16 g a bes c d % ees8 d c
+}
+\paper{
+ linewidth=-1.;
+}
+}
\ No newline at end of file
--- /dev/null
+\header{
+texidoc="
+Auto change piano staff switches voices between up and down staffs
+automatically; rests are switched along with the coming note.
+";
+}
+
+\score {
+ \notes \context PianoStaff <
+ \context Staff = "up" {
+ \autochange Staff \context Voice = VA < \relative c' { g4 a b c d r4 a g } >
+ }
+ \context Staff = "down" {
+ \clef bass;
+ s1*2
+ }
+
+ >
+
+}
--- /dev/null
+\header{
+texidoc="Two automatic knees";
+}
+
+\score {
+ \notes \context PianoStaff <
+ \context Staff = "up" \notes\relative c''{
+ [ b8 \translator Staff="down" d,, ]
+ [ c \translator Staff="up" c'' ]
+ [ b, \translator Staff="down" d ]
+ }
+ \context Staff = "down" {
+ \clef bass;
+ s2.
+ }
+ >
+ \paper{
+ linewidth = 40*\staffspace;
+% Now by default
+% \translator{
+% \VoiceContext
+% Beam \override #'auto-knee-gap = #7
+% }
+ }
+}
--- /dev/null
+\header{
+texidoc="One automatic knee";
+}
+
+\score {
+ \context Staff \notes\relative c''{
+ [c'8 c,,] [c8 e']
+ }
+ \paper{
+ linewidth = 40*\staffspace;
+% Now by default
+% \translator {
+% \VoiceContext
+% Beam \override #'auto-knee-gap = #7
+% }
+ }
+}
--- /dev/null
+\header {
+texidoc="Bar number settable and padding adjustable.";
+}
+
+\score {
+ \notes \relative c'' {
+ c1 c\break
+ c1 c\break
+ \property Score.currentBarNumber = #25
+ \property Score.BarNumber \override #'padding = #3
+ c1 c\break
+ }
+ \paper {
+ linewidth = 40*\staffspace;
+ \translator {
+ \BarNumberingStaffContext
+ }
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Markings that are attached to (invisible) barlines are
+delicate: the are attached to the rest of the score without the score
+knowing it. Consequently, they fall over often.
+";
+}
+
+\version "1.3.117";
+
+onestaff = \context Staff = foo\notes {
+ \property Staff.instr = instr
+ \property Staff.instrument = instrument \mark "B";
+ c1 \mark "A"; \break c2 c2 \break
+}
+
+grstaff = \notes \context GrandStaff <
+ \context Staff = bar {
+
+ \property Staff.instr = instr
+
+ \mark "B"; \break c1 \mark "A"; c2 }
+ \context Staff = bufl { c1 c2 }
+>
+
+scpaper = \paper {\translator {\OrchestralScoreContext}}
+stpaper = \paper{ \translator {\BarNumberingStaffContext }}
+
+scscore = \score { \grstaff \paper {
+\scpaper
+}}
+
+
+stscore = \score { \onestaff \paper {
+ \stpaper
+}}
+
+%\score {\stscore}
+\score {\scscore
+\header { title = "bar scripts"; }
+}
--- /dev/null
+\header{
+texidoc="
+Beams can be typeset over fixed distance aligned staffs, beam
+beautification doesn't really work, but knees do. Beams should be
+behave well, wherever the switching point is.
+";
+}
+\score{
+ \context PianoStaff <
+ \context Staff=one \notes\relative c'{
+ \stemUp [c8 c \translator Staff=two \stemUp c c]
+ [c c c c]
+ \translator Staff=one
+ \stemDown [c8 c \translator Staff=two \stemUp c c]
+ r2
+ \stemDown [c8 c \translator Staff=one \stemDown c c]
+ r2
+ \translator Staff=two
+ \stemUp [c8 c \translator Staff=one \stemDown c c]
+ r2
+ }
+ \context Staff=two \notes\relative c'{
+ \clef bass;
+ s1
+ s1
+ s1
+ s1
+ }
+ >
+}
+
+\version "1.3.117";
--- /dev/null
+\header{
+texidoc="
+Beams should behave reasonably well, even under extreme circumstances.
+Stems may be short, but noteheads should never touch the beam.
+";
+}
+\version "1.3.117";
+\score{
+ \notes\relative c''{
+ [g8 c c,]
+ [c16 c'' a f]
+ \stemUp
+ [c,,32 c'' a f]
+
+ }
+ \paper{
+ linewidth=-1.;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+beams should look the same
+";
+}
+
+\score {
+ \context Voice \notes\relative c {
+
+ [d''8 d d] [d g d]
+ c c
+
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Beams should always reach the middle staff line. The second beam
+counting from the note head side, should never be lower than the
+second staff line. This does not hold for grace note beams.
+Override with @code{noStemExtend}.
+";
+}
+\version "1.3.117";
+
+\score {
+ \context Voice \notes\relative c {
+ [f8 f] [f64 f] \grace { [f8 e8] }
+ \property Grace.Stem \override #'no-stem-extend = ##t
+ [f8 f]
+
+ }
+ \paper {
+ linewidth=-1.0;
+ }
+ \midi { }
+}
--- /dev/null
+\header{
+texidoc="
+Beaming is generated automatically. Beams may cross bar lines. In that
+case, line breaks are forbidden. Yet clef and key signatures are
+hidden just as with breakable bar lines.
+";
+}
+
+\score { \context Staff \notes \relative c'' {
+ [c8. c16]
+ [c8. c16 c8. c16]
+ [c16 c8.] |
+ [c8. c16 c16 c8.]
+ [c8. c32 c32]
+ [c8 c8] |
+ [c16 c16]
+ [c32 c32]
+ [c64 c64]
+ c32
+ [c8 c,4 c'8] % should warn here!
+ [c8 c c] c8 % over barline
+ [c16 c8 c16]
+ [c32 c16 c16 c16 c32]
+ [c32 c16 c8 c32] % hmm ?
+
+ }}
+
--- /dev/null
+\header{
+texidoc="
+The same mechanism can be used to force pagebreaks.
+";
+}
+
+
+% In reality, you'd use #"\\newpage" instead of "(pagebreak)", of course.
+
+\score {
+\notes { c1
+
+ \context Score \outputproperty #(make-type-checker 'paper-column-interface)
+ #'between-system-string = #"(pagebreak)\n\n"
+ \break
+
+c1 }
+
+}
--- /dev/null
+\header{
+texidoc="
+Breaks can be encouraged and discouraged using @code{\break} and
+@code{\noBreak}. They are abbrevs for @code{\penalty} commands.
+";
+}
+
+
+\score{
+ \notes\context Voice{
+ \emptyText
+ c1 c1^"no break after 2nd note" \noBreak c1 c1
+
+ c1^"break after this" \break c1 c1
+ }
+ \paper { linewidth = 4.0\cm;}
+}
--- /dev/null
+\header{
+texidoc="
+Breathing signs, also used for phrasing, do normally not influence
+global spacing -- only if space gets tight, notes are shifted to make
+room for the breathing sign. Breathing signs break beams running
+through their voice. In the following example, the notes in the first
+two measures all have the same distance from each other:
+";
+}
+
+
+\version "1.3.117";
+
+\score {
+ \notes \relative c' {
+ \key es \major; \time 3/4;
+ < \context Voice = two { \stemDown es4 bes es }
+ \context Voice = one { \stemUp g4 as g }
+ > |
+ < \context Voice = two { \stemDown es4 \breathe bes es }
+ \context Voice = one { \stemUp g4 as g }
+ > |
+ es8 d es f g4 \breathe |
+ es8 d \breathe es f g f |
+ es2 r4 \bar "||";
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Chord names are generated from a list pitches, and are customisable
+from guile. For some unlogical names, guile customisation is used
+by default.
+";
+}
+\version "1.3.117"
+chord = \notes\transpose c''\chords{
+ c1
+ c:m
+ c:m5-
+ c:m5-.7-
+ c:7+
+ c:m5-.7
+ c:5-.7+
+ c:m7
+ c:7
+ d
+ d/a
+ d/+gis
+}
+
+\score{
+ <
+ \context ChordNames \chord
+ \context Staff \chord
+ >
+ \paper{
+
+ \translator {
+ \ChordNamesContext
+ ChordName \override #'word-space = #1
+ }
+ }
+}
+
--- /dev/null
+\header{
+texidoc="
+Chord tremolos look like beams, but are a kind of repeat symbol.
+To avoid confusion, chord tremolo beams do not reach the stems, but
+leave a gap. Chord tremolo beams on half notes are not ambiguous,
+as half notes cannot appear in a regular beam, and should reach the
+stems.
+";
+}
+
+\score {
+ \context Voice \notes\relative c {
+ \repeat "tremolo" 8 { c16 d16 }
+ \repeat "tremolo" 4 { c16 d16 }
+ }
+ \paper {
+ linewidth=-1.0;
+ }
+ \midi { }
+}
--- /dev/null
+
+\header{
+texidoc="
+The transparent clef should not occupy any space and with style
+@code{fullSizeChanges}, the changing clef should be typeset in full
+size. For octaviated clefs, the ``8'' should appear closely above or
+below the clef respectively. The ``8'' is processed in a convoluted
+way, so this is fragile as well.
+";
+}
+
+\version "1.3.117";
+
+\score {
+ \notes{
+
+ \clef "treble"; c'1^"{treble}" \bar "||";
+ \clef "french";c'1^"{french}" \bar "||";
+ \clef "soprano";c'1^"{soprano}" \bar "||";
+ \clef "mezzosoprano";c'1^"{mezzosoprano}" \bar "||";
+ \clef "alto";c'1^"{alto}" \bar "||";
+ \clef "tenor";c'1^"{tenor}" \bar "||";
+ \clef "baritone";c'1^"{baritone}" \bar "||";
+ \clef "varbaritone";c'1^"{varbaritone}" \bar "||";
+ \clef "G_8";c'1^"{sub 8?}" c'1 \bar "||";
+ \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 "|.";
+ }
+ \paper{
+ }
+}
+
--- /dev/null
+\header{
+texidoc="
+Normal collisions. We have support for polyphony, where the
+middle voices are horizontally shifted.
+";
+filename = "collisions.ly";
+description = "random counterpoint to test collisions";
+enteredby = "HWN,JCN";
+copyright = "public domain";
+Tested = "test the Collision resolution ";
+}
+\version "1.3.117";
+
+twovoice = \context Staff \notes <
+ \context Voice=i { \stemDown c4 d e f g2~ g4 a [c8 d e f] c2| }
+ \context Voice=ii { \stemUp g4 f e g ~ g2 g2 c4 g4 g2 }
+>
+
+twovoicesteminvert = \context Staff \notes <
+ % the f and g on 4th beat are exceptionally ugh.
+ \context Voice=i { \stemUp c4 d e f g2 g4 a | }
+ \context Voice=ii { \stemDown g4 f e g g2 g2 }
+>
+
+threevoice = \context Staff \notes <
+ \context Voice=i { \stemUp g4 f e f g a g2 }
+ \context Voice=ii { \stemUp \property Voice.NoteColumn \override #'horizontal-shift = #1
+ e2 e2 e2 e2 }
+ \context Voice=iii { \stemDown c4 d e d c d es }
+>
+
+chordstest = \context Staff \notes <
+ \context Voice = i \relative c {
+ \stemUp e4 dis c f g f a b b
+ }
+ \context Voice = ii \relative c {
+ \stemDown <a4 c> <a4 c> <a4 e'> <a4 c> <e' a> <e a> <e a> <a c> <a d>
+ }
+>
+
+hairyChord = \context Staff \notes\relative c' <
+ \context Voice=one {
+ \property Voice.NoteColumn \override #'horizontal-shift = #0
+ \stemUp
+ e4
+ }
+
+ \context Voice=two {
+ \stemUp
+ \property Voice.NoteColumn \override #'horizontal-shift = #1
+ cis
+ }
+
+ \context Voice=three {
+ \property Voice.NoteColumn \override #'horizontal-shift = #2
+
+ \stemUp
+ ais
+ }
+
+ \context Voice=four {
+ \stemDown
+ \property Voice.NoteColumn \override #'horizontal-shift = #1
+
+ fis
+ }
+>
+
+
+\score{
+ \notes \transpose c'' { \twovoice
+ \twovoicesteminvert
+ \threevoice \break
+ \chordstest
+ \hairyChord
+ }
+
+% \midi { \tempo 4:80 }
+}
--- /dev/null
+\header{
+texidoc="
+Noteheads can have dots, and rests can too. Augmentation dots should
+never be printed on a staff line, but rather be shifted vertically. They
+should go up, but in case of multiple parts, the down stems have down
+shifted dots. (Wanske p. 186) In case of chords, all dots should be in
+a column. The dots go along as rests are shifted to avoid collisions.
+";
+}
+
+
+\version "1.3.117";
+\score {
+ \context Voice \notes\relative c'' {
+ \time 6/8;
+ d4. g,,
+ <b''4. c d e> <f g a b>
+ <g b d> <c, g' d' a'>
+
+
+ \context Staff <
+ \context Voice = VA { \stemUp f'' <b c> r4. }
+ \context Voice = VB { \stemDown b, <a b> r4. }
+ >
+
+
+ }
+ \paper { }
+ \midi { }
+}
--- /dev/null
+\header{
+texidoc="
+Dynamics appear below or above the staff. If multiple dynamics are
+linked with (de)crescendi, they should be on the same line.
+";
+}
+\score{
+\notes\relative c''{
+a1\fff\> \!c,,\pp a'' a\p
+
+
+% We need this to test if we get two Dynamic line spanners
+a
+
+% because do_removal_processing ()
+% doesn't seem to post_process elements
+d\f
+
+a
+
+}
+\paper{
+}
+\midi{
+\tempo 1 = 60;
+}
+}
--- /dev/null
+\header{
+texidoc="
+As a last resort, the placement of grobs can be adjusted manually, by
+setting the @code{extra-offset} of a grob.
+";
+}
+
+\score{
+ \notes\relative c''{
+ \outputproperty #(make-type-checker 'note-head-interface)
+ #'extra-offset = #'(2 . 3)
+ c2
+ c
+ \context Score {
+ \outputproperty #(make-type-checker 'mark-interface)
+ #'extra-offset = #'(-1 . 4)
+ }
+ \mark A;
+ d1
+ \mark;
+ e
+}
+\paper{
+ linewidth=-1.0;
+}
+}
--- /dev/null
+\header{
+texidoc="
+More specific settings take precendence over less specific settings. The
+second slur has slurDirection set to down, overriding the stemup setting.
+";
+}
+\version "1.3.117";
+
+\score {
+ \notes \relative c'' \context Voice {
+ \stemUp
+ c'4 () c4
+ \slurDown
+ c4 ( )c4
+ }
+ \paper { linewidth = -1.0; }
+}
--- /dev/null
+\header{
+
+texidoc=" Simple glissando lines between notes are supported.
+The first two glissandi are not consecutive.
+
+The engraver does no time-keeping, so it involves some trickery to get
+< @{ s8 s8 s4 @} @{ c4 \\gliss d4 @} > working correctly.
+
+";
+}
+
+\score{
+ \context Staff=one \notes\relative c''{
+ % gliss non gliss and
+ c4 \glissando d e \glissando f \glissando \break
+ % consecutive
+ c \glissando d \glissando e
+ < { \stemUp e8 \glissando g8 }
+ \context Voice = VB {\stemDown \repeat unfold 4 d16 } >
+
+ }
+ \paper{
+ linewidth = 70.\mm;
+ \translator{
+ \StaffContext
+ % makes for handier debugging
+ % \remove Clef_engraver;
+ }
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Grace notes are typeset as an encapsulated piece of music. You can
+have beams, notes, chords, stems etc. within a @code{\grace} section.
+Slurs that start within a grace section, but aren't ended are attached
+to the next normal note. Grace notes have zero duration. If there
+are tuplets, the grace notes won't be under the brace. Grace notes
+can have accidentals, but they are (currently) spaced at a fixed
+distance. Grace notes (of course) come before the accidentals of the
+main note. Grace notes can also be positioned after the main note.
+
+Grace notes without beams should have a slash, if @code{flagStyle} is
+not set. Main note scripts don't end up on the grace note.
+
+";
+}
+
+\score {\notes \context Voice = VA \relative c'' {
+ \grace b8 c4-\fermata
+ \grace { [c32 cis32] } gis4
+ \grace { [cis32 dis32] } e4
+ \grace { [c32 d] }\times 2/3 { [c8 c c] }
+ \grace { [b32 ( c32] } ) c4
+ \grace <c16 d16> [c8 c8]
+% \grace c16 [c8 c8]
+ \grace { \property Grace.graceAlignPosition = \right c16} c4
+}
+\paper {linewidth = -1.;}
+\midi{ }
+}
--- /dev/null
+\header{
+texidoc="
+Hara kiri staffs kill themselves if they are empty. This example really
+contains two staffs, but the second contains only spaces, and is
+therefore removed. Also, any staff brackets and braces are removed.
+";
+}
+
+\version "1.3.117";
+zager = \context Staff = zager \notes \relative c'' {
+ \clef treble;
+ c1
+}
+
+zoger = \context Staff = zoger \notes \relative c'' {
+ \clef treble;
+ \skip 1* 1;
+}
+
+zagers = \context GrandStaff <
+ \zager
+ \zoger
+>
+
+\score{
+ <
+ \context StaffGroup = zagers <
+ \zagers
+ >
+ >
+ \paper{
+ linewidth = 80.0\mm;
+
+ \translator { \HaraKiriStaffContext }
+%uh?
+
+ }
+}
+
+
--- /dev/null
+\header{
+texidoc="
+Key signatures appear on key changes. They may also
+appear without barlines. The restoration accidentals are not printed at
+the start of the line. If @code{createKeyOnClefChange} is set, they're
+also created on a clef change.
+";
+}
+
+\version "1.3.117";
+
+\score {
+ \notes \relative c''
+ {
+ \property Staff. createKeyOnClefChange = ##t
+ \key bes \major; c2
+% \key c \major; % \minor;
+ \key es \major; % \minor;
+ c2
+ \break
+ \key bes \major; % \major;
+ c2 \clef alto; c2 \key d \major; \clef treble; c2
+ \property Staff. keySignature = #'((2 . -1) (6 . -1) (4 . -1))
+ e2
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Lyrics can be set to a melody automatically. Excess lyrics will be
+dumped. Lyrics will not be set over rests. You can have melismata
+either by setting a property melismaBusy, or by setting
+automaticMelismas (which will set melismas during slurs and ties). If
+you want a different order than first Music, then Lyrics, you must
+precook a chord of staffs/lyrics and label those. Of course
+@code{\rhythm} ignores any other rhythms in the piece. Hyphens and
+extenders do not assume anything about lyric lengths, so they continue
+to work.
+";
+
+
+filename = "twinkle-pop.ly";
+xtitle = "Ah, vous dirais-je, maman ";
+description = "twinkle twinkle in pop-song-settings";
+composer = "traditional";
+enteredby = "HWN, chords by Johan Vromans";
+copyright = "public domain";
+}
+
+\version "1.3.117";
+
+m = \notes \relative c'' {
+ \property Staff.automaticMelismata = ##t
+ \autoBeamOff
+ g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4
+ \emptyText
+ d8.^"melisma" \melisma c16
+ \melismaEnd
+ b }
+
+noisebeat = \notes \relative c'' {g16 g g g }
+noise = { \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat }
+textI = \lyrics { la2 __ la -- la __ la la la la la }
+textII = \lyrics { da -- da __ da -- da da da da da }
+
+\score {
+ \notes < \context Staff = SA \m
+ \context Lyrics = LA { s1 }
+ \context Staff = SB { s1 }
+ \context Lyrics = LB { s1 }
+ \context Staff = SC \noise
+
+ \addlyrics
+ \context Staff = SB \m
+ < \context Lyrics = LA \textI
+ \context Lyrics = LB \textII
+ >
+
+ >
+}
+
--- /dev/null
+\header{
+texidoc="
+Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that
+lyrics don't collide with barlines.
+";
+}
+
+\score {
+ \context StaffGroup <
+ \notes \context Staff {
+ b1 b1 \bar "|.";
+ }
+ \lyrics\context Lyrics <
+ \context LyricsVoiceWithBars {
+% thisContextHasSpanBarEngraver1 added
+ ThisContextCertainlyHasSpanBarEngraverAddedButTheresSomethingFunny1. Here.
+ }
+ \context LyricsVoice {
+ this4 one has no SpanBarEngraverAddedToContext1
+ }
+ >
+ \notes \context Staff = SB { b1 b1 }
+ >
+ \paper {
+ linewidth = -1.0\cm;
+ \translator {
+ \LyricsContext
+ \consists "Span_bar_engraver";
+ \accepts "LyricsVoiceWithBars";
+ }
+ \translator {
+ \LyricsVoiceContext
+ \name "LyricsVoiceWithBars";
+ }
+ \translator {
+ \LyricsVoiceContext
+ }
+ }
+}
--- /dev/null
+
+\version "1.3.117";
+\include "english.ly"
+
+\header{
+texidoc="
+Multiple stanzas
+
+ Tests a number of features:
+ * Lyric_phrasing_engraver
+ * Stanza_number_engraver
+ * Automatic melismata on beamed notes
+
+";
+
+ title = "Crowned with Honour";
+ composer = "Oliver Holden (1765-1844)";
+ poet = "Thomas Kelly (1769-1855)";
+}
+
+allup = \notes{
+ \stemUp
+ \slurUp
+ \tieUp
+ \property Voice.DynamicLineSpanner \override #'direction = #1
+ \autoBeamOff
+}
+
+alldown = \notes{
+ \stemDown
+ \slurDown
+ \tieDown
+ \property Voice.DynamicLineSpanner \override #'direction = #-1
+ \autoBeamOff
+}
+
+Global = \notes{
+ \key g \major;
+ \time 4/4;
+ \partial 4;
+}
+
+Soprano = \notes \relative c' {
+ \allup
+ d4 | g g b b a g a b a g b a g( a )g % modified to test melisma align right
+
+ [a8 b] | b4 % modified to test melisma align left
+ a g b [d16 d c8] [b a] b4 % modified to test beam melisma
+% a4 | b a g b [d8 \melisma c] \melismaEnd [b \melisma a] \melismaEnd b4
+
+ d d2 d e d4( cs8 ~ )cs d2.
+
+ b4 | d b g b [a8 g] [a b] a4
+% b4 | d b g b [a8 \melisma g] \melismaEnd [a \melisma b] \melismaEnd a4
+
+ g d'2 c b4.( c8 )a4 a g2.
+}
+Alto = \notes \relative c'{
+ \alldown
+ d4 | d d g g fs g fs g fs e g fs d2.
+ d4 | g d b g' [b8 a] [g fs] g4 fs g2 a g fs4( e8 )g fs2.
+ d4 | g g d g [fs8 e] [fs g] fs4 g f2 e d4.( d8 )d4 fs4 d2.
+}
+Tenor = \notes \relative c{
+ \allup
+ d4 | b' b d d c b c d c b d c b2.
+ a4 | b a g b [d8 c] [b a] b4 a b2 c b a a2.
+ g4 | b d b d [c8 b] [c d] c4 b g2 g g4.( a8 [fs )a] c4 b2.
+}
+Bass = \notes \relative c{
+ \alldown
+ d4 | g g g g d d d g d e d d g,2.
+ d'4 | g d b g' [b8 a] [g fs] g4 d g2 fs e a d,2.
+ g4 | g g g g d d d e b2 c d2. d4 g,2.
+}
+
+TheLyrics = \lyrics <
+ {
+ \context LyricsVoice = "Soprano-1"
+ \property LyricsVoice .stanza = "1:"
+ \property LyricsVoice .stz = "(1)"
+ The4 head that once was crowned with thorns
+ Is crowned with glo -- ry now;
+ A roy -- al di -- a -- dem a -- dorns
+ The might -- y Vic -- tor's brow.
+ A roy -- al di -- a -- dem a -- dorns
+ The might -- y Vic -- tor's brow.
+ }
+ {
+ \context LyricsVoice = "Soprano-2"
+ \property LyricsVoice .stanza = "2:"
+ \property LyricsVoice .stz = "(2)"
+ The4 high -- est place that heav'n af -- fords
+ Is His by sov -- 'reign right;
+ The King of kings, the Lord of lords,
+ He reigns in glo -- ry bright,
+ The King of kings, the Lord of lords,
+ He reigns in glo -- ry bright.
+ }
+ {
+ \context LyricsVoice = "Soprano-3"
+ \property LyricsVoice .stanza = "3:"
+ \property LyricsVoice .stz = "(3)"
+ The joy of all who dwell a -- bove,
+ The joy of saints be -- low,
+ To4 whom He man -- i -- fests His love,
+ And grants His name to know,
+ To4 whom He man -- i -- fests His love,
+ And grants His name to4 know.
+ }
+>
+
+
+\score{
+ \context ChoirStaff
+ \notes
+ <
+ \property Score.barNumberScriptPadding = #10.0
+ \context Staff = "treblestaff"{
+ <
+ \context Voice = "Soprano" { }
+ \context Voice = "Alto" { }
+ >
+ }
+ \context Lyrics = mainlyrics { }
+ \context Staff = "treblestaff"{
+ <
+ \Global
+ \addlyrics { \context Voice = "Soprano" \Soprano }
+ { \context Lyrics = mainlyrics \TheLyrics }
+ \context Voice = "Alto" \Alto
+ >
+ \bar "|.";
+ }
+ \context Staff = "bassstaff"{
+ \clef "bass";
+ <
+ \context Voice = "Tenor" { \Tenor }
+ \context Voice = "Bass" { \Bass }
+ >
+ \bar "|.";
+ }
+ >
+
+ \paper {
+ \translator{
+ \VoiceContext
+ automaticMelismata = ##t;
+ noAutoBeaming = ##t;
+ \remove "Auto_beam_engraver";
+ }
+
+ }
+}
--- /dev/null
+\header{
+texidoc="
+If @code{Score.skipBars} is set,
+the signs for four, two, and one measure rest are combined to
+produce the graphical representation of rests for up to 10 bars.
+The number of bars will be written above the sign.
+";
+}
+
+thenotes = \notes \relative cis' {
+\property Score. skipBars = ##t
+\time 4/4;
+R1 |
+R1*1 |
+R1*2 |
+R1*3 |
+R1*4 |
+R1*5 |
+R1*6 |
+R1*7 |
+R1*8 |
+R1*9 |
+R1*10 |
+R1*11 |
+}
+
+\score { < \context Staff \thenotes
+
+ >
+}
--- /dev/null
+
+\header { texidoc=" You can write molecule callbacks in Scheme, thus
+providing custom glyphs for notation elements. A simple example is
+adding parentheses to existing molecule callbacks.
+
+The parenthesized beam is less successful due to implementation of the
+Beam. The note head is also rather naive, since the extent of the
+parens are also not seen by accidentals.
+";
+
+ }
+
+#(define (parenthesize-callback callback)
+ "Construct a function that will do CALLBACK and add parentheses.
+Example usage:
+
+ \property Voice.NoteHead \\override #'molecule-callback
+ =
+ #(parenthesize-callback Note_head::brew_molecule)
+
+"
+
+
+ (define (parenthesize-molecule grob)
+ "This function adds parentheses to the original callback for
+GROB. The dimensions of the molecule is not affected.
+"
+
+ (let* (
+ (fn (ly-get-default-font grob))
+ (pclose (ly-find-glyph-by-name fn "accidentals-)"))
+ (popen (ly-find-glyph-by-name fn "accidentals-("))
+ (subject (callback grob))
+
+ ;; remember old size
+ (subject-dims (ly-get-molecule-extent subject 0))
+ )
+
+ ;; add parens
+ (set! subject
+ (ly-combine-molecule-at-edge
+ (ly-combine-molecule-at-edge subject 0 1 pclose 0.2)
+ 0 -1 popen 0.2))
+
+ ;; revert old size.
+ (ly-set-molecule-extent! subject 0 subject-dims)
+ subject
+ )
+ )
+ parenthesize-molecule
+ )
+
+
+
+\score {
+ \notes \relative c' { c4 e
+
+ \property Voice.NoteHead \override #'molecule-callback
+ =
+ #(parenthesize-callback Note_head::brew_molecule)
+ g bes
+ \property Voice.NoteHead \revert #'molecule-callback
+ \property Voice.Beam \override #'molecule-callback
+ =
+ #(parenthesize-callback Beam::brew_molecule)
+
+ a8 gis8 a2.
+
+ }
+
+ \paper { linewidth = -1.; }
+ }
+
--- /dev/null
+\header{
+texidoc="
+Multiple measure rests do not collide with barlines and clefs. They
+are not expanded when you set @code{Score.skipBars}. Although the
+multi-measure-rest is a Spanner, minimum distances are set to keep it
+colliding from barlines.
+";
+}
+\version "1.3.117";
+
+\score { \notes { \time 3/4; \key cis \major;
+ R2.*15 R2. R2.*7 }
+ \paper {
+ \translator {
+ \ScoreContext
+ skipBars = ##t
+ }
+ linewidth = -1.;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Text is set with empty horizontal dimensions. The boolean property
+textNonEmpty is used to respect the horizontal size of text.
+";
+}
+\score { \notes {
+\property Voice.TextScript \override #'no-spacing-rods = ##f
+c4_"very wide and long text" c4
+}
+
+\paper {
+ linewidth = -1.0;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Note head shapes are settable. The stem endings should be adjusted
+per note head. If you want different note head styles on one stem,
+you must create a special context called Thread.
+
+Harmonic notes have a different shape and different
+dimensions. Nevertheless, noteheads in both styles can be combined, on
+either up or down stems.
+";
+}
+
+\version "1.3.117";
+
+
+\score { \notes \relative c{
+% anyone wanna pop?
+c''4 c2 c8 c16 c16 c1 c\breve
+\property Voice.NoteHead \override #'style = #'diamond
+c4 c2 c8 c16 c16 c1 c\breve
+\property Voice.NoteHead \override #'style = #'transparent
+c4 c2 c8 c16 c16 c1 c\breve
+\property Voice.NoteHead \override #'style = #'cross
+c4 c2 c8 c16 c16 c1 c\breve
+\property Voice.NoteHead \override #'style = #'mensural
+c4 c2 c8 c16 c16 c1 c\breve c\longa
+\property Voice.NoteHead \override #'style = #'harmonic
+c4 c2 c8 c16 c16 c1 c\breve
+\property Voice.NoteHead \override #'style = #'baroque
+c4 c2 c8 c16 c16 c1 c\breve c\longa
+
+
+ \context Voice <
+ \context Thread = TA
+ {
+ \property Thread.NoteHead \override #'style = #'cross
+ \property Voice.Stem \override #'direction = #1
+ c16
+ }
+ \context Thread = TB
+ { \property Thread.NoteHead \override #'style = #'default a16 }
+
+ \context Thread = TC
+ { \property Thread.NoteHead \override #'style = #'mensural d16 }
+
+ >
+
+
+ \context Voice <\context Thread = TA {
+ \property Thread.NoteHead \override #'style = #'default
+ c4 c4 }
+\context Thread = TB {
+ \property Thread.NoteHead \override #'style = #'mensural
+ c'4 \stemDown c
+} >
+
+}
+
+ \paper {
+
+
+}
+}
--- /dev/null
+\header{
+
+texidoc=" The number of stafflines of a staff can be set. Ledger
+lines both on note heads and rests are adjusted. Barlines also are
+adjusted. ";
+
+}
+
+\score {
+\context Voice \notes\relative c {
+ c' c c c | g' g g g
+ }
+ \paper {
+
+\translator { \StaffContext
+StaffSymbol \override #'line-count = #3
+} }
+ \midi { }
+}
--- /dev/null
+\header{
+texidoc="
+Folded. This doesn't make sense without alternatives, but it works.
+";
+}
+
+\score { \notes\context Staff\relative c'' {
+\repeat fold 3 { c^"3$\\times$ 0alt" d }
+% less alts than body
+\repeat fold 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
+% more alts than body
+\repeat fold 2 { c^"2$\\times$ 3alt" d } \alternative { e f g }
+}}
+
--- /dev/null
+\header{
+texidoc="
+Across linebreaks, the left edge of a first and second alternative
+bracket should be equal
+";
+}
+
+\score {
+\notes
+\context Staff\relative c'' {
+ \repeat "volta" 2 { c1 \break } \alternative { d e }
+ c1
+ \repeat "volta" 2 { c1 } \alternative { { d \break} e }
+
+}
+}
--- /dev/null
+\header{
+texidoc="
+LilyPond has three modes for repeats: folded, unfolded and
+semi-unfolded. Unfolded repeats are fully written out. Semi unfolded
+repeats have the body written and all alternatives sequentially.
+Folded repeats have the body written and all alternatives
+simultaneo.ly. If the number of alternatives is larger than the
+repeat count, the excess alternatives are ignored. If the number of
+alternatives is smaller, the first alternative is multiplied to get to
+the number of repeats.
+
+Unfolded behavior:
+";
+}
+
+\score {
+
+ \context Voice \notes\relative c'' {
+\repeat unfold 3 { c^"3x 0a" d }
+% less alts than body
+\repeat unfold 4 { c^"4x 0a" d } \alternative { e f }
+% more alts than body
+\repeat unfold 2 { c^"2x 3a" d } \alternative { e f g }
+}}
+
--- /dev/null
+\header{
+texidoc="
+Volta (Semi folded) behavior. Voltas can start on non-barline moments.
+If they don't barlines should still be shown.
+";
+}
+
+% no alts.
+\score { \notes
+ \relative c'' {
+% repeat non aligning with barlines.
+e
+\repeat volta 3 { c^"3$\\times$ 0alt" d e }
+% less alts than body
+\repeat volta 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
+
+% more alts than body
+\repeat volta 2 { c^"2$\\times$ 3alt" d } \alternative { e f g }
+}
+
+ \midi{}
+ \paper{}
+
+}
+
--- /dev/null
+\header{
+texidoc="
+Rests should not collide with beams, stems and noteheads. Rests may
+be under beams. Rests should be move by integral number of spaces
+inside the staff, and by half spaces outside. Notice that the half
+and whole rests just outside the staff get ledger lines in different
+cases.
+";
+}
+
+scale = \notes \relative c' {
+ c8 d e f g a b c c d e f g a b c
+
+}
+rests = \notes {
+ r r r r r r r r r r r r r r r r
+}
+different = < \context Voice = one {
+ \stemUp
+ \notes \relative c'' {
+ r8 a e4 a e
+ }
+ }
+ \context Voice = two {
+ \stemDown
+ \notes \relative c'' {
+ r1
+ }} >
+
+scales = \context Staff \notes <
+ \context Voice=i { \stemUp r1 r2 r2 \scale c''1 c'2 a'2 \rests }
+ \context Voice = ii { \stemDown a'1 a'2 d'2 \rests r1 r2 r2 \scale }
+>
+
+restsII = \context Staff \notes {
+ r4 r8
+ \context Staff < { \stemUp r8 } { \stemDown r8} >
+ \context Staff < {\stemUp r8} r8 { \stemDown r8} >
+ \context Staff < {\stemUp r8} r8 r8 { \stemDown r8} >
+ \context Staff < {\stemUp r} { \stemDown r} >
+ \context Staff < {\stemUp r} r { \stemDown r} >
+ \stemUp
+ \transpose c'' { [c''8 r8 c''8 c''8]
+ [c8 r8 c8 c8]
+ [c8 r8 r8 c'''8]
+ \stemDown
+ [c8 r8 c8 c8]
+ [c''8 r8 c''8 c''8]
+ [c'8 r8 r8 c'''8]
+ \different
+ }
+}
+
+\score{
+ \notes {
+ \scales
+ \restsII
+ }
+}
+
+\version "1.3.117";
--- /dev/null
+\header{
+texidoc="
+Rests. Note that the dot of 8th, 16th and 32nd rests rest should be
+next to the top of the rest. All rests except the whole rest are
+centered on the middle staff line.
+";
+}
+
+
+ \score { \notes {
+ \time 4/4;
+r \longa * 1/4 r\breve * 1/2
+r1 r2 r4 r8 r16 r32 r64 r128 r128
+\time 6/4;
+r1. r2. r4. r8. r16. r32. r64. r128. r128.
+}}
--- /dev/null
+\header{
+texidoc="
+Fonts are available in a default set of sizes: 11, 13, 16, 20, 23 and
+26pt staffheight. Sizes of the text fonts and symbol fonts are made
+to match the staff dimensions.
+";
+}
+
+\include "paper11.ly"
+\include "allfontstyle.ly";
--- /dev/null
+\include "paper13.ly"
+\include "allfontstyle.ly";
--- /dev/null
+\include "paper16.ly"
+\include "allfontstyle.ly";
--- /dev/null
+\include "paper20.ly"
+\include "allfontstyle.ly";
--- /dev/null
+\include "paper23.ly"
+\include "allfontstyle.ly";
--- /dev/null
+\include "paper26.ly"
+\include "allfontstyle.ly";
--- /dev/null
+\header{
+texidoc="
+Slurs should be attached to note heads, except when they would collide
+with beams. Also see: ophee-slurs.
+";
+}
+\score{
+ \notes \relative c''{
+ \property Voice.Slur \set #'direction = #1
+ a8( a )a4
+ a4( a8 )a
+ a8 a()a4
+ a4() a8 a
+ }
+ \paper{
+ indent = 0.0;
+ linewidth = 100.\mm;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Across line breaks, slurs behave nicely. On the left, they extend to
+just after the preferatory matter, and on the right to the end of the
+staff. A slur should follow the same vertical direction it would have
+in unbroken state.
+";
+}
+\score{
+ \notes \relative c''{
+ e1( \break) a,
+ \time 2/4;
+ e'2( \break) a,(\break
+ a2\break
+ )e'2
+ }
+ \paper {
+ linewidth=40.\mm;
+ indent=0.;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+The same goes for slurs. They behave decently when broken across
+linebreak.
+";
+}
+
+
+\score{
+ \context PianoStaff <
+ \context Staff=one \notes\relative c'{
+ \stemUp \slurUp
+ c4( c \translator Staff=two c )c |
+ \translator Staff=one
+ \stemUp \slurUp
+ c4( c \translator Staff=two c )c |
+ \stemUp \slurUp
+ c4( c \translator Staff=one c )c |
+ \translator Staff=two
+ \stemUp \slurUp
+ c4( c \translator Staff=one c )c |
+ \translator Staff=two
+ \stemUp \slurUp
+ c4( \translator Staff=one c c )c |
+ r2
+ \translator Staff=two
+ \stemUp \slurUp
+ c4( \translator Staff=one c
+ \break
+ c )c
+ r2
+% \stemDown \slurDown
+% c4( \translator Staff=two c c \translator Staff=one )c
+ \stemDown \slurDown
+ d4( \translator Staff=two c c \translator Staff=one )d
+ \translator Staff=two
+ \stemUp \slurUp
+ c4( \translator Staff=one c c \translator Staff=two )c
+ r1
+ }
+ \context Staff=two \notes\relative c'{
+ \clef bass;
+ s1 s1 s1 s1 s1 s1 s1 s1 s1 s1
+ }
+ >
+}
+
+\version "1.3.117";
--- /dev/null
+\header{
+texidoc="
+Slurs should look nice and symmetric. The curvature may increase
+only to avoid noteheads, and as little as possible. Slurs never
+run through noteheads or stems.
+";
+}
+\version "1.3.117";
+\score{
+ \notes\relative c''{
+ \time 3/4;
+ \slurUp
+ \stemBoth a ( \stemDown a \stemBoth ) a a( c )a a( e' )a, a( g' )a,
+ \stemUp a( e' )a,
+ \break
+ \slurDown
+ \stemBoth c ( \stemUp c \stemBoth ) c c ( a ) c c( d, )c' c( f, )c'
+ \stemDown c( f, )c'
+ }
+ \paper{
+ linewidth = 120.\mm;
+ }
+}
--- /dev/null
+\score{
+ \notes\relative c''<
+ \time 4/4;
+ \context Staff{
+ f8(f f)f f(g g)f f(a a)f f(b b)f
+ }
+ \context Staff=x{
+ e,(e e)e e(d d)e e(c c)e e(b b)e
+ }
+ >
+ \paper{
+ linewidth=-1.;
+ }
+}
--- /dev/null
+\score{
+ \notes\relative c'<
+ \time 6/8;
+ \context Staff{
+ e8(e)e e(d)e e(c)e e(b)e
+ }
+ \context Staff=x{
+ f'8(f)f f(g)f f(a)f f(b)f
+ }
+ >
+ \paper{
+ linewidth=-1.;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Loose:
+";
+}
+\score {
+ \notes { \time 2/2; c'2 c'2 \time 2/2; }
+ \paper { linewidth = 5.0\cm;
+ indent = 0.0;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Natural:
+";
+}
+
+\score {
+ \notes { \time 2/2; c'2 c'2 \time 2/2; }
+ \paper { linewidth = -1.0 \cm;
+ indent = 0.0;
+ }
+}
+
--- /dev/null
+\header{
+texidoc="
+If there are accidentals in the music, we add space, but the space
+between note and accidentals is less than between the notes with the
+same value. Clef changes also get extra space, but not as much as
+barlines.
+
+Even if a line is very tightly spaced, there will still be room
+between prefatory matter and the following notes. The space after the
+prefatory is very rigid. In contrast, the space before the barline
+must stretch like the space within the measure.
+
+Tight:
+";
+}
+\score {
+ \notes { \time 2/2; f''2 c'2 \time 2/2; }
+ \paper { linewidth = 2.5 \cm;
+ indent = 0.0;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+The staccato dot (and all scripts with follow-into-staff set), must
+not be on staff lines.
+";
+}
+\score {
+ \context Voice \notes\relative c {
+
+ e''4-. f-. d-.
+ c,-. b-. c'''-. d-.
+
+ }
+ \paper {
+ linewidth=-1.0;
+ }
+ \midi { }
+}
--- /dev/null
+\header{
+texidoc="
+Staff margins are also markings attached to barlines. They should be
+left of the staff, and be centered vertically wrt the staff. They may
+be on normal staffs, but also on compound staffs, like the PianoStaff
+";
+}
+
+
+\version "1.3.117";
+
+\score {
+
+ \notes \context PianoStaff <
+ \context Staff = treble {
+ \property PianoStaff.instrument = "Piano "
+ \property Staff.instrument = "Right " { c''4 }}
+ \context Staff = bass { \property Staff.instrument = "Left " \clef bass; c4 }>
+
+\paper {
+linewidth=-1.0;
+\translator { \ScoreContext
+
+ }
+\translator { \StaffContext \consists "Instrument_name_engraver"; }
+\translator { \PianoStaffContext \consists "Instrument_name_engraver"; }
+}}
+
--- /dev/null
+\header{
+texidoc="
+@c FIXME
+Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}.
+";
+}
+
+\score{
+ \notes\relative c{
+ b''4 ~ b8()b8 e4 e,
+ }
+ \paper{
+ stem_default_neutral_direction=-1.0;
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Beams, stems and noteheads often have communication troubles, since
+the two systems for y dimensions (1 unit = staffspace, 1 unit = 1
+point) are mixed.
+
+Stems, beams, ties and slurs should behave similarly, when placed
+on the middle staff line. Of course stem-direction is down for high
+notes, and up for low notes.
+";
+}
+
+
+\score {
+ \context Voice \notes\relative c {
+ b''4 ~ b8()b8 e4 e,
+
+ }
+ \paper {
+ linewidth=-1.0;
+ }
+ \midi { }
+}
--- /dev/null
+\header{
+texidoc="
+In a limited number of cases, LilyPond corrects for optical spacing
+effects. In this example, space for opposite pointed stems is adjuste
+";
+}
+\score {
+ \context Voice \notes\relative c {
+
+ \time 12/4; c''4 c c c a f' f, a
+
+ }
+ \paper {
+ linewidth=-1.0;
+ }
+ \midi { }
+}
--- /dev/null
+\header{
+texidoc="
+Stem tremolos or rolls are tremolo signs that look like beam segments
+crossing stems. If the stem is in a beam, the tremolo must be parallel
+to the beam. If the stem is invisible (eg. on a whole note), the
+tremolo must be centered on the note.
+";
+}
+
+\version "1.3.117";
+\score{
+ \context Voice\notes \relative c''{
+ \property Voice.Text \set #'direction = #1
+ \property Voice.TextScript \set #'padding = #5
+ a1:4^":4" a:8^":8" c:16^":16" a:32^":32" a^"x" a:^":"
+ a4:4 c:8 a:16 c:32 a a: a2:
+ \break
+ \stemUp
+ a4:32 a'4:64
+ \stemDown
+ c,4:32 c,4:64
+ \stemBoth
+ c'8:16 c c c
+ a': a a: a
+ c,16:32 c: c c a16:32 a: a a
+ c8:16 g: d: a:
+ c8:32 f: b: e:
+ }
+}
--- /dev/null
+\header{
+texidoc="
+When tieing notes with accidentals across a bar boundary, the accidental
+must not be drawn on the note in the new bar. Instead, the next note of
+the same pitch in this bar should always show the accidental (even if
+it's natural). Slurring a accidentaled note to a natural one across bar
+boundaries should be explicit.
+
+Pitches can be verified by printing them with the @code{NoteNames} context.
+";
+}
+
+thenotes = \notes \relative cis' { \time 4/4;
+g'2 g ~ |
+g g4 gis |
+gis2 gis ~ |
+gis4 gis8 ~ gis g4 gis |
+g2 gis ~ |
+gis g4 gis |
+g2 gis( |
+)g! gis4 gis |
+\break
+\key a \major;
+gis2 gis ~ |
+gis4 gis8 ~ gis g4 gis |
+gis2 g ~ |
+g4 gis8 ~ gis g4 gis |
+g2 gis ~ |
+gis g4 gis |
+g2 gis( |
+)g! gis4 gis |
+}
+
+\score { < \context Staff \thenotes
+ \context NoteNames \thenotes
+ >
+}
--- /dev/null
+\header{
+texidoc="
+When tieing chords, the outer slurs point outwards, the inner slurs
+point away from the center of the staff. Override with
+@code{tieVerticalDirection}.
+";
+}
+\version "1.3.117";
+
+t = \notes \relative c' { <c e g> ~ <c e g> }
+
+ \score {
+\notes \context Voice {
+ \t
+ \transpose g' \t
+
+ \property Voice.TieColumn \override #'direction = #-1
+ \t
+
+ }
+}
--- /dev/null
+\header{
+texidoc="
+Ties are strictly horizontal. They are placed in between note heads.
+The horizontal middle should not overlap with a staffline.
+";
+}
+\score{
+ \notes\relative c''{
+ %b2~b4~b8~b16~b32~b64 r64\break
+ %a2~a4~a8~a16~a32~a64 r64
+ \time 8/4;
+ d1 ~ d2~d4~d8~d16~d32~d64 r64\break
+ a1~ a2~a4~a8~a16~a32~a64 r64
+ %c2~c4~c8~c16~c32~c64 r64
+ }
+ \paper{
+ linewidth=0.;
+ }
+}
--- /dev/null
+\header {
+texidoc="Simple beams. This broke somewhere < 1.3.110
+";
+ title = "Gammes Chromatiques";
+ composer = "";
+ filename = "gammes_chromatiques.ly";
+}
+
+linebreak = \penalty -1000;
+
+$ex8 = \notes \relative c' {
+ \repeat "volta" 2 {
+ \times 2/3 {c8( cis d} \times 2/3 {dis e f}
+ \times 2/3 {fis g gis} \times 2/3 {a bes b} |
+ \property Voice.TupletBracket \override #'tuplet-number-visibility = ##f
+ \property Voice.TupletBracket \override #'tuplet-bracket-visibility = ##f
+ \times 2/3 {c8 cis d} \times 2/3 {dis e f}
+ \times 2/3 {fis g gis} \times 2/3 {a bes b} |
+ \times 2/3 {c b bes} \times 2/3 {a aes g}
+ \times 2/3 {fis f e} \times 2/3 {ees d des} |
+ \times 2/3 {c b bes} \times 2/3 {a aes g}
+ \times 2/3 {fis f e} \times 2/3 {ees d )des}
+ }
+ c1 || \linebreak
+}
+
+\score { \context Staff { \notes { \$ex8 } } }
--- /dev/null
+\header{
+texidoc="
+Tuplets are indicated by a bracket with a number. There should be no
+bracket if there is one beam that matches the length of the tuplet.
+The bracket does not interfere with the stafflines, and the number is
+centered in the gap in the bracket.
+";
+}
+\score{
+ \notes \context Voice \relative c'' {
+ \times 2/3 { \times 2/3 { a8 b c} c }
+ \times 3/4 { c4 c4 c4 c4 }
+ \time 6/8;
+ \times 6/9 { c8 c c c c c c c c }
+
+ }
+}
+
+\version "1.3.117";
-\header{
-texidoc="
-A sharp sign after a double sharp sign, as well as a flat sign
-after a double flat sign is automatically prepended with a
-natural sign.
-";
-}
-\version "1.3.117";
-
-
-thenotes = \notes \relative cis' { \time 4/4;
-gisis'4 gis gisis ges |
-geses ges geses gis |
-gisis g geses g |
-gis g ges g |
-\key a \major;
-gisis4 gis gisis ges |
-geses ges geses gis |
-gisis g geses g |
-gis g ges g |
-}
-
-\score { < \context Staff \thenotes
- \context NoteNames {
- \property NoteNames.basicNoteNameProperties \override #'no-spacing-rods = ##f
- \thenotes
- }
- >
-}
-\header{
-texidoc="
-Accidentals work: the second note does not get a sharp. The third and
-fourth show forced and courtesy accidentals.
-";
-}
-
-foo = \notes\relative c'' { \key as \major; dis4 dis dis! dis? }
-
-\score {
-
- < \foo
- \context NoteNames \foo
- >
-}
-\header{
-texidoc="
-Arpeggios are supported, both cross-staff and broken single staff.
-";
-}
-
-\version "1.3.117";
-
-\score{
- \context PianoStaff <
- \context Staff=one \notes\relative c''{
- \context Voice < fis,-\arpeggio d a >
- %%\property PianoStaff.SpanArpeggio \override #'connect = ##t
- \property PianoStaff.connectArpeggios = ##t
- <fis,\arpeggio a c>
- }
- \context Staff=two \notes\relative c{
- \clef bass;
- \context Voice < g b d-\arpeggio >
- <g\arpeggio b d>
- }
- >
-}
-\header{
-texidoc="
-The first two a8 notes should not be beamed.
-Also, no automatic beaming accross bar lines.
-";
-}
-
-\score{
-\notes \notes\relative c'' {
-\time 2/8;
-a8 a
-\time 6/8;
-a16 cis d a bes g fis4 g8
-%a4. fis4 g8
-a16 g a bes c d % ees8 d c
-}
-\paper{
- linewidth=-1.;
-}
-}
\ No newline at end of file
-\header{
-texidoc="
-Auto change piano staff switches voices between up and down staffs
-automatically; rests are switched along with the coming note.
-";
-}
-
-\score {
- \notes \context PianoStaff <
- \context Staff = "up" {
- \autochange Staff \context Voice = VA < \relative c' { g4 a b c d r4 a g } >
- }
- \context Staff = "down" {
- \clef bass;
- s1*2
- }
-
- >
-
-}
-\header{
-texidoc="Two automatic knees";
-}
-
-\score {
- \notes \context PianoStaff <
- \context Staff = "up" \notes\relative c''{
- [ b8 \translator Staff="down" d,, ]
- [ c \translator Staff="up" c'' ]
- [ b, \translator Staff="down" d ]
- }
- \context Staff = "down" {
- \clef bass;
- s2.
- }
- >
- \paper{
- linewidth = 40*\staffspace;
-% Now by default
-% \translator{
-% \VoiceContext
-% Beam \override #'auto-knee-gap = #7
-% }
- }
-}
-\header{
-texidoc="One automatic knee";
-}
-
-\score {
- \context Staff \notes\relative c''{
- [c'8 c,,] [c8 e']
- }
- \paper{
- linewidth = 40*\staffspace;
-% Now by default
-% \translator {
-% \VoiceContext
-% Beam \override #'auto-knee-gap = #7
-% }
- }
-}
- \score { \notes {
-
- c1 c1 c1 c1\break
- c1 c1 c1 c1\break
- \property Score.currentBarNumber = 25
- c1 c1 c1 c1
-}
- \paper{ \translator {\BarNumberingStaffContext }}}
-\header{
-texidoc="
-Markings that are attached to (invisible) barlines are
-delicate: the are attached to the rest of the score without the score
-knowing it. Consequently, they fall over often.
-";
-}
-
-\version "1.3.117";
-
-onestaff = \context Staff = foo\notes {
- \property Staff.instr = instr
- \property Staff.instrument = instrument \mark "B";
- c1 \mark "A"; \break c2 c2 \break
-}
-
-grstaff = \notes \context GrandStaff <
- \context Staff = bar {
-
- \property Staff.instr = instr
-
- \mark "B"; \break c1 \mark "A"; c2 }
- \context Staff = bufl { c1 c2 }
->
-
-scpaper = \paper {\translator {\OrchestralScoreContext}}
-stpaper = \paper{ \translator {\BarNumberingStaffContext }}
-
-scscore = \score { \grstaff \paper {
-\scpaper
-}}
-
-
-stscore = \score { \onestaff \paper {
- \stpaper
-}}
-
-%\score {\stscore}
-\score {\scscore
-\header { title = "bar scripts"; }
-}
-\header{
-texidoc="
-Beams can be typeset over fixed distance aligned staffs, beam
-beautification doesn't really work, but knees do. Beams should be
-behave well, wherever the switching point is.
-";
-}
-\score{
- \context PianoStaff <
- \context Staff=one \notes\relative c'{
- \stemUp [c8 c \translator Staff=two \stemUp c c]
- [c c c c]
- \translator Staff=one
- \stemDown [c8 c \translator Staff=two \stemUp c c]
- r2
- \stemDown [c8 c \translator Staff=one \stemDown c c]
- r2
- \translator Staff=two
- \stemUp [c8 c \translator Staff=one \stemDown c c]
- r2
- }
- \context Staff=two \notes\relative c'{
- \clef bass;
- s1
- s1
- s1
- s1
- }
- >
-}
-
-\version "1.3.117";
-\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]
- }
-}
-\header{
-texidoc="
-Beams should behave reasonably well, even under extreme circumstances.
-Stems may be short, but noteheads should never touch the beam.
-";
-}
-\version "1.3.117";
-\score{
- \notes\relative c''{
- [g8 c c,]
- [c16 c'' a f]
- \stemUp
- [c,,32 c'' a f]
-
- }
- \paper{
- linewidth=-1.;
- }
-}
-\header{
-texidoc="
-beams should look the same
-";
-}
-
-\score {
- \context Voice \notes\relative c {
-
- [d''8 d d] [d g d]
- c c
-
- }
-}
-\header{
-texidoc="
-Beams should always reach the middle staff line. The second beam
-counting from the note head side, should never be lower than the
-second staff line. This does not hold for grace note beams.
-Override with @code{noStemExtend}.
-";
-}
-\version "1.3.117";
-
-\score {
- \context Voice \notes\relative c {
- [f8 f] [f64 f] \grace { [f8 e8] }
- \property Grace.Stem \override #'no-stem-extend = ##t
- [f8 f]
-
- }
- \paper {
- linewidth=-1.0;
- }
- \midi { }
-}
-\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;
- }
-}
-\header{
-texidoc="
-Beaming is generated automatically. Beams may cross bar lines. In that
-case, line breaks are forbidden. Yet clef and key signatures are
-hidden just as with breakable bar lines.
-";
-}
-
-\score { \context Staff \notes \relative c'' {
- [c8. c16]
- [c8. c16 c8. c16]
- [c16 c8.] |
- [c8. c16 c16 c8.]
- [c8. c32 c32]
- [c8 c8] |
- [c16 c16]
- [c32 c32]
- [c64 c64]
- c32
- [c8 c,4 c'8] % should warn here!
- [c8 c c] c8 % over barline
- [c16 c8 c16]
- [c32 c16 c16 c16 c32]
- [c32 c16 c8 c32] % hmm ?
-
- }}
-
-\header{
-texidoc="
-The same mechanism can be used to force pagebreaks.
-";
-}
-
-
-% In reality, you'd use #"\\newpage" instead of "(pagebreak)", of course.
-
-\score {
-\notes { c1
-
- \context Score \outputproperty #(make-type-checker 'paper-column-interface)
- #'between-system-string = #"(pagebreak)\n\n"
- \break
-
-c1 }
-
-}
-\header{
-texidoc="
-Breaks can be encouraged and discouraged using @code{\break} and
-@code{\noBreak}. They are abbrevs for @code{\penalty} commands.
-";
-}
-
-
-\score{
- \notes\context Voice{
- \emptyText
- c1 c1^"no break after 2nd note" \noBreak c1 c1
-
- c1^"break after this" \break c1 c1
- }
- \paper { linewidth = 4.0\cm;}
-}
-\header{
-texidoc="
-Breathing signs, also used for phrasing, do normally not influence
-global spacing -- only if space gets tight, notes are shifted to make
-room for the breathing sign. Breathing signs break beams running
-through their voice. In the following example, the notes in the first
-two measures all have the same distance from each other:
-";
-}
-
-
-\version "1.3.117";
-
-\score {
- \notes \relative c' {
- \key es \major; \time 3/4;
- < \context Voice = two { \stemDown es4 bes es }
- \context Voice = one { \stemUp g4 as g }
- > |
- < \context Voice = two { \stemDown es4 \breathe bes es }
- \context Voice = one { \stemUp g4 as g }
- > |
- es8 d es f g4 \breathe |
- es8 d \breathe es f g f |
- es2 r4 \bar "||";
- }
-}
-\header{
-texidoc="
-Chord names are generated from a list pitches, and are customisable
-from guile. For some unlogical names, guile customisation is used
-by default.
-";
-}
-\version "1.3.117"
-chord = \notes\transpose c''\chords{
- c1
- c:m
- c:m5-
- c:m5-.7-
- c:7+
- c:m5-.7
- c:5-.7+
- c:m7
- c:7
- d
- d/a
- d/+gis
-}
-
-\score{
- <
- \context ChordNames \chord
- \context Staff \chord
- >
- \paper{
-
- \translator {
- \ChordNamesContext
- ChordName \override #'word-space = #1
- }
- }
-}
-
-\header{
-texidoc="
-Chord tremolos look like beams, but are a kind of repeat symbol.
-To avoid confusion, chord tremolo beams do not reach the stems, but
-leave a gap. Chord tremolo beams on half notes are not ambiguous,
-as half notes cannot appear in a regular beam, and should reach the
-stems.
-";
-}
-
-\score {
- \context Voice \notes\relative c {
- \repeat "tremolo" 8 { c16 d16 }
- \repeat "tremolo" 4 { c16 d16 }
- }
- \paper {
- linewidth=-1.0;
- }
- \midi { }
-}
-
-\header{
-texidoc="
-The transparent clef should not occupy any space and with style
-@code{fullSizeChanges}, the changing clef should be typeset in full
-size. For octaviated clefs, the ``8'' should appear closely above or
-below the clef respectively. The ``8'' is processed in a convoluted
-way, so this is fragile as well.
-";
-}
-
-\version "1.3.117";
-
-\score {
- \notes{
-
- \clef "treble"; c'1^"{treble}" \bar "||";
- \clef "french";c'1^"{french}" \bar "||";
- \clef "soprano";c'1^"{soprano}" \bar "||";
- \clef "mezzosoprano";c'1^"{mezzosoprano}" \bar "||";
- \clef "alto";c'1^"{alto}" \bar "||";
- \clef "tenor";c'1^"{tenor}" \bar "||";
- \clef "baritone";c'1^"{baritone}" \bar "||";
- \clef "varbaritone";c'1^"{varbaritone}" \bar "||";
- \clef "G_8";c'1^"{sub 8?}" c'1 \bar "||";
- \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 "|.";
- }
- \paper{
- }
-}
-
-\header{
-texidoc="
-Normal collisions. We have support for polyphony, where the
-middle voices are horizontally shifted.
-";
-filename = "collisions.ly";
-description = "random counterpoint to test collisions";
-enteredby = "HWN,JCN";
-copyright = "public domain";
-Tested = "test the Collision resolution ";
-}
-\version "1.3.117";
-
-twovoice = \context Staff \notes <
- \context Voice=i { \stemDown c4 d e f g2~ g4 a [c8 d e f] c2| }
- \context Voice=ii { \stemUp g4 f e g ~ g2 g2 c4 g4 g2 }
->
-
-twovoicesteminvert = \context Staff \notes <
- % the f and g on 4th beat are exceptionally ugh.
- \context Voice=i { \stemUp c4 d e f g2 g4 a | }
- \context Voice=ii { \stemDown g4 f e g g2 g2 }
->
-
-threevoice = \context Staff \notes <
- \context Voice=i { \stemUp g4 f e f g a g2 }
- \context Voice=ii { \stemUp \property Voice.NoteColumn \override #'horizontal-shift = #1
- e2 e2 e2 e2 }
- \context Voice=iii { \stemDown c4 d e d c d es }
->
-
-chordstest = \context Staff \notes <
- \context Voice = i \relative c {
- \stemUp e4 dis c f g f a b b
- }
- \context Voice = ii \relative c {
- \stemDown <a4 c> <a4 c> <a4 e'> <a4 c> <e' a> <e a> <e a> <a c> <a d>
- }
->
-
-hairyChord = \context Staff \notes\relative c' <
- \context Voice=one {
- \property Voice.NoteColumn \override #'horizontal-shift = #0
- \stemUp
- e4
- }
-
- \context Voice=two {
- \stemUp
- \property Voice.NoteColumn \override #'horizontal-shift = #1
- cis
- }
-
- \context Voice=three {
- \property Voice.NoteColumn \override #'horizontal-shift = #2
-
- \stemUp
- ais
- }
-
- \context Voice=four {
- \stemDown
- \property Voice.NoteColumn \override #'horizontal-shift = #1
-
- fis
- }
->
-
-
-\score{
- \notes \transpose c'' { \twovoice
- \twovoicesteminvert
- \threevoice \break
- \chordstest
- \hairyChord
- }
-
-% \midi { \tempo 4:80 }
-}
-\header{
-texidoc="
-Noteheads can have dots, and rests can too. Augmentation dots should
-never be printed on a staff line, but rather be shifted vertically. They
-should go up, but in case of multiple parts, the down stems have down
-shifted dots. (Wanske p. 186) In case of chords, all dots should be in
-a column. The dots go along as rests are shifted to avoid collisions.
-";
-}
-
-
-\version "1.3.117";
-\score {
- \context Voice \notes\relative c'' {
- \time 6/8;
- d4. g,,
- <b''4. c d e> <f g a b>
- <g b d> <c, g' d' a'>
-
-
- \context Staff <
- \context Voice = VA { \stemUp f'' <b c> r4. }
- \context Voice = VB { \stemDown b, <a b> r4. }
- >
-
-
- }
- \paper { }
- \midi { }
-}
-\header{
-texidoc="
-Dynamics appear below or above the staff. If multiple dynamics are
-linked with (de)crescendi, they should be on the same line.
-";
-}
-\score{
-\notes\relative c''{
-a1\fff\> \!c,,\pp a'' a\p
-
-
-% We need this to test if we get two Dynamic line spanners
-a
-
-% because do_removal_processing ()
-% doesn't seem to post_process elements
-d\f
-
-a
-
-}
-\paper{
-}
-\midi{
-\tempo 1 = 60;
-}
-}
-\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
-
-\score{
- \context PianoStaff <
- \context Staff=one \notes\relative c''{
- \context Thread
- d,
- \translator Staff=two
- c
-%{
- b
- \translator Staff=one
- a'
-
- [c,8
- \translator Staff=two
- c]
- s2.
-%}
- }
- \context Staff=two { \clef bass; \skip 1*2; }
- >
- \paper{
- linewidth = 90.\mm;
- \translator {
- \ScoreContext
- followThread = ##t
- }
- }
-}
-\header{
-texidoc="
-As a last resort, the placement of grobs can be adjusted manually, by
-setting the @code{extra-offset} of a grob.
-";
-}
-
-\score{
- \notes\relative c''{
- \outputproperty #(make-type-checker 'note-head-interface)
- #'extra-offset = #'(2 . 3)
- c2
- c
- \context Score {
- \outputproperty #(make-type-checker 'mark-interface)
- #'extra-offset = #'(-1 . 4)
- }
- \mark A;
- d1
- \mark;
- e
-}
-\paper{
- linewidth=-1.0;
-}
-}
-\header{
-texidoc="
-More specific settings take precendence over less specific settings. The
-second slur has slurDirection set to down, overriding the stemup setting.
-";
-}
-\version "1.3.117";
-
-\score {
- \notes \relative c'' \context Voice {
- \stemUp
- c'4 () c4
- \slurDown
- c4 ( )c4
- }
- \paper { linewidth = -1.0; }
-}
-\header{
-
-texidoc=" Simple glissando lines between notes are supported.
-The first two glissandi are not consecutive.
-
-The engraver does no time-keeping, so it involves some trickery to get
-< @{ s8 s8 s4 @} @{ c4 \\gliss d4 @} > working correctly.
-
-";
-}
-
-\score{
- \context Staff=one \notes\relative c''{
- % gliss non gliss and
- c4 \glissando d e \glissando f \glissando \break
- % consecutive
- c \glissando d \glissando e
- < { \stemUp e8 \glissando g8 }
- \context Voice = VB {\stemDown \repeat unfold 4 d16 } >
-
- }
- \paper{
- linewidth = 70.\mm;
- \translator{
- \StaffContext
- % makes for handier debugging
- % \remove Clef_engraver;
- }
- }
-}
-\header{
-texidoc="
-Grace notes are typeset as an encapsulated piece of music. You can
-have beams, notes, chords, stems etc. within a @code{\grace} section.
-Slurs that start within a grace section, but aren't ended are attached
-to the next normal note. Grace notes have zero duration. If there
-are tuplets, the grace notes won't be under the brace. Grace notes
-can have accidentals, but they are (currently) spaced at a fixed
-distance. Grace notes (of course) come before the accidentals of the
-main note. Grace notes can also be positioned after the main note.
-
-Grace notes without beams should have a slash, if @code{flagStyle} is
-not set. Main note scripts don't end up on the grace note.
-
-";
-}
-
-\score {\notes \context Voice = VA \relative c'' {
- \grace b8 c4-\fermata
- \grace { [c32 cis32] } gis4
- \grace { [cis32 dis32] } e4
- \grace { [c32 d] }\times 2/3 { [c8 c c] }
- \grace { [b32 ( c32] } ) c4
- \grace <c16 d16> [c8 c8]
-% \grace c16 [c8 c8]
- \grace { \property Grace.graceAlignPosition = \right c16} c4
-}
-\paper {linewidth = -1.;}
-\midi{ }
-}
-\header{
-texidoc="
-Hara kiri staffs kill themselves if they are empty. This example really
-contains two staffs, but the second contains only spaces, and is
-therefore removed. Also, any staff brackets and braces are removed.
-";
-}
-
-\version "1.3.117";
-zager = \context Staff = zager \notes \relative c'' {
- \clef treble;
- c1
-}
-
-zoger = \context Staff = zoger \notes \relative c'' {
- \clef treble;
- \skip 1* 1;
-}
-
-zagers = \context GrandStaff <
- \zager
- \zoger
->
-
-\score{
- <
- \context StaffGroup = zagers <
- \zagers
- >
- >
- \paper{
- linewidth = 80.0\mm;
-
- \translator { \HaraKiriStaffContext }
-%uh?
-
- }
-}
-
-
-\header{
-texidoc="
-Key signatures appear on key changes. They may also
-appear without barlines. The restoration accidentals are not printed at
-the start of the line. If @code{createKeyOnClefChange} is set, they're
-also created on a clef change.
-";
-}
-
-\version "1.3.117";
-
-\score {
- \notes \relative c''
- {
- \property Staff. createKeyOnClefChange = ##t
- \key bes \major; c2
-% \key c \major; % \minor;
- \key es \major; % \minor;
- c2
- \break
- \key bes \major; % \major;
- c2 \clef alto; c2 \key d \major; \clef treble; c2
- \property Staff. keySignature = #'((2 . -1) (6 . -1) (4 . -1))
- e2
- }
-}
-\header{
-texidoc="
-Lyrics can be set to a melody automatically. Excess lyrics will be
-dumped. Lyrics will not be set over rests. You can have melismata
-either by setting a property melismaBusy, or by setting
-automaticMelismas (which will set melismas during slurs and ties). If
-you want a different order than first Music, then Lyrics, you must
-precook a chord of staffs/lyrics and label those. Of course
-@code{\rhythm} ignores any other rhythms in the piece. Hyphens and
-extenders do not assume anything about lyric lengths, so they continue
-to work.
-";
-
-
-filename = "twinkle-pop.ly";
-xtitle = "Ah, vous dirais-je, maman ";
-description = "twinkle twinkle in pop-song-settings";
-composer = "traditional";
-enteredby = "HWN, chords by Johan Vromans";
-copyright = "public domain";
-}
-
-\version "1.3.117";
-
-m = \notes \relative c'' {
- \property Staff.automaticMelismata = ##t
- \autoBeamOff
- g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4
- \emptyText
- d8.^"melisma" \melisma c16
- \melismaEnd
- b }
-
-noisebeat = \notes \relative c'' {g16 g g g }
-noise = { \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat \noisebeat }
-textI = \lyrics { la2 __ la -- la __ la la la la la }
-textII = \lyrics { da -- da __ da -- da da da da da }
-
-\score {
- \notes < \context Staff = SA \m
- \context Lyrics = LA { s1 }
- \context Staff = SB { s1 }
- \context Lyrics = LB { s1 }
- \context Staff = SC \noise
-
- \addlyrics
- \context Staff = SB \m
- < \context Lyrics = LA \textI
- \context Lyrics = LB \textII
- >
-
- >
-}
-
-\header{
-texidoc="
-Adding a @code{Bar_engraver} to the LyricsVoice context makes sure that
-lyrics don't collide with barlines.
-";
-}
-
-\score {
- \context StaffGroup <
- \notes \context Staff {
- b1 b1 \bar "|.";
- }
- \lyrics\context Lyrics <
- \context LyricsVoiceWithBars {
-% thisContextHasSpanBarEngraver1 added
- ThisContextCertainlyHasSpanBarEngraverAddedButTheresSomethingFunny1. Here.
- }
- \context LyricsVoice {
- this4 one has no SpanBarEngraverAddedToContext1
- }
- >
- \notes \context Staff = SB { b1 b1 }
- >
- \paper {
- linewidth = -1.0\cm;
- \translator {
- \LyricsContext
- \consists "Span_bar_engraver";
- \accepts "LyricsVoiceWithBars";
- }
- \translator {
- \LyricsVoiceContext
- \name "LyricsVoiceWithBars";
- }
- \translator {
- \LyricsVoiceContext
- }
- }
-}
-
-\version "1.3.117";
-\include "english.ly"
-
-\header{
-texidoc="
-Multiple stanzas
-
- Tests a number of features:
- * Lyric_phrasing_engraver
- * Stanza_number_engraver
- * Automatic melismata on beamed notes
-
-";
-
- title = "Crowned with Honour";
- composer = "Oliver Holden (1765-1844)";
- poet = "Thomas Kelly (1769-1855)";
-}
-
-allup = \notes{
- \stemUp
- \slurUp
- \tieUp
- \property Voice.DynamicLineSpanner \override #'direction = #1
- \autoBeamOff
-}
-
-alldown = \notes{
- \stemDown
- \slurDown
- \tieDown
- \property Voice.DynamicLineSpanner \override #'direction = #-1
- \autoBeamOff
-}
-
-Global = \notes{
- \key g \major;
- \time 4/4;
- \partial 4;
-}
-
-Soprano = \notes \relative c' {
- \allup
- d4 | g g b b a g a b a g b a g( a )g % modified to test melisma align right
-
- [a8 b] | b4 % modified to test melisma align left
- a g b [d16 d c8] [b a] b4 % modified to test beam melisma
-% a4 | b a g b [d8 \melisma c] \melismaEnd [b \melisma a] \melismaEnd b4
-
- d d2 d e d4( cs8 ~ )cs d2.
-
- b4 | d b g b [a8 g] [a b] a4
-% b4 | d b g b [a8 \melisma g] \melismaEnd [a \melisma b] \melismaEnd a4
-
- g d'2 c b4.( c8 )a4 a g2.
-}
-Alto = \notes \relative c'{
- \alldown
- d4 | d d g g fs g fs g fs e g fs d2.
- d4 | g d b g' [b8 a] [g fs] g4 fs g2 a g fs4( e8 )g fs2.
- d4 | g g d g [fs8 e] [fs g] fs4 g f2 e d4.( d8 )d4 fs4 d2.
-}
-Tenor = \notes \relative c{
- \allup
- d4 | b' b d d c b c d c b d c b2.
- a4 | b a g b [d8 c] [b a] b4 a b2 c b a a2.
- g4 | b d b d [c8 b] [c d] c4 b g2 g g4.( a8 [fs )a] c4 b2.
-}
-Bass = \notes \relative c{
- \alldown
- d4 | g g g g d d d g d e d d g,2.
- d'4 | g d b g' [b8 a] [g fs] g4 d g2 fs e a d,2.
- g4 | g g g g d d d e b2 c d2. d4 g,2.
-}
-
-TheLyrics = \lyrics <
- {
- \context LyricsVoice = "Soprano-1"
- \property LyricsVoice .stanza = "1:"
- \property LyricsVoice .stz = "(1)"
- The4 head that once was crowned with thorns
- Is crowned with glo -- ry now;
- A roy -- al di -- a -- dem a -- dorns
- The might -- y Vic -- tor's brow.
- A roy -- al di -- a -- dem a -- dorns
- The might -- y Vic -- tor's brow.
- }
- {
- \context LyricsVoice = "Soprano-2"
- \property LyricsVoice .stanza = "2:"
- \property LyricsVoice .stz = "(2)"
- The4 high -- est place that heav'n af -- fords
- Is His by sov -- 'reign right;
- The King of kings, the Lord of lords,
- He reigns in glo -- ry bright,
- The King of kings, the Lord of lords,
- He reigns in glo -- ry bright.
- }
- {
- \context LyricsVoice = "Soprano-3"
- \property LyricsVoice .stanza = "3:"
- \property LyricsVoice .stz = "(3)"
- The joy of all who dwell a -- bove,
- The joy of saints be -- low,
- To4 whom He man -- i -- fests His love,
- And grants His name to know,
- To4 whom He man -- i -- fests His love,
- And grants His name to4 know.
- }
->
-
-
-\score{
- \context ChoirStaff
- \notes
- <
- \property Score.barNumberScriptPadding = #10.0
- \context Staff = "treblestaff"{
- <
- \context Voice = "Soprano" { }
- \context Voice = "Alto" { }
- >
- }
- \context Lyrics = mainlyrics { }
- \context Staff = "treblestaff"{
- <
- \Global
- \addlyrics { \context Voice = "Soprano" \Soprano }
- { \context Lyrics = mainlyrics \TheLyrics }
- \context Voice = "Alto" \Alto
- >
- \bar "|.";
- }
- \context Staff = "bassstaff"{
- \clef "bass";
- <
- \context Voice = "Tenor" { \Tenor }
- \context Voice = "Bass" { \Bass }
- >
- \bar "|.";
- }
- >
-
- \paper {
- \translator{
- \VoiceContext
- automaticMelismata = ##t;
- noAutoBeaming = ##t;
- \remove "Auto_beam_engraver";
- }
-
- }
-}
-
-\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.\mm;
- \translator{
- \ScoreContext
- TextScript \override #'font-shape = #'upright
- TextScript \override #'direction = #1
- }
- }
-}
-\header{
-texidoc="
-If @code{Score.skipBars} is set,
-the signs for four, two, and one measure rest are combined to
-produce the graphical representation of rests for up to 10 bars.
-The number of bars will be written above the sign.
-";
-}
-
-thenotes = \notes \relative cis' {
-\property Score. skipBars = ##t
-\time 4/4;
-R1 |
-R1*1 |
-R1*2 |
-R1*3 |
-R1*4 |
-R1*5 |
-R1*6 |
-R1*7 |
-R1*8 |
-R1*9 |
-R1*10 |
-R1*11 |
-}
-
-\score { < \context Staff \thenotes
-
- >
-}
-
-\header { texidoc=" You can write molecule callbacks in Scheme, thus
-providing custom glyphs for notation elements. A simple example is
-adding parentheses to existing molecule callbacks.
-
-The parenthesized beam is less successful due to implementation of the
-Beam. The note head is also rather naive, since the extent of the
-parens are also not seen by accidentals.
-";
-
- }
-
-#(define (parenthesize-callback callback)
- "Construct a function that will do CALLBACK and add parentheses.
-Example usage:
-
- \property Voice.NoteHead \\override #'molecule-callback
- =
- #(parenthesize-callback Note_head::brew_molecule)
-
-"
-
-
- (define (parenthesize-molecule grob)
- "This function adds parentheses to the original callback for
-GROB. The dimensions of the molecule is not affected.
-"
-
- (let* (
- (fn (ly-get-default-font grob))
- (pclose (ly-find-glyph-by-name fn "accidentals-)"))
- (popen (ly-find-glyph-by-name fn "accidentals-("))
- (subject (callback grob))
-
- ;; remember old size
- (subject-dims (ly-get-molecule-extent subject 0))
- )
-
- ;; add parens
- (set! subject
- (ly-combine-molecule-at-edge
- (ly-combine-molecule-at-edge subject 0 1 pclose 0.2)
- 0 -1 popen 0.2))
-
- ;; revert old size.
- (ly-set-molecule-extent! subject 0 subject-dims)
- subject
- )
- )
- parenthesize-molecule
- )
-
-
-
-\score {
- \notes \relative c' { c4 e
-
- \property Voice.NoteHead \override #'molecule-callback
- =
- #(parenthesize-callback Note_head::brew_molecule)
- g bes
- \property Voice.NoteHead \revert #'molecule-callback
- \property Voice.Beam \override #'molecule-callback
- =
- #(parenthesize-callback Beam::brew_molecule)
-
- a8 gis8 a2.
-
- }
-
- \paper { linewidth = -1.; }
- }
-
-\header{
-texidoc="
-Multiple measure rests do not collide with barlines and clefs. They
-are not expanded when you set @code{Score.skipBars}. Although the
-multi-measure-rest is a Spanner, minimum distances are set to keep it
-colliding from barlines.
-";
-}
-\version "1.3.117";
-
-\score { \notes { \time 3/4; \key cis \major;
- R2.*15 R2. R2.*7 }
- \paper {
- \translator {
- \ScoreContext
- skipBars = ##t
- }
- linewidth = -1.;
- }
-}
-\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.;
- }
-}
-\header{
-texidoc="
-Text is set with empty horizontal dimensions. The boolean property
-textNonEmpty is used to respect the horizontal size of text.
-";
-}
-\score { \notes {
-\property Voice.TextScript \override #'no-spacing-rods = ##f
-c4_"very wide and long text" c4
-}
-
-\paper {
- linewidth = -1.0;
- }
-}
-\header{
-texidoc="
-Note head shapes are settable. The stem endings should be adjusted
-per note head. If you want different note head styles on one stem,
-you must create a special context called Thread.
-
-Harmonic notes have a different shape and different
-dimensions. Nevertheless, noteheads in both styles can be combined, on
-either up or down stems.
-";
-}
-
-\version "1.3.117";
-
-
-\score { \notes \relative c{
-% anyone wanna pop?
-c''4 c2 c8 c16 c16 c1 c\breve
-\property Voice.NoteHead \override #'style = #'diamond
-c4 c2 c8 c16 c16 c1 c\breve
-\property Voice.NoteHead \override #'style = #'transparent
-c4 c2 c8 c16 c16 c1 c\breve
-\property Voice.NoteHead \override #'style = #'cross
-c4 c2 c8 c16 c16 c1 c\breve
-\property Voice.NoteHead \override #'style = #'mensural
-c4 c2 c8 c16 c16 c1 c\breve c\longa
-\property Voice.NoteHead \override #'style = #'harmonic
-c4 c2 c8 c16 c16 c1 c\breve
-\property Voice.NoteHead \override #'style = #'baroque
-c4 c2 c8 c16 c16 c1 c\breve c\longa
-
-
- \context Voice <
- \context Thread = TA
- {
- \property Thread.NoteHead \override #'style = #'cross
- \property Voice.Stem \override #'direction = #1
- c16
- }
- \context Thread = TB
- { \property Thread.NoteHead \override #'style = #'default a16 }
-
- \context Thread = TC
- { \property Thread.NoteHead \override #'style = #'mensural d16 }
-
- >
-
-
- \context Voice <\context Thread = TA {
- \property Thread.NoteHead \override #'style = #'default
- c4 c4 }
-\context Thread = TB {
- \property Thread.NoteHead \override #'style = #'mensural
- c'4 \stemDown c
-} >
-
-}
-
- \paper {
-
-
-}
-}
-\header{
-
-texidoc=" The number of stafflines of a staff can be set. Ledger
-lines both on note heads and rests are adjusted. Barlines also are
-adjusted. ";
-
-}
-
-\score {
-\context Voice \notes\relative c {
- c' c c c | g' g g g
- }
- \paper {
-
-\translator { \StaffContext
-StaffSymbol \override #'line-count = #3
-} }
- \midi { }
-}
-\header{
-texidoc="
-Slurs can be forced to always attach to note heads.
-";
-}
-
-
-\score{
- \notes \relative c''{
- \property Voice.VerticalDirection = #1
- \property Voice.slurBeginAttachment = #'head
- \property Voice.slurEndAttachment = #'head
- g16()g()g()g()d'()d()d()d
- }
- \paper{
- indent = 0.0;
- linewidth = 60.0\mm;
- }
-}
\m
>
\context Staff = vlc <
- \property Staff.instrument = "Violoncello"
+ %% \property Staff.instrument = "Violoncello"
+ \property StaffCombineStaff.instrument = #'(lines "Violoncello" "e" "Contrabasso")
\property Staff.instr = "Vlc"
\m
>
linewidth = 185.\mm;
textheight = 260.\mm;
\translator {
- \OrchestralScoreContext
-% barNumberScriptPadding = 10;
+ \OrchestralScoreContext
+ skipBars = ##t
+ markScriptPadding = #4.0
+ BarNumber \override $'padding = #3
+ RestCollision \override #'maximum-rest-count = #1
+ marginScriptHorizontalAlignment = #1
}
\translator { \HaraKiriStaffContext
}
-
-\version "1.3.117";
-
-\score{
- \notes\relative c'''{
- \property Voice.TextSpanner \revert #'type
- \property Voice.TextSpanner \override #'type = #'dotted-line
- \property Voice.TextSpanner \override #'edge-height = #'(0 . 1.5)
- \property Voice.TextSpanner \override #'edge-text = #'("8va " . "")
- \property Staff.centralCPosition = #-13
-
- a\spanrequest \start "text" b c a \spanrequest \stop "text"
-
- \property Staff.centralCPosition = #-6
- a b c a
-
- \property Staff.centralCPosition = #1
- \property Voice.TextSpanner \override #'edge-text = #'("8bass " . "")
- \property Voice.TextSpanner \override #'direction = #-1
- a\spanrequest \start "text" b c a \spanrequest \stop "text"
- }
-}
+\header {
+texidoc="Template for part-combining orchestral scores";
+}
+
+\include "paper16.ly";
+% \include "mutopia/Coriolan/coriolan-paper.ly";
+
+
+
+flautoI = \notes\relative c'' {
+ c4 d e f
+ b,4 d c d
+ r2 e4 f
+ \break
+ c4 d e f
+ c4 r e f
+ c4 r e f
+ \break
+ c4 r a r
+ a a r a
+ a2 \property VoiceCombineThread.soloADue = ##f a
+}
+
+flautoII = \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 VoiceCombineThread.soloADue = ##f a
+}
+
+flautiStaff = \notes \context VoiceCombineStaff = flauti <
+ \property VoiceCombineStaff.midiInstrument = #"flute"
+ \property VoiceCombineStaff.instrument = #"2 Flauti"
+ \property VoiceCombineStaff.instr = #"Fl."
+ %\global
+ \context VoiceCombineVoice=one \partcombine VoiceCombineVoice
+ \context VoiceCombineThread=one \flautoI
+ \context VoiceCombineThread=two \flautoII
+>
+
+legniGroup = \context StaffGroup = legni_group <
+ \flautiStaff
+ %\oboiStaff
+ %\clarinettiStaff
+ %\fagottiStaff
+>
+
+violinoI = \notes\relative c'' {
+ c4 d e f
+ c d e f
+ c d e f
+ c d e f
+ c d e f
+ c d e f
+ c4 d e f
+ a8 a a a b b b b
+ d1
+}
+
+violinoII = \notes\relative c'' {
+ c4 d e f
+ c d e f
+ c d e f
+ c2 e2
+ c4 d e f
+ c2 e2
+ c,4 d e f
+ a8 a a a b b b b
+ b1
+}
+
+violinoIStaff = \context Staff = violino1 <
+ \property Staff.midiInstrument = #"violin"
+ \property Staff.instrument = #"Violino I"
+ \property Staff.instr = #"Vl. I"
+ \notes<
+ %\global
+ \context Voice=violinoi
+ \violinoI
+ >
+>
+
+violinoIIStaff = \context Staff = violino2 <
+ % MIDI hoort geeneens verschil tussen een
+ % eerste en tweede viool ;-)
+ \property Staff.midiInstrument = #"violin"
+ \property Staff.instrument = #"Violino II"
+ \property Staff.instr = #"Vl. II"
+ \notes<
+ %\global
+ \context Voice=violinoii
+ \violinoII
+ >
+>
+
+violaI = \notes\transpose c, \violinoI
+
+violaII = \notes\transpose c, \violinoII
+
+violiGroup = \notes \context VoiceCombineStaff = violi <
+ \context VoiceCombineStaff=violi {
+ \property VoiceCombineStaff.midiInstrument = #"viola"
+ \property VoiceCombineStaff.instrument = #"Viola"
+ \property VoiceCombineStaff.instr = #"Vla."
+ \clef "alto";
+ \key es \major;
+ \skip 1*314;
+ \bar "|.";
+ }
+ \context VoiceCombineVoice=one \partcombine VoiceCombineVoice
+ \context VoiceCombineThread=one \violaI
+ \context VoiceCombineThread=two \violaII
+>
+
+violoncello = \notes\relative c {
+ \clef bass;
+ c1 d e f c d e f c
+}
+
+contrabasso = \notes\relative c {
+ \clef bass;
+ c1
+ d4 e d e
+ e1
+ f4 g f g
+ c1
+ d4 e d e
+ e1
+ f4 g f g
+ c1
+}
+
+
+bassiGroup = \context PianoStaff = bassi_group \notes <
+ \context StaffCombineStaff=oneBassi {
+ \property StaffCombineStaff.midiInstrument = #"cello"
+ %\property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso"
+ \property StaffCombineStaff.instrument = #'(lines "Violoncello" "e" "Contrabasso")
+ \property StaffCombineStaff.instr = #"Vc."
+ \clef "bass";
+ \key es \major;
+ \skip 1*314;
+ \bar "|.";
+ }
+ \context StaffCombineStaff=twoBassi {
+ \property StaffCombineStaff.midiInstrument = #"contrabass"
+ \property StaffCombineStaff.instrument = #"Contrabasso"
+ \property StaffCombineStaff.instr = #"Cb."
+ \clef "bass";
+ \key es \major;
+ \skip 1*314;
+ \bar "|.";
+ }
+
+ \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff
+ \context StaffCombineVoice=oneBassi \violoncello
+ \context StaffCombineVoice=twoBassi \contrabasso
+>
+
+
+violiniGroup = \context GrandStaff = violini_group <
+ \violinoIStaff
+ \violinoIIStaff
+>
+
+archiGroup = \context StaffGroup = archi_group <
+ \violiniGroup
+ \violiGroup
+ \bassiGroup
+>
+
+
\score{
- <
- \context VoiceCombineStaff = flauti <
- \time 4/4;
-
- \context VoiceCombineThread=one \skip 1*9;
- \context VoiceCombineThread=two \skip 1*9;
-
- \context VoiceCombineVoice=one \partcombine VoiceCombineVoice
- \context VoiceCombineThread=one \notes\relative c''
- {
- c4 d e f
- b,4 d c d
- r2 e4 f
- \break
- c4 d e f
- c4 r e f
- c4 r e f
- \break
- c4 r a r
- a a r a
- a2 \property VoiceCombineThread.soloADue = ##f a
- }
- \context VoiceCombineThread=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 VoiceCombineThread.soloADue = ##f a
- }
- >
- \context PianoStaff = violi <
- \context StaffCombineStaff=oneVioli { \clef alto; \skip 1*9;}
- \context StaffCombineStaff=twoVioli { \clef alto; \skip 1*9;}
- \context StaffCombineStaff=oneVioli \partcombine StaffCombineStaff
- \context StaffCombineVoice=one \notes\relative c'
- {
- c4 d e f
- c d e f
- c d e f
- c d e f
- c d e f
- c d e f
- c4 d e f
- a8 a a a b b b b
- d1
- }
- \context StaffCombineVoice=two \notes\relative c'
- {
- c4 d e f
- c d e f
- c d e f
- c2 e2
- c4 d e f
- c2 e2
- c,4 d e f
- a8 a a a b b b b
- b1
- }
- >
- \context PianoStaff = lower <
- \context StaffCombineStaff=oneBassi { \clef bass; \skip 1*9;}
- \context StaffCombineStaff=twoBassi { \clef bass; \skip 1*9;}
- \context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff
- \context StaffCombineVoice=oneB \notes\relative c
- {
- \clef bass;
- c1
- d
- e
- f
- c
- d
- e
- f
- c
- }
- \context StaffCombineVoice=twoB \notes\relative c
- {
- \clef bass;
- c1
- d4 e d e
- e1
- f4 g f g
- c1
- d4 e d e
- e
- f4 g f g
- c1
- }
- >
- >
- \paper {
-
- textheight = 295.0\mm;
- linewidth = 180.0\mm;
-
- \translator{ \HaraKiriStaffContext }
- %
- % The Voice combine hierarchy
- %
- \translator{
- \ThreadContext
- \name "VoiceCombineThread";
- \consists "Rest_engraver";
- }
- \translator{
- \VoiceContext
- \name "VoiceCombineVoice";
- soloText = #"I."
- soloIIText = #"II."
- \remove "Rest_engraver";
- \accepts "VoiceCombineThread";
- }
- \translator{
- \HaraKiriStaffContext
- \consists "Mark_engraver";
- \name "VoiceCombineStaff";
- \accepts "VoiceCombineVoice";
- }
-
- %
- % The Staff combine hierarchy
- %
- \translator{
- \ThreadContext
- \name "StaffCombineThread";
- }
- \translator{
- \VoiceContext
- \name "StaffCombineVoice";
- \accepts "StaffCombineThread";
- \consists "Thread_devnull_engraver";
- }
- \translator {
- \HaraKiriStaffContext
- \name "StaffCombineStaff";
- \accepts "StaffCombineVoice";
-
- soloADue = ##t
- soloText = #""
- soloIIText = #""
- aDueText = #""
- splitInterval = #'(1 . 0)
- }
- \translator {
- \StaffGroupContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
- }
- \translator{ \HaraKiriStaffContext }
-
- \translator {
- \ScoreContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
- skipBars = ##t
-
- barScriptPadding = #2.0 % dimension \pt
- markScriptPadding = #4.0
-
- %% urg: in pt?
- barNumberScriptPadding = #15
- %% URG: this changes dynamics too
- %%textStyle = #"italic"
- timeSignatureStyle = #"C"
- maximumRestCount = #1
- }
- }
- \midi{
- \tempo 4 = 150;
-
- \translator {
- \ThreadContext
- \name "VoiceCombineThread";
- }
- \translator {
- \VoiceContext
- \name "VoiceCombineVoice";
- \accepts "VoiceCombineThread";
- }
- \translator {
- \StaffContext
- \name "VoiceCombineStaff";
- \accepts "VoiceCombineVoice";
- }
-
- \translator {
- \ThreadContext
- \name "StaffCombineThread";
- }
- \translator {
- \VoiceContext
- \name "StaffCombineVoice";
- \accepts "StaffCombineThread";
- }
- \translator {
- \StaffContext
- \name "StaffCombineStaff";
- \accepts "StaffCombineVoice";
- }
- \translator {
- \ScoreContext
- \accepts "VoiceCombineStaff";
- \accepts "StaffCombineStaff";
- }
- }
+ <
+ \legniGroup
+ %\ottoniGroup
+ %\timpaniGroup
+ \archiGroup
+ >
+ \header {
+ title = "Coriolan";
+ subtitle = "Ouverture";
+ opus = "Opus 62";
+ composer = "Ludwig van Beethoven (1770-1827)";
+ enteredby = "JCN";
+ copyright = "public domain";
+ }
+ %\paper {}
+ \paper{
+ \paperSixteen
+
+ %textheight = 290.0\mm;
+ %linewidth = 195.0\mm;
+ textheight = 285.0\mm;
+ linewidth = 190.0\mm;
+
+ \translator{ \HaraKiriStaffContext }
+ %
+ % The Voice combine hierarchy
+ %
+ \translator{
+ \ThreadContext
+ \name "VoiceCombineThread";
+ \consists "Rest_engraver";
+ }
+ \translator{
+ \VoiceContext
+ \name "VoiceCombineVoice";
+ soloText = #"I."
+ soloIIText = #"II."
+ \remove "Rest_engraver";
+ \accepts "VoiceCombineThread";
+ }
+ \translator{
+ \HaraKiriStaffContext
+ \consists "Mark_engraver";
+ \name "VoiceCombineStaff";
+ \accepts "VoiceCombineVoice";
+ }
+
+ %
+ % The Staff combine hierarchy
+ %
+ \translator{
+ \ThreadContext
+ \name "StaffCombineThread";
+ }
+ \translator{
+ \VoiceContext
+ \name "StaffCombineVoice";
+ \accepts "StaffCombineThread";
+ \consists "Thread_devnull_engraver";
+ }
+ \translator {
+ \HaraKiriStaffContext
+ \name "StaffCombineStaff";
+ \accepts "StaffCombineVoice";
+
+ soloADue = ##t
+ soloText = #""
+ soloIIText = #""
+ % This is non-conventional, but currently it is
+ % the only way to tell the difference.
+ aDueText = #"\\`a2"
+ splitInterval = #'(1 . 0)
+ changeMoment = #`(,(make-moment 1 1) . ,(make-moment 1 1))
+ }
+ \translator {
+ \StaffGroupContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+ }
+ \translator{ \HaraKiriStaffContext }
+
+ \translator {
+ %\ScoreContext
+ \OrchestralScoreContext
+ \accepts "VoiceCombineStaff";
+ \accepts "StaffCombineStaff";
+ skipBars = ##t
+
+ markScriptPadding = #4.0
+
+ BarNumber \override #'padding = #3
+ RestCollision \override #'maximum-rest-count = #1
+ }
+ }
}
-\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 = 140.\mm;
- \translator{
- \ThreadContext
- \consists Rest_engraver;
- }
- \translator{
- \VoiceContext
- \remove Rest_engraver;
- }
- }
-}
-\header{
-texidoc="
-Folded. This doesn't make sense without alternatives, but it works.
-";
-}
-
-\score { \notes\context Staff\relative c'' {
-\repeat fold 3 { c^"3$\\times$ 0alt" d }
-% less alts than body
-\repeat fold 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
-% more alts than body
-\repeat fold 2 { c^"2$\\times$ 3alt" d } \alternative { e f g }
-}}
-
-\header{
-texidoc="
-Across linebreaks, the left edge of a first and second alternative
-bracket should be equal
-";
-}
-
-\score {
-\notes
-\context Staff\relative c'' {
- \repeat "volta" 2 { c1 \break } \alternative { d e }
- c1
- \repeat "volta" 2 { c1 } \alternative { { d \break} e }
-
-}
-}
-\header{
-texidoc="
-LilyPond has three modes for repeats: folded, unfolded and
-semi-unfolded. Unfolded repeats are fully written out. Semi unfolded
-repeats have the body written and all alternatives sequentially.
-Folded repeats have the body written and all alternatives
-simultaneo.ly. If the number of alternatives is larger than the
-repeat count, the excess alternatives are ignored. If the number of
-alternatives is smaller, the first alternative is multiplied to get to
-the number of repeats.
-
-Unfolded behavior:
-";
-}
-
-\score {
-
- \context Voice \notes\relative c'' {
-\repeat unfold 3 { c^"3x 0a" d }
-% less alts than body
-\repeat unfold 4 { c^"4x 0a" d } \alternative { e f }
-% more alts than body
-\repeat unfold 2 { c^"2x 3a" d } \alternative { e f g }
-}}
-
-\header{
-texidoc="
-Volta (Semi folded) behavior. Voltas can start on non-barline moments.
-If they don't barlines should still be shown.
-";
-}
-
-% no alts.
-\score { \notes
- \relative c'' {
-% repeat non aligning with barlines.
-e
-\repeat volta 3 { c^"3$\\times$ 0alt" d e }
-% less alts than body
-\repeat volta 4 { c^"4$\\times$ 2alt" d } \alternative { e f }
-
-% more alts than body
-\repeat volta 2 { c^"2$\\times$ 3alt" d } \alternative { e f g }
-}
-
- \midi{}
- \paper{}
-
-}
-
-\header{
-texidoc="
-Rests should not collide with beams, stems and noteheads. Rests may
-be under beams. Rests should be move by integral number of spaces
-inside the staff, and by half spaces outside. Notice that the half
-and whole rests just outside the staff get ledger lines in different
-cases.
-";
-}
-
-scale = \notes \relative c' {
- c8 d e f g a b c c d e f g a b c
-
-}
-rests = \notes {
- r r r r r r r r r r r r r r r r
-}
-different = < \context Voice = one {
- \stemUp
- \notes \relative c'' {
- r8 a e4 a e
- }
- }
- \context Voice = two {
- \stemDown
- \notes \relative c'' {
- r1
- }} >
-
-scales = \context Staff \notes <
- \context Voice=i { \stemUp r1 r2 r2 \scale c''1 c'2 a'2 \rests }
- \context Voice = ii { \stemDown a'1 a'2 d'2 \rests r1 r2 r2 \scale }
->
-
-restsII = \context Staff \notes {
- r4 r8
- \context Staff < { \stemUp r8 } { \stemDown r8} >
- \context Staff < {\stemUp r8} r8 { \stemDown r8} >
- \context Staff < {\stemUp r8} r8 r8 { \stemDown r8} >
- \context Staff < {\stemUp r} { \stemDown r} >
- \context Staff < {\stemUp r} r { \stemDown r} >
- \stemUp
- \transpose c'' { [c''8 r8 c''8 c''8]
- [c8 r8 c8 c8]
- [c8 r8 r8 c'''8]
- \stemDown
- [c8 r8 c8 c8]
- [c''8 r8 c''8 c''8]
- [c'8 r8 r8 c'''8]
- \different
- }
-}
-
-\score{
- \notes {
- \scales
- \restsII
- }
-}
-
-\version "1.3.117";
-\header{
-texidoc="
-Rests. Note that the dot of 8th, 16th and 32nd rests rest should be
-next to the top of the rest. All rests except the whole rest are
-centered on the middle staff line.
-";
-}
-
-
- \score { \notes {
- \time 4/4;
-r \longa * 1/4 r\breve * 1/2
-r1 r2 r4 r8 r16 r32 r64 r128 r128
-\time 6/4;
-r1. r2. r4. r8. r16. r32. r64. r128. r128.
-}}
-\header{
-texidoc="
-Fonts are available in a default set of sizes: 11, 13, 16, 20, 23 and
-26pt staffheight. Sizes of the text fonts and symbol fonts are made
-to match the staff dimensions.
-";
-}
-
-\include "paper11.ly"
-\include "allfontstyle.ly";
-\include "paper13.ly"
-\include "allfontstyle.ly";
-\include "paper16.ly"
-\include "allfontstyle.ly";
-\include "paper20.ly"
-\include "allfontstyle.ly";
-\include "paper23.ly"
-\include "allfontstyle.ly";
-\include "paper26.ly"
-\include "allfontstyle.ly";
-\header{
-texidoc="
-In some cases, you may want to set slur attachments by hand.
-";
-}
-
-\score{
- \notes \relative c''{
- \property Voice.Stem \set #'length = #5.5
- \property Voice.Slur \set #'direction = #1
- \property Voice.Slur \set #'attachment = #'(stem . stem)
- g8(g)g4
- g4(g8)g
- }
- \paper{
- indent = 0.0;
- linewidth = 60.\mm;
- }
-}
-\header{
-texidoc="
-Slurs should be attached to note heads, except when they would collide
-with beams. Also see: ophee-slurs.
-";
-}
-\score{
- \notes \relative c''{
- \property Voice.Slur \set #'direction = #1
- a8( a )a4
- a4( a8 )a
- a8 a()a4
- a4() a8 a
- }
- \paper{
- indent = 0.0;
- linewidth = 100.\mm;
- }
-}
-\header{
-texidoc="
-Across line breaks, slurs behave nicely. On the left, they extend to
-just after the preferatory matter, and on the right to the end of the
-staff. A slur should follow the same vertical direction it would have
-in unbroken state.
-";
-}
-\score{
- \notes \relative c''{
- e1( \break) a,
- \time 2/4;
- e'2( \break) a,(\break
- a2\break
- )e'2
- }
- \paper {
- linewidth=40.\mm;
- indent=0.;
- }
-}
-\header{
-texidoc="
-The same goes for slurs. They behave decently when broken across
-linebreak.
-";
-}
-
-
-\score{
- \context PianoStaff <
- \context Staff=one \notes\relative c'{
- \stemUp \slurUp
- c4( c \translator Staff=two c )c |
- \translator Staff=one
- \stemUp \slurUp
- c4( c \translator Staff=two c )c |
- \stemUp \slurUp
- c4( c \translator Staff=one c )c |
- \translator Staff=two
- \stemUp \slurUp
- c4( c \translator Staff=one c )c |
- \translator Staff=two
- \stemUp \slurUp
- c4( \translator Staff=one c c )c |
- r2
- \translator Staff=two
- \stemUp \slurUp
- c4( \translator Staff=one c
- \break
- c )c
- r2
-% \stemDown \slurDown
-% c4( \translator Staff=two c c \translator Staff=one )c
- \stemDown \slurDown
- d4( \translator Staff=two c c \translator Staff=one )d
- \translator Staff=two
- \stemUp \slurUp
- c4( \translator Staff=one c c \translator Staff=two )c
- r1
- }
- \context Staff=two \notes\relative c'{
- \clef bass;
- s1 s1 s1 s1 s1 s1 s1 s1 s1 s1
- }
- >
-}
-
-\version "1.3.117";
-\header{
-texidoc="
-Slurs should look nice and symmetric. The curvature may increase
-only to avoid noteheads, and as little as possible. Slurs never
-run through noteheads or stems.
-";
-}
-\version "1.3.117";
-\score{
- \notes\relative c''{
- \time 3/4;
- \slurUp
- \stemBoth a ( \stemDown a \stemBoth ) a a( c )a a( e' )a, a( g' )a,
- \stemUp a( e' )a,
- \break
- \slurDown
- \stemBoth c ( \stemUp c \stemBoth ) c c ( a ) c c( d, )c' c( f, )c'
- \stemDown c( f, )c'
- }
- \paper{
- linewidth = 120.\mm;
- }
-}
-\score{
- \notes\relative c''<
- \time 4/4;
- \context Staff{
- f8(f f)f f(g g)f f(a a)f f(b b)f
- }
- \context Staff=x{
- e,(e e)e e(d d)e e(c c)e e(b b)e
- }
- >
- \paper{
- linewidth=-1.;
- }
-}
-\score{
- \notes\relative c'<
- \time 6/8;
- \context Staff{
- e8(e)e e(d)e e(c)e e(b)e
- }
- \context Staff=x{
- f'8(f)f f(g)f f(a)f f(b)f
- }
- >
- \paper{
- linewidth=-1.;
- }
-}
-\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)
- }
- }
-}
-
-\header {
-texidoc="LilyPond 1.3 is more flexible than some users realise. Han-Wen could be very rich.
-";
-}
-
-% 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
-%
-
-%{
- I've just entered a request on cosource.com :
-
- http://www.cosource.com/cgi-bin/cos.pl/wish/info/387
-
- Here's a copy of my feature request :
-
- 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).
-
-You mean like this. (Sorry 'bout the nuked indentation.)
-
-Add IMPLEMENT_TYPE_P(Music, "music?"); to music.cc, and presto, done.
-
-That's an easy $ 100; if I'd make $ 200/hour for every hour I worked
-on Lily, I'd be very rich :)
-
-%}
-
-#(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.; }
-}
-\header{
-texidoc="
-Loose:
-";
-}
-\score {
- \notes { \time 2/2; c'2 c'2 \time 2/2; }
- \paper { linewidth = 5.0\cm;
- indent = 0.0;
- }
-}
-\header{
-texidoc="
-Natural:
-";
-}
-
-\score {
- \notes { \time 2/2; c'2 c'2 \time 2/2; }
- \paper { linewidth = -1.0 \cm;
- indent = 0.0;
- }
-}
-
-\header{
-texidoc="
-If there are accidentals in the music, we add space, but the space
-between note and accidentals is less than between the notes with the
-same value. Clef changes also get extra space, but not as much as
-barlines.
-
-Even if a line is very tightly spaced, there will still be room
-between prefatory matter and the following notes. The space after the
-prefatory is very rigid. In contrast, the space before the barline
-must stretch like the space within the measure.
-
-Tight:
-";
-}
-\score {
- \notes { \time 2/2; f''2 c'2 \time 2/2; }
- \paper { linewidth = 2.5 \cm;
- indent = 0.0;
- }
-}
-\header{
-texidoc="
-The staccato dot (and all scripts with follow-into-staff set), must
-not be on staff lines.
-";
-}
-\score {
- \context Voice \notes\relative c {
-
- e''4-. f-. d-.
- c,-. b-. c'''-. d-.
-
- }
- \paper {
- linewidth=-1.0;
- }
- \midi { }
-}
-\header{
-texidoc="
-Staff margins are also markings attached to barlines. They should be
-left of the staff, and be centered vertically wrt the staff. They may
-be on normal staffs, but also on compound staffs, like the PianoStaff
-";
-}
-
-
-\version "1.3.117";
-
-\score {
-
- \notes \context PianoStaff <
- \context Staff = treble {
- \property PianoStaff.instrument = "Piano "
- \property Staff.instrument = "Right " { c''4 }}
- \context Staff = bass { \property Staff.instrument = "Left " \clef bass; c4 }>
-
-\paper {
-linewidth=-1.0;
-\translator { \ScoreContext
-
- }
-\translator { \StaffContext \consists "Instrument_name_engraver"; }
-\translator { \PianoStaffContext \consists "Instrument_name_engraver"; }
-}}
-
-\header{
-texidoc="
-@c FIXME
-Similarly, if @code{stem_default_neutral_direction} is set to @code{-1}.
-";
-}
-
-\score{
- \notes\relative c{
- b''4 ~ b8()b8 e4 e,
- }
- \paper{
- stem_default_neutral_direction=-1.0;
- }
-}
-\header{
-texidoc="
-Beams, stems and noteheads often have communication troubles, since
-the two systems for y dimensions (1 unit = staffspace, 1 unit = 1
-point) are mixed.
-
-Stems, beams, ties and slurs should behave similarly, when placed
-on the middle staff line. Of course stem-direction is down for high
-notes, and up for low notes.
-";
-}
-
-
-\score {
- \context Voice \notes\relative c {
- b''4 ~ b8()b8 e4 e,
-
- }
- \paper {
- linewidth=-1.0;
- }
- \midi { }
-}
-\header{
-texidoc="
-In a limited number of cases, LilyPond corrects for optical spacing
-effects. In this example, space for opposite pointed stems is adjuste
-";
-}
-\score {
- \context Voice \notes\relative c {
-
- \time 12/4; c''4 c c c a f' f, a
-
- }
- \paper {
- linewidth=-1.0;
- }
- \midi { }
-}
-\header{
-texidoc="
-Stem tremolos or rolls are tremolo signs that look like beam segments
-crossing stems. If the stem is in a beam, the tremolo must be parallel
-to the beam. If the stem is invisible (eg. on a whole note), the
-tremolo must be centered on the note.
-";
-}
-
-\version "1.3.117";
-\score{
- \context Voice\notes \relative c''{
- \property Voice.Text \set #'direction = #1
- \property Voice.TextScript \set #'padding = #5
- a1:4^":4" a:8^":8" c:16^":16" a:32^":32" a^"x" a:^":"
- a4:4 c:8 a:16 c:32 a a: a2:
- \break
- \stemUp
- a4:32 a'4:64
- \stemDown
- c,4:32 c,4:64
- \stemBoth
- c'8:16 c c c
- a': a a: a
- c,16:32 c: c c a16:32 a: a a
- c8:16 g: d: a:
- c8:32 f: b: e:
- }
-}
-\header{
-texidoc="
-When tieing notes with accidentals across a bar boundary, the accidental
-must not be drawn on the note in the new bar. Instead, the next note of
-the same pitch in this bar should always show the accidental (even if
-it's natural). Slurring a accidentaled note to a natural one across bar
-boundaries should be explicit.
-
-Pitches can be verified by printing them with the @code{NoteNames} context.
-";
-}
-
-thenotes = \notes \relative cis' { \time 4/4;
-g'2 g ~ |
-g g4 gis |
-gis2 gis ~ |
-gis4 gis8 ~ gis g4 gis |
-g2 gis ~ |
-gis g4 gis |
-g2 gis( |
-)g! gis4 gis |
-\break
-\key a \major;
-gis2 gis ~ |
-gis4 gis8 ~ gis g4 gis |
-gis2 g ~ |
-g4 gis8 ~ gis g4 gis |
-g2 gis ~ |
-gis g4 gis |
-g2 gis( |
-)g! gis4 gis |
-}
-
-\score { < \context Staff \thenotes
- \context NoteNames \thenotes
- >
-}
-\header{
-texidoc="
-When tieing chords, the outer slurs point outwards, the inner slurs
-point away from the center of the staff. Override with
-@code{tieVerticalDirection}.
-";
-}
-\version "1.3.117";
-
-t = \notes \relative c' { <c e g> ~ <c e g> }
-
- \score {
-\notes \context Voice {
- \t
- \transpose g' \t
-
- \property Voice.TieColumn \override #'direction = #-1
- \t
-
- }
-}
-\header{
-texidoc="
-Ties are strictly horizontal. They are placed in between note heads.
-The horizontal middle should not overlap with a staffline.
-";
-}
-\score{
- \notes\relative c''{
- %b2~b4~b8~b16~b32~b64 r64\break
- %a2~a4~a8~a16~a32~a64 r64
- \time 8/4;
- d1 ~ d2~d4~d8~d16~d32~d64 r64\break
- a1~ a2~a4~a8~a16~a32~a64 r64
- %c2~c4~c8~c16~c32~c64 r64
- }
- \paper{
- linewidth=0.;
- }
-}
-\header {
-texidoc="Simple beams. This broke somewhere < 1.3.110
-";
- title = "Gammes Chromatiques";
- composer = "";
- filename = "gammes_chromatiques.ly";
-}
-
-linebreak = \penalty -1000;
-
-$ex8 = \notes \relative c' {
- \repeat "volta" 2 {
- \times 2/3 {c8( cis d} \times 2/3 {dis e f}
- \times 2/3 {fis g gis} \times 2/3 {a bes b} |
- \property Voice.TupletBracket \override #'tuplet-number-visibility = ##f
- \property Voice.TupletBracket \override #'tuplet-bracket-visibility = ##f
- \times 2/3 {c8 cis d} \times 2/3 {dis e f}
- \times 2/3 {fis g gis} \times 2/3 {a bes b} |
- \times 2/3 {c b bes} \times 2/3 {a aes g}
- \times 2/3 {fis f e} \times 2/3 {ees d des} |
- \times 2/3 {c b bes} \times 2/3 {a aes g}
- \times 2/3 {fis f e} \times 2/3 {ees d )des}
- }
- c1 || \linebreak
-}
-
-\score { \context Staff { \notes { \$ex8 } } }
-\header{
-texidoc="
-Tuplets are indicated by a bracket with a number. There should be no
-bracket if there is one beam that matches the length of the tuplet.
-The bracket does not interfere with the stafflines, and the number is
-centered in the gap in the bracket.
-";
-}
-\score{
- \notes \context Voice \relative c'' {
- \times 2/3 { \times 2/3 { a8 b c} c }
- \times 3/4 { c4 c4 c4 c4 }
- \time 6/8;
- \times 6/9 { c8 c c c c c c c c }
-
- }
-}
-
-\version "1.3.117";
Grob *common = me->common_refpoint (stems[0], Y_AXIS);
for (int i=1; i < stems.size (); i++)
- common = common->common_refpoint (stems[i], Y_AXIS);
-
+ if (!Stem::invisible_b (stems[i]))
+ common = common->common_refpoint (stems[i], Y_AXIS);
+
+ int l = 0;
for (int i=1; i < stems.size (); i++)
{
- Real left = Stem::extremal_heads (stems[i-1])[d]
+ if (!Stem::invisible_b (stems[i-1]))
+ l = i - 1;
+ if (Stem::invisible_b (stems[l]))
+ continue;
+ if (Stem::invisible_b (stems[i]))
+ continue;
+
+ Real left = Stem::extremal_heads (stems[l])[d]
->relative_coordinate (common, Y_AXIS);
Real right = Stem::extremal_heads (stems[i])[d]
->relative_coordinate (common, Y_AXIS);
{
for (int i=0; i < stems.size (); i++)
{
+ if (Stem::invisible_b (stems[i]))
+ continue;
Item *s = stems[i];
Real y = Stem::extremal_heads (stems[i])[d]
->relative_coordinate (common, Y_AXIS);
Grob *common = me->common_refpoint (stems[0], Y_AXIS);
for (int i=1; i < stems.size (); i++)
- common = common->common_refpoint (stems[i], Y_AXIS);
+ if (!Stem::invisible_b (stems[i]))
+ common = common->common_refpoint (stems[i], Y_AXIS);
for (int i=0; i < stems.size (); i++)
{
#include "beam.hh"
#include "rest.hh"
#include "group-interface.hh"
-// #include "cross-staff.hh"
#include "staff-symbol-referencer.hh"
#include "spanner.hh"
#include "font-interface.hh"
#include "all-font-metrics.hh"
#include "grob.hh"
+#include "staff-symbol-referencer.hh"
#include "lookup.hh"
Molecule
System_start_delimiter::brew_molecule (SCM smob)
{
Grob * me = unsmob_grob (smob);
- Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback (me->self_scm(), gh_int2scm (Y_AXIS)));
- Real l = ext.length ();
- Molecule m;
- SCM s = me->get_grob_property ("collapse-height");
- if (gh_number_p (s) && l < gh_scm2double (s))
+ SCM s = me->get_grob_property ("glyph");
+ if (!gh_symbol_p (s))
+ return SCM_EOL;
+
+ SCM c = me->get_grob_property ((ly_symbol2string (s) + "-collapse-height")
+ .ch_C ());
+
+ Real staff_space = Staff_symbol_referencer::staff_space (me);
+ Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback
+ (me->self_scm(), gh_int2scm (Y_AXIS)));
+ Real l = ext.length () / staff_space;
+
+ if (gh_number_p (c) && l <= gh_scm2double (c))
{
me->suicide();
return SCM_EOL;
}
- s = me->get_grob_property ("glyph");
- if (!gh_symbol_p(s))
- return SCM_EOL;
-
+ Molecule m;
if (s == ly_symbol2scm ("bracket"))
m = staff_bracket (me,l);
else if (s == ly_symbol2scm ("brace"))
else if (s == ly_symbol2scm ("bar-line"))
m = simple_bar (me,l);
-
m.translate_axis (ext.center (), Y_AXIS);
return m.smobbed_copy ();
}
$(outdir)/%.latex: %.doc
rm -f $@
- LILYPONDPREFIX=$(LILYPONDPREFIX)/.. $(PYTHON) $(script-dir)/lilypond-book.py --outdir=$(outdir) -I $(pwd) -I $(input-dir)/test/ --dependencies --dep-prefix=$(outdir)/ $<
+ 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)/ $<
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)/test/ --dependencies --format=texi $<
+ 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 $<
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)/test/ --dependencies --dep-prefix=$(outdir)/ --format=texi $<
+ 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 $<
mv $(@D)/$(*F).texi $@
chmod -w $@
%\global
\context StaffCombineStaff=oneBassi {
\property StaffCombineStaff.midiInstrument = #"cello"
- \property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso"
+ %\property StaffCombineStaff.instrument = #"Violoncello\ne\nContrabasso"
+ \property StaffCombineStaff.instrument = #'(lines "Violoncello" "e" "Contrabasso")
\property StaffCombineStaff.instr = #"Vc."
\clef "bass";
\key es \major;
}
\context StaffCombineStaff=oneBassi \partcombine StaffCombineStaff
- \context StaffCombineVoice=one \violoncello
- \context StaffCombineVoice=two \contrabasso
+ \context StaffCombineVoice=oneBassi \violoncello
+ \context StaffCombineVoice=twoBassi \contrabasso
>
\accepts "StaffCombineStaff";
skipBars = ##t
- barScriptPadding = #2.0 % dimension \pt
markScriptPadding = #4.0
- %% urg: in pt?
- barNumberScriptPadding = #15
- maximumRestCount = #1
+ BarNumber \override #'padding = #3
+ RestCollision \override #'maximum-rest-count = #1
}
}
%%textStyle = #"italic"
timeSignatureStyle = #"C"
marginScriptHorizontalAlignment = #1
- maximumRestCount = #1
+ RestCollision \override #'maximum-rest-count = #1
}
}
violiGroup = \notes \context VoiceCombineStaff = violi <
\context VoiceCombineStaff=violi {
\property VoiceCombineStaff.midiInstrument = #"viola"
- \property VoiceStaffCombineStaff.instrument = #"Viola"
- \property VoiceStaffCombineStaff.instr = #"Vla."
+ \property VoiceCombineStaff.instrument = #"Viola"
+ \property VoiceCombineStaff.instr = #"Vla."
\clef "alto";
\key es \major;
\skip 1*314;
}
couranteViolaStaff = \context Staff <
- \notes \transpose c' \courante
+ \notes \transpose c'' \courante
\couranteViolaGlobal
\couranteViolaScripts
>
}
gigueViolaStaff = \context Staff <
- \notes \transpose c' \gigue
+ \notes \transpose c'' \gigue
\gigueViolaGlobal
\gigueViolaScripts
>
}
menuettoIViolaStaff = \context Staff <
- \notes \transpose c' \menuettoI
+ \notes \transpose c'' \menuettoI
\menuettoIViolaGlobal
% \menuettoIViolaScripts
>
}
menuettoIiViolaStaff = \context Staff <
- \notes \transpose c' \menuettoIi
+ \notes \transpose c'' \menuettoIi
\menuettoIiViolaGlobal
% \menuettoIiViolaScripts
>
}
preludeViolaStaff = \context Staff <
- \notes \transpose c' \prelude
+ \notes \transpose c'' \prelude
\preludeViolaGlobal
\preludeViolaScripts
>
}
sarabandeViolaStaff = \context Staff <
- \notes \transpose c' \sarabande
+ \notes \transpose c'' \sarabande
\sarabandeViolaGlobal
\sarabandeViolaScripts
>
(flag-width-function . ,default-beam-flag-width-function)
(space-function . ,default-beam-space-function)
(damping . 1)
+ (auto-knee-gap . 7)
(meta . ,(grob-description "Beam" beam-interface))
))
(SystemStartDelimiter . (
(molecule-callback . ,System_start_delimiter::brew_molecule)
(after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)
- (collapse-height . 1.0)
+ ;; ugh, in practice, brace has height of 4.1 staff-spaces
+ (brace-collapse-height . 4.1)
+ (bracket-collapse-height . 1)
(thickness . 1.6)
(arch-height . 1.5)
(arch-angle . 50.0)
be at the center of the group after aligning (when using
Align_interface::center_on_element). .")
(grob-property-description 'chordChanges boolean? "only show changes in chord scheme?.")
-(grob-property-description 'collapse-height number? "Minimum height of system start delimiter. If smaller, the delimiter is removed.")
+(grob-property-description 'brace-collapse-height number? "Minimum height of system start delimiter brace glyphs. If equal or smaller, the brace is removed.")
+(grob-property-description 'bracket-collapse-height number? "Minimum height of system start delimiter bracket glyphs. If equal or smaller, the bracket is removed.")
+(grob-property-description 'bar-line-collapse-height number? "Minimum height of system start delimiter bar-line glyphs. If equal or smaller, the bar-line is removed.")
+(grob-property-description 'brace-collapse-height number? "Minimum height of system start delimiter brace glyph. If equal or smaller, the brace is removed.")
(grob-property-description 'column-space-strength number? "relative strength of space following breakable columns (eg. prefatory matter).")
(grob-property-description 'columns list? "list of grobs, typically containing paper-columns, list of note-columns.")
(grob-property-description 'contains-grace boolean? "Used to widen entries for grace notes.")
name = 'ly2dvi'
version = '@TOPLEVEL_VERSION@'
+if version == '@' + 'TOPLEVEL_VERSION' + '@':
+ version = '(unknown version)' # uGUHGUHGHGUGH
errorlog = ''
import sys
#!@PYTHON@
-#
-#
-#
-#
-#
-#
+# PMX is a Musixtex preprocessor written by Don Simons, see
+# http://www.gmd.de/Misc/Music/musixtex/software/pmx/
-
-#fixme: block openings aren't parsed.
+# TODO:
+# * block openings aren't parsed.
import os
import string
left = left[1:]
elif c == '\\':
left = self.parse_mumbo_jumbo(left)
+ elif c == '\r':
+ left = left[1:]
else:
sys.stderr.write ("""
Huh? Unknown directive `%s', before `%s'""" % (c, left[:20] ))