From 8d0267eb80a7cb026751db0a9eabeb61d958776e Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Thu, 6 Mar 2003 20:06:57 +0000 Subject: [PATCH] * 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 --- ChangeLog | 9 +++++++++ Documentation/user/refman.itely | 11 ++++++++++- input/regression/new-markup-syntax.ly | 6 ++++-- lily/axis-group-engraver.cc | 8 ++++---- lily/molecule-scheme.cc | 2 +- ly/engraver-init.ly | 22 +++++----------------- scm/grob-description.scm | 14 ++++++++++---- scm/interface-description.scm | 8 +++++++- scm/new-markup.scm | 23 ++++++++++++++++++++++- scripts/midi2ly.py | 4 ++-- 10 files changed, 74 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index b333e272b2..3e070f3a3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2003-03-06 Han-Wen Nienhuys + * 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 diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 4c30a5982c..5a4a5e6d53 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -1291,7 +1291,6 @@ the object property @code{auto-knee-gap}. @cindex beams, kneed @cindex kneed beams @cindex auto-knee-gap -@cindex hara kiri @c TODO -> why this ref? Document? @@ -1299,6 +1298,8 @@ the object property @code{auto-knee-gap}. @refbugs +@cindex hara kiri + Auto knee beams can not be used together with hara kiri staves. [TODO from bugs] @@ -4025,6 +4026,10 @@ example disappears in the second line. } @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 @@ -5036,6 +5041,9 @@ measured in (global) staff spaces. 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 @@ -5061,6 +5069,7 @@ This sets the relative font size, eg. 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 diff --git a/input/regression/new-markup-syntax.ly b/input/regression/new-markup-syntax.ly index 2c4c27955c..8045888fe2 100644 --- a/input/regression/new-markup-syntax.ly +++ b/input/regression/new-markup-syntax.ly @@ -11,8 +11,10 @@ texidoc = "New markup syntax." \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" diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 286d42477b..90d9cc0861 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -154,15 +154,15 @@ void 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 " diff --git a/lily/molecule-scheme.cc b/lily/molecule-scheme.cc index be94c0d8b6..6a611efcd4 100644 --- a/lily/molecule-scheme.cc +++ b/lily/molecule-scheme.cc @@ -60,7 +60,7 @@ LY_DEFINE(ly_translate_molecule,"ly:molecule-translate", 2, 0, 0, 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)." diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index c56d271b6f..3a4c4d764c 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -239,6 +239,7 @@ InnerStaffGroupContext= \translator { \accepts "Lyrics" \accepts "ChordNames" } + StaffGroupContext = \translator { \InnerStaffGroupContext \name StaffGroup @@ -252,7 +253,7 @@ StaffGroupContext = \translator { % 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 @@ -287,7 +288,7 @@ LyricsContext = \translator { %% To get folded repeats right. \consists Vertical_align_engraver - \consistsend "Axis_group_engraver" + \consistsend "Hara_kiri_engraver" minimumVerticalExtent = ##f extraVerticalExtent = ##f verticalExtent = ##f @@ -305,23 +306,13 @@ ChordNamesContext = \translator { \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" @@ -483,10 +474,9 @@ FiguredBassContext = \translator { \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" @@ -527,7 +517,5 @@ TabStaffContext = \translator { % Special "TAB" clef clefGlyph = #"clefs-tab" clefPosition = #0 - - } diff --git a/scm/grob-description.scm b/scm/grob-description.scm index 8501bed6ef..61be7083c4 100644 --- a/scm/grob-description.scm +++ b/scm/grob-description.scm @@ -123,7 +123,9 @@ (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 . ( @@ -247,7 +249,8 @@ (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 @@ -462,6 +465,7 @@ (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)))) )) @@ -500,7 +504,7 @@ (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 @@ -606,7 +610,7 @@ (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 @@ -746,6 +750,8 @@ (meta . ( (interfaces . (font-interface rhythmic-head-interface + rhythmic-grob-interface + staff-symbol-referencer-interface rest-interface item-interface )) )))) diff --git a/scm/interface-description.scm b/scm/interface-description.scm index 67dad51a1d..8294fab6ec 100644 --- a/scm/interface-description.scm +++ b/scm/interface-description.scm @@ -25,6 +25,13 @@ '() ) +(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" @@ -36,7 +43,6 @@ "A bracket indicating a ligature in the original edition" '(width thickness height ligature-primitive-callback)) - (ly:add-interface 'mark-interface "a rehearsal mark" diff --git a/scm/new-markup.scm b/scm/new-markup.scm index dea79e2404..7afe63a25a 100644 --- a/scm/new-markup.scm +++ b/scm/new-markup.scm @@ -223,6 +223,26 @@ for the reader. 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) @@ -405,7 +425,8 @@ for the reader. (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?)) diff --git a/scripts/midi2ly.py b/scripts/midi2ly.py index aab73dde08..7a6c4988ba 100644 --- a/scripts/midi2ly.py +++ b/scripts/midi2ly.py @@ -447,9 +447,9 @@ class Note: 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 -- 2.39.5