ChordNames, FiguredBass and Lyrics(Voice) context.
* lily/axis-group-engraver.cc (acknowledge_grob): use
rhythmic-grob-interface for selecting items not to hara-kiri'd
* scm/new-markup.scm (markup-function-list): add bracket,
vbracket.
* ly/engraver-init.ly (ChordNamesContext): set
minimumVerticalExtent
2003-03-06 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ * ly/engraver-init.ly: use Hara kiri by default for
+ ChordNames, FiguredBass and Lyrics(Voice) context.
+
+ * lily/axis-group-engraver.cc (acknowledge_grob): use
+ rhythmic-grob-interface for selecting items not to hara-kiri'd
+
+ * scm/new-markup.scm (markup-function-list): add bracket,
+ vbracket.
+
* ly/engraver-init.ly (ChordNamesContext): set
minimumVerticalExtent
@cindex beams, kneed
@cindex kneed beams
@cindex auto-knee-gap
-@cindex hara kiri
@c TODO -> why this ref? Document?
@refbugs
+@cindex hara kiri
+
Auto knee beams can not be used together with hara kiri staves.
[TODO from bugs]
}
@end lilypond
+For @internalsref{Lyrics}, @internalsref{LyricsVoice},
+@internalsref{ChordNames} and @internalsref{FiguredBass}, hara-kiri is
+switched on by default.
+
@node Sound output for transposing instruments
@subsection Sound output for transposing instruments
Other commands taking single arguments include
@table @code
+@item \bracket, \hbracket
+ Bracket the argument markup.
+
@item \musicglyph
@cindex \musicglyph
This is converted to a musical symbol, e.g. @code{\musicglyph
A \fontsize #2 @{ B C @} D
@end example
+
This will enlarge the B and the C by two steps.
@item \translate #(cons @var{x} @var{y})
@cindex \translate
\property Voice.TextScript \set #'molecule-callback = #brew-new-markup-molecule
f'-\markup {
foo
- \raise #0.2 \bold bar
- \override #'(baseline-skip . 4) \column << baz bazr bla >>
+ \raise #0.2 \hbracket \bold bar
+ \override #'(baseline-skip . 4)
+
+ \bracket \column << baz bazr bla >>
\hspace #2.0
\override #'(font-family . music) {
\lookup #"noteheads-0"
Hara_kiri_engraver::acknowledge_grob (Grob_info i)
{
Axis_group_engraver::acknowledge_grob (i);
- if (Rhythmic_head::has_interface (i.grob_)
- || i.grob_->internal_has_interface (ly_symbol2scm ("lyric-syllable-interface"))
- )
+ if (i.grob_->internal_has_interface (ly_symbol2scm ("rhythmic-grob-interface")))
{
Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob_);
}
}
-Hara_kiri_engraver::Hara_kiri_engraver(){}
+Hara_kiri_engraver::Hara_kiri_engraver()
+{
+}
ENTER_DESCRIPTION(Hara_kiri_engraver,
/* descr */ "Like Axis_group_engraver, but make a hara kiri spanner, and add "
return q.smobbed_copy();
}
-LY_DEFINE(ly_get_molecule_extent,
+LY_DEFINE(ly_molecule_get_extent,
"ly:molecule-get-extent", 2 , 0, 0, (SCM mol, SCM axis),
"Return a pair of numbers signifying the extent of @var{mol} in "
"@var{axis} direction (0 or 1 for x and y axis respectively)."
\accepts "Lyrics"
\accepts "ChordNames"
}
+
StaffGroupContext = \translator {
\InnerStaffGroupContext
\name StaffGroup
% UGH! JUNKME
LyricsVoiceContext= \translator{
\type "Engraver_group_engraver"
- \consistsend "Axis_group_engraver"
+ \consistsend "Hara_kiri_engraver"
minimumVerticalExtent = #'(-1.2 . 1.2)
extraVerticalExtent = ##f
verticalExtent = ##f
%% To get folded repeats right.
\consists Vertical_align_engraver
- \consistsend "Axis_group_engraver"
+ \consistsend "Hara_kiri_engraver"
minimumVerticalExtent = ##f
extraVerticalExtent = ##f
verticalExtent = ##f
\consists "Separating_line_group_engraver"
\consists "New_chord_name_engraver"
\consists "Skip_req_swallow_translator"
- \consistsend "Axis_group_engraver"
+ \consistsend "Hara_kiri_engraver"
minimumVerticalExtent = #'(0 . 2.5)
extraVerticalExtent = ##f
verticalExtent = ##f
}
-
-StupidScore = \translator {
- \type "Score_engraver"
- \name Score
- \consists "Note_heads_engraver"
-}
-
-
-
-
HaraKiriStaffContext = \translator {
\StaffContext
\remove "Axis_group_engraver"
\consists "Figured_bass_engraver"
\consists "Rest_swallow_translator"
\consists "Note_swallow_translator"
- \consistsend "Axis_group_engraver"
+ \consistsend "Hara_kiri_engraver"
}
-
TabVoiceContext = \translator {
\VoiceContext
\name "TabVoice"
% Special "TAB" clef
clefGlyph = #"clefs-tab"
clefPosition = #0
-
-
}
(padding . 0.1)
(kern . 0.2)
(thickness . 1.0)
- (meta . ((interfaces . (text-interface bass-figure-interface item-interface self-alignment-interface font-interface))))
+ (meta . ((interfaces . (text-interface rhythmic-grob-interface
+ bass-figure-interface item-interface
+ self-alignment-interface font-interface))))
))
(Beam
. (
(after-line-breaking-callback . ,Chord_name::after_line_breaking)
(word-space . 1.0)
(font-family . roman)
- (meta . ((interfaces . (font-interface text-interface chord-name-interface item-interface ))))
+ (meta . ((interfaces . (font-interface rhythmic-grob-interface
+ text-interface chord-name-interface item-interface ))))
))
(Custos
(style . default)
(glyph-name-procedure . ,find-notehead-symbol)
(meta . ((interfaces . (ligature-head-interface rhythmic-head-interface
+ rhythmic-grob-interface
font-interface
note-head-interface staff-symbol-referencer-interface))))
))
(font-shape . upright)
;; duh, side-position-interface?
- (meta . ((interfaces . (lyric-syllable-interface self-alignment-interface text-interface font-interface item-interface ))))
+ (meta . ((interfaces . (rhythmic-grob-interface lyric-syllable-interface self-alignment-interface text-interface font-interface item-interface ))))
))
(MensuralLigature
(glyph-name-procedure . ,find-notehead-symbol)
(Y-offset-callbacks . (,Staff_symbol_referencer::callback))
(stem-attachment-function . ,note-head-style->attachment-coordinates)
- (meta . ((interfaces . (rhythmic-head-interface font-interface note-head-interface staff-symbol-referencer-interface item-interface ))))
+ (meta . ((interfaces . (rhythmic-grob-interface rhythmic-head-interface font-interface note-head-interface staff-symbol-referencer-interface item-interface ))))
))
(Glissando
(meta . (
(interfaces . (font-interface
rhythmic-head-interface
+ rhythmic-grob-interface
+
staff-symbol-referencer-interface
rest-interface item-interface ))
))))
'()
)
+(ly:add-interface
+ 'rhythmic-grob-interface
+ "Any object with a rhythmic basis. Used to determine which grobs
+are interesting enough to maintain a hara-kiri staff."
+ '()
+ )
+
(ly:add-interface
'ligature-interface
"A ligature"
"A bracket indicating a ligature in the original edition"
'(width thickness height ligature-primitive-callback))
-
(ly:add-interface
'mark-interface
"a rehearsal mark"
Y)
)
+(define-public (hbracket-markup grob props . rest)
+ (let*
+ (
+ (th 0.1) ;; todo: take from GROB.
+ (m (interpret-markup grob props (car rest)))
+ )
+
+ (bracketify-molecule m X th (* 2.5 th) th)
+))
+
+(define-public (bracket-markup grob props . rest)
+ (let*
+ (
+ (th 0.1) ;; todo: take from GROB.
+ (m (interpret-markup grob props (car rest)))
+ )
+
+ (bracketify-molecule m Y th (* 2.5 th) th)
+))
+
;; todo: fix negative space
(define (hspace-markup grob props . rest)
(cons italic-markup (list markup?))
(cons roman-markup (list markup?))
(cons number-markup (list markup?))
-
+ (cons hbracket-markup (list markup?))
+ (cons bracket-markup (list markup?))
(cons column-markup (list markup-list?))
(cons center-markup (list markup-list?))
s = s + "," * -commas
## FIXME: compile fix --jcn
- if (dump_dur and explicit_durations_p) \
+ if dump_dur and (explicit_durations_p \
or Duration.compare (self.duration,
- reference_note.duration):
+ reference_note.duration)):
s = s + self.duration.dump ()
reference_note = self