From ab2444b42c8647a9721f4acac4d248e197f230b8 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Tue, 28 May 2013 16:57:53 +0200 Subject: [PATCH] Issue 3379: move all tablature related settings to TabStaff Previous to this patch, settings relevant to tablature have been distributed among TabVoice and TabVoice, presumably modeled along the corresponding distribution of engravers. As one consequence, the command \tabFullNotation contained overrides pertaining to both TabStaff and TabVoice level, leading to inconsistent behavior when employed in one but not all TabVoice contexts of a TabStaff, or when used as \new TabStaff \with { \tabFullNotation } Moving all overrides and property settings to TabStaff level should lead to more consistent results. --- ly/engraver-init.ly | 89 ++++++++++++++++++++++---------------------- ly/performer-init.ly | 2 +- ly/property-init.ly | 68 ++++++++++++++++----------------- 3 files changed, 80 insertions(+), 79 deletions(-) diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 12ba88284f..2541163a76 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -800,6 +800,51 @@ context." \description "Context for drawing notes in a Tab staff." + %% No accidental in tablature ! + \remove "Accidental_engraver" +} + +\context { + \Staff + \alias "Staff" + \name "TabStaff" + \denies "Voice" + \consists "Tab_staff_symbol_engraver" + + \description "Context for generating tablature. It accepts only @code{TabVoice} +contexts and handles the line spacing, the tablature clef etc. properly." + + \accepts "TabVoice" + \defaultchild "TabVoice" + + %% 6 strings, bigger spacing + \override StaffSymbol.staff-space = #1.5 + + %% Don't draw stems over the tablature figures ! + \override Stem.avoid-note-head = ##t + + %% No accidental in tablature ! + \remove "Accidental_engraver" + \remove "Key_engraver" + + \remove "Ottava_spanner_engraver" + %% the clef handler + \override Clef.stencil = #clef::print-modern-tab-if-set + %% no time signature + \override TimeSignature.stencil = ##f + %% no arpeggios + \override Arpeggio.stencil = ##f + %% we ignore collision warnings that may occur due to + %% stem overlapping, because we have no stems ;-) + \override NoteColumn.ignore-collision = ##t + %% Special "TAB" clef + clefGlyph = #"clefs.tab" + clefPosition = #0 + %% Change string if note results in negative fret number + handleNegativeFrets = #'recalculate + %% Allow open strings even if minimumFret is set + restrainOpenStrings = ##f + %% TabStaff increase the staff-space, which in turn %% increases beam thickness and spacing; beams are %% too big. We have to adjust the beam settings: @@ -814,8 +859,6 @@ context." (/ 1 (ly:staff-symbol-staff-space grob))) \override StemTremolo.beam-width = #stem-tremolo::calc-tab-width - %% No accidental in tablature ! - \remove "Accidental_engraver" %% make the Stems as short as possible to minimize their influence %% on the slur::calc-control-points routine \override Stem.no-stem-extend = ##t @@ -868,48 +911,6 @@ context." \override TabNoteHead.stencil = #tab-note-head::whiteout-if-style-set } -\context { - \Staff - \alias "Staff" - \name "TabStaff" - \denies "Voice" - \consists "Tab_staff_symbol_engraver" - - \description "Context for generating tablature. It accepts only @code{TabVoice} -contexts and handles the line spacing, the tablature clef etc. properly." - - \accepts "TabVoice" - \defaultchild "TabVoice" - - %% 6 strings, bigger spacing - \override StaffSymbol.staff-space = #1.5 - - %% Don't draw stems over the tablature figures ! - \override Stem.avoid-note-head = ##t - - %% No accidental in tablature ! - \remove "Accidental_engraver" - \remove "Key_engraver" - - \remove "Ottava_spanner_engraver" - %% the clef handler - \override Clef.stencil = #clef::print-modern-tab-if-set - %% no time signature - \override TimeSignature.stencil = ##f - %% no arpeggios - \override Arpeggio.stencil = ##f - %% we ignore collision warnings that may occur due to - %% stem overlapping, because we have no stems ;-) - \override NoteColumn.ignore-collision = ##t - %% Special "TAB" clef - clefGlyph = #"clefs.tab" - clefPosition = #0 - %% Change string if note results in negative fret number - handleNegativeFrets = #'recalculate - %% Allow open strings even if minimumFret is set - restrainOpenStrings = ##f -} - \context { \Voice \name "VaticanaVoice" diff --git a/ly/performer-init.ly b/ly/performer-init.ly index b06587ce74..a108212eae 100644 --- a/ly/performer-init.ly +++ b/ly/performer-init.ly @@ -171,7 +171,6 @@ \context { \Voice \name TabVoice - autoBeaming = ##f % needed for consistent melismata with engravers } \context { @@ -186,6 +185,7 @@ \alias Staff \accepts TabVoice \defaultchild TabVoice + autoBeaming = ##f % needed for consistent melismata with engravers } \context { diff --git a/ly/property-init.ly b/ly/property-init.ly index 8ea9cdbead..1573bf79f9 100644 --- a/ly/property-init.ly +++ b/ly/property-init.ly @@ -491,45 +491,45 @@ tabFullNotation = { % time signature \revert TabStaff.TimeSignature.stencil % stems (the half note gets a double stem) - \revert TabVoice.Stem.length - \revert TabVoice.Stem.no-stem-extend - \revert TabVoice.Flag.style - \revert TabVoice.Stem.details - \revert TabVoice.Stem.stencil - \revert TabVoice.Flag.stencil - \override TabVoice.Stem.stencil = #tabvoice::draw-double-stem-for-half-notes - \override TabVoice.Stem.X-extent = #tabvoice::make-double-stem-width-for-half-notes - \set TabVoice.autoBeaming = ##t - \revert TabVoice.NoteColumn.ignore-collision + \revert TabStaff.Stem.length + \revert TabStaff.Stem.no-stem-extend + \revert TabStaff.Flag.style + \revert TabStaff.Stem.details + \revert TabStaff.Stem.stencil + \revert TabStaff.Flag.stencil + \override TabStaff.Stem.stencil = #tabvoice::draw-double-stem-for-half-notes + \override TabStaff.Stem.X-extent = #tabvoice::make-double-stem-width-for-half-notes + \set TabStaff.autoBeaming = ##t + \revert TabStaff.NoteColumn.ignore-collision % beams, dots - \revert TabVoice.Beam.stencil - \revert TabVoice.StemTremolo.stencil - \revert TabVoice.Dots.stencil - \revert TabVoice.Tie.stencil - \revert TabVoice.Tie.after-line-breaking - \revert TabVoice.RepeatTie.stencil - \revert TabVoice.RepeatTie.after-line-breaking - \revert TabVoice.LaissezVibrerTie.stencil - \revert TabVoice.Slur.stencil - \revert TabVoice.PhrasingSlur.stencil + \revert TabStaff.Beam.stencil + \revert TabStaff.StemTremolo.stencil + \revert TabStaff.Dots.stencil + \revert TabStaff.Tie.stencil + \revert TabStaff.Tie.after-line-breaking + \revert TabStaff.RepeatTie.stencil + \revert TabStaff.RepeatTie.after-line-breaking + \revert TabStaff.LaissezVibrerTie.stencil + \revert TabStaff.Slur.stencil + \revert TabStaff.PhrasingSlur.stencil % tuplet stuff - \revert TabVoice.TupletBracket.stencil - \revert TabVoice.TupletNumber.stencil + \revert TabStaff.TupletBracket.stencil + \revert TabStaff.TupletNumber.stencil % dynamic signs - \revert TabVoice.DynamicText.stencil - \revert TabVoice.DynamicTextSpanner.stencil - \revert TabVoice.DynamicTextSpanner.stencil - \revert TabVoice.Hairpin.stencil + \revert TabStaff.DynamicText.stencil + \revert TabStaff.DynamicTextSpanner.stencil + \revert TabStaff.DynamicTextSpanner.stencil + \revert TabStaff.Hairpin.stencil % rests - \revert TabVoice.Rest.stencil - \revert TabVoice.MultiMeasureRest.stencil - \revert TabVoice.MultiMeasureRestNumber.stencil - \revert TabVoice.MultiMeasureRestText.stencil + \revert TabStaff.Rest.stencil + \revert TabStaff.MultiMeasureRest.stencil + \revert TabStaff.MultiMeasureRestNumber.stencil + \revert TabStaff.MultiMeasureRestText.stencil % markups etc. - \revert TabVoice.Glissando.stencil - \revert TabVoice.Script.stencil - \revert TabVoice.TextScript.stencil - \revert TabVoice.TextSpanner.stencil + \revert TabStaff.Glissando.stencil + \revert TabStaff.Script.stencil + \revert TabStaff.TextScript.stencil + \revert TabStaff.TextSpanner.stencil \revert TabStaff.Arpeggio.stencil \revert TabStaff.NoteColumn.ignore-collision } -- 2.39.2