]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/engraver-init.ly
The grand \paper -> \layout, \bookpaper -> \paper renaming.
[lilypond.git] / ly / engraver-init.ly
index 5663553a91d1d736aec5cf8c5c84073a50c9adb5..7ba26f49444060b2c5c0631eed79258b8a147c96 100644 (file)
@@ -1,30 +1,28 @@
-\version "2.1.19"
+\version "2.3.16"
 
+\context {
+    \name Global
 
-%
-% setup for Request->Element conversion. Guru-only
-%
+    \accepts Score
+    \description "Hard coded entry point for LilyPond. Cannot be tuned."
+    \grobdescriptions #all-grob-descriptions    
+}
 
-\translator {
+\context {
        \type "Engraver_group_engraver"
        \name Staff
 
-       \description "Handles clefs, bar lines, keys, accidentals.  It can contain
-@code{Voice} contexts."
-
        
        \consists "Output_property_engraver"    
        
        \consists "Bar_engraver"
 % Bar_engraver must be first so default bars aren't overwritten
 % with empty ones.
+       
        \consists "Font_size_engraver"
-
-%      \consists "Repeat_engraver"
+       
        \consists "Volta_engraver"
        \consists "Separating_line_group_engraver"      
-       SeparatingGroupSpanner \override #'spacing-procedure
-         =  #Separating_group_spanner::set_spacing_rods_and_seqs
        \consists "Dot_column_engraver"
 
        % perhaps move to Voice context?
        \consists "Clef_engraver"
        \consists "Key_engraver"
        \consists "Time_signature_engraver"
+       \consists "Ledger_line_engraver" 
        \consists "Staff_symbol_engraver"
        \consists "Collision_engraver"
        \consists "Rest_collision_engraver"
        \consists "Accidental_engraver"
        \consists "Piano_pedal_engraver"
        \consists "Instrument_name_engraver"
-       \consists "Grob_pq_engraver"
-       \consists "Forbid_line_break_engraver"
        \consists "String_number_engraver"
-       \consistsend "Axis_group_engraver"
+       \consists "Axis_group_engraver"
 
-       minimumVerticalExtent = #'(-6 . 6)
+       minimumVerticalExtent = #'(-4 . 4)
        extraVerticalExtent = ##f
        verticalExtent = ##f 
        localKeySignature = #'()
-
+       createSpacing = ##t
+       
        % explicitly set instrument, so we don't get 
        % weird effects when doing instrument names for
        % piano staves
        instr = #'()
          
        \accepts "Voice"
+       \description "Handles clefs, bar lines, keys, accidentals.  It can contain
+@code{Voice} contexts."
+
 }
 
-\translator {
-    \StaffContext
+\context {
+    \Staff
     \type "Engraver_group_engraver"
     \name DrumStaff
     \alias Staff
 
     clefGlyph = #"clefs-percussion"
     clefPosition = #0
-    Script \set #'staff-padding = #0.75 
+    \override Script #'staff-padding = #0.75 
 }
 
 
-\translator {
-    \type Engraver_group_engraver
-    \consists "Axis_group_engraver"
-    minimumVerticalExtent = ##f
-    extraVerticalExtent = ##f
-    verticalExtent = ##f 
-    localKeySignature = #'()
-
-    \accepts Staff
-    \name StaffContainer
-}
-
-\translator {
+\context {
     \type "Engraver_group_engraver"
     \name InnerChoirStaff
     \consists "System_start_delimiter_engraver"
     systemStartDelimiter = #'SystemStartBracket
-    localKeySignature = #'()
 
     \accepts "Staff"
     \accepts "DrumStaff"
     \accepts "RhythmicStaff"
     \accepts "GrandStaff"
     \accepts "PianoStaff"
-    \accepts "LyricsVoice"
+    \accepts "Lyrics"
     \accepts "ChordNames"
 }
 
-\translator {
-       \InnerChoirStaffContext
+\context {
+       \InnerChoirStaff
        \name ChoirStaff
        
+       \accepts "InnerChoirStaff"
+       \accepts "InnerStaffGroup"
        \description "Identical to @code{StaffGroup} except that the
     contained staves are not connected vertically."
        
-       \accepts "InnerChoirStaff"
-       \accepts "InnerStaffGroup"
 }
 
 
-\translator{
+\context{
     \type "Engraver_group_engraver"
     
     \consists "Output_property_engraver"       
 
-    \description  "
-    A context like @code{Staff} but for printing rhythms.  Pitches are
-    ignored; the notes are printed on one line.  
-"
     minimumVerticalExtent = ##f
     extraVerticalExtent = ##f
     verticalExtent = ##f 
     localKeySignature = #'()
 
     \consists "Pitch_squash_engraver"
+    squashedPosition = #0
     \consists "Separating_line_group_engraver" 
     \name RhythmicStaff
     \alias "Staff"
     
-    BarLine \override #'bar-size = #4
-    VoltaBracket \override #'minimum-space =  #15
-    VoltaBracket \override #'padding =  #5
-    StaffSymbol \override #'line-count = #1    
+    \override BarLine #'bar-size = #4
+    \override VoltaBracket #'minimum-space = #15
+    \override VoltaBracket #'padding = #5
+    \override StaffSymbol #'line-count = #1    
 
-    Stem \override #'neutral-direction = #1
-    Beam \override #'neutral-direction = #1    
+    \override Stem  #'neutral-direction = #1
+    \override Beam  #'neutral-direction = #1   
                                %       \consists "Repeat_engraver"
     \consists "Dot_column_engraver"
     \consists "Volta_engraver"
     \consists "Bar_engraver"
     \consists "Time_signature_engraver"
     \consists "Staff_symbol_engraver"
+    \consists "Ledger_line_engraver" 
     \consists "Instrument_name_engraver"
-    \consistsend "Axis_group_engraver"
+    \consists "Axis_group_engraver"
     \accepts "Voice"
+    \description  "
+    A context like @code{Staff} but for printing rhythms.  Pitches are
+    ignored; the notes are printed on one line.  
+"
 }
 
 
-\translator {
+\context {
     \type "Engraver_group_engraver"
     \name Voice
 
     \consists "Arpeggio_engraver"
     \consists "Multi_measure_rest_engraver"
     \consists "Text_spanner_engraver"
+    \consists "Trill_spanner_engraver"
     \consists "Grob_pq_engraver"
+    \consists "Forbid_line_break_engraver"
 
     \consists "Note_head_line_engraver"
     \consists "Glissando_engraver"
     \consists "Chord_tremolo_engraver"
     \consists "Percent_repeat_engraver"
     \consists "Slash_repeat_engraver"
-    \consists "Melisma_engraver"
+    \consists "Melisma_translator"
     \consists "Part_combine_engraver"
 
-%{
-    Must come before text_engraver, but after note_column engraver.
-
-%}
     \consists "Text_engraver"
     \consists "Dynamic_engraver"
     \consists "Fingering_engraver"
     \consists "Skip_event_swallow_translator"
 }
 
-\translator {
-    \VoiceContext
+\context {
+    \Voice
     \name DrumVoice
     \alias Voice
 
-    \description " A voice on a percussion staff."
-    
-    
+    \description "A voice on a percussion staff."
     \remove "Arpeggio_engraver"
     \consists "Multi_measure_rest_engraver"
     \consists "Text_spanner_engraver"
 
     \remove "Fingering_engraver"
 
-    \remove "Phrasing_slur_engraver"
     \remove "Cluster_spanner_engraver"
-    \remove "Slur_engraver"
     \consists "Tuplet_engraver"
 
     \consists "Skip_event_swallow_translator"
 }
 
-\translator{
+\context{
     \type "Engraver_group_engraver"
     \name GrandStaff
     localKeySignature = #'()
     \accepts "Staff"
 }
 
-\translator{
-    \GrandStaffContext
+\context{
+    \GrandStaff
     \name "PianoStaff"
     \alias "GrandStaff"
 
     the staves, so cross staff beaming and slurring can be used."
     
     verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
-    VerticalAlignment \override #'forced-distance = #12
-    VerticalAlignment \override #'self-alignment-Y = #0
+    \override VerticalAlignment #'forced-distance = #12
+    \override VerticalAlignment #'self-alignment-Y = #0
 
     \consists "Vertical_align_engraver"
     \consists "Instrument_name_engraver"
     instr = #'()
 }
 
-\translator {
+\context {
     \type "Engraver_group_engraver"
     \name InnerStaffGroup
-    localKeySignature = #'()
 
     \consists "Span_bar_engraver"
     \consists "Span_arpeggio_engraver"
     \accepts "GrandStaff"
     \accepts "PianoStaff"
     \accepts "TabStaff"        
-    \accepts "LyricsVoice"
+    \accepts "Lyrics"
     \accepts "ChordNames"
 }
 
-\translator {
-    \InnerStaffGroupContext
+\context {
+    \InnerStaffGroup
     \name StaffGroup
     
     \description
@@ -325,9 +308,8 @@ connected vertically.  "
 }
 
 
-\translator{
+\context{
     \type "Engraver_group_engraver"
-    \consistsend "Hara_kiri_engraver"
     minimumVerticalExtent = #'(-1.2 . 2.4)
     extraVerticalExtent = ##f
     verticalExtent = ##f
@@ -335,7 +317,7 @@ connected vertically.  "
     \description " Corresponds to a voice with lyrics.  Handles the
 printing of a single line of lyrics.  "
     
-    \name LyricsVoice 
+    \name Lyrics 
     \consists "Separating_line_group_engraver"
     \consists "Lyric_engraver"
     \consists "Extender_engraver"
@@ -343,13 +325,15 @@ printing of a single line of lyrics.  "
     \consists "Stanza_number_engraver"
     \consists "Vocal_name_engraver"
     \consists "Skip_event_swallow_translator"
-    SeparationItem \set #'padding = #0.5
+    \consists "Font_size_engraver"
+    \consists "Hara_kiri_engraver"
+    \override SeparationItem #'padding = #0.2
 }
 
-\translator {
+\context {
     \type "Engraver_group_engraver"
     \name NoteNames
-    \consistsend "Axis_group_engraver"
+    \consists "Axis_group_engraver"
 
     minimumVerticalExtent = ##f
     extraVerticalExtent = ##f
@@ -359,49 +343,51 @@ printing of a single line of lyrics.  "
     \consists "Rest_swallow_translator" 
     \consists "Skip_event_swallow_translator"
     \consists "Tie_engraver"
-    \consists "Note_swallow_translator"
     \consists "Note_name_engraver"
     \consists "Separating_line_group_engraver"
 }
 
-\translator {
+\context {
     \type "Engraver_group_engraver"
     \name ChordNames
     \description "Typesets chord names."
+
+    \consists "Volta_engraver"
     
     \consists "Rest_swallow_translator" 
     \consists "Output_property_engraver"       
     \consists "Separating_line_group_engraver"
     \consists "Chord_name_engraver"
     \consists "Skip_event_swallow_translator"
-    \consistsend "Hara_kiri_engraver"
+    \consists "Hara_kiri_engraver"
     
+    voltaOnThisStaff = ##f
     minimumVerticalExtent = #'(0 . 2.5)
     extraVerticalExtent = ##f
-    SeparatingGroupSpanner \override #'padding = #0.8
+    \override SeparatingGroupSpanner #'padding = #0.8
     verticalExtent = ##f 
 }
 
 
-RemoveEmptyStaffContext= \translator {
-    \StaffContext
+RemoveEmptyStaffContext= \context {
+    \Staff
     \remove "Axis_group_engraver"
-    \consistsend "Hara_kiri_engraver"
-    Beam \override #'auto-knee-gap = #'()
+    \consists "Hara_kiri_engraver"
+    \override Beam #'auto-knee-gap = #'()
 }
 
-AncientRemoveEmptyStaffContext = \translator {
+AncientRemoveEmptyStaffContext = \context {
     %% why not add by default?
     
     \RemoveEmptyStaffContext
     \accepts "VaticanaVoice"
     \accepts "GregorianTranscriptionVoice"
+    \accepts "MensuralVoice"
 }
 
-\translator {
+\context {
     \type Score_engraver
     \name Score
-    localKeySignature = #'()
 
     \description "This is the top level notation context.  No
     other context can contain a @code{Score} context.  This context
@@ -412,16 +398,14 @@ AncientRemoveEmptyStaffContext = \translator {
     You cannot explicitly instantiate a Score context (since it is
     not contained in any other context).  It is instantiated
     automatically when an output definition (a @code{\score} or
-    @code{\paper} block) is processed."
+    @code{\layout} block) is processed."
     
     \consists "Repeat_acknowledge_engraver"
     \consists "Staff_collecting_engraver"
 
                                % move the alias along with the engraver.
 
-    %% TODO? add this alias from Timing_engraver::initialize() ? 
     \consists "Timing_engraver"
-    \alias "Timing"
     
     \consists "Output_property_engraver"
     \consists "System_start_delimiter_engraver"
@@ -430,7 +414,7 @@ AncientRemoveEmptyStaffContext = \translator {
     \consists "Break_align_engraver"
     \consists "Spacing_engraver"
     \consists "Vertical_align_engraver"
-    \consists "Lyric_phrasing_engraver"
+    \consists "Stanza_number_align_engraver"
     \consists "Bar_number_engraver"
     \consists "Span_arpeggio_engraver"
 
@@ -438,11 +422,11 @@ AncientRemoveEmptyStaffContext = \translator {
     \accepts "TabStaff"
     \accepts "VaticanaStaff"
     \accepts "GregorianTranscriptionStaff"
-    \accepts "StaffContainer"
+    \accepts "MensuralStaff"
     \accepts "StaffGroup"
     \accepts "RhythmicStaff"
     \accepts "DrumStaff"
-    \accepts "LyricsVoice"
+    \accepts "Lyrics"
     \accepts "ChordNames"
     \accepts "GrandStaff"
     \accepts "ChoirStaff"
@@ -454,7 +438,7 @@ AncientRemoveEmptyStaffContext = \translator {
     soloText = #"Solo"
     soloIIText = #"Solo II"
     aDueText = #"a2"
-    soloADue = ##t
+    printPartCombineTexts = ##t
     systemStartDelimiter =#'SystemStartBar
 
     drumStyleTable = #drums-style
@@ -463,7 +447,7 @@ AncientRemoveEmptyStaffContext = \translator {
     
     clefGlyph = #"clefs-G"
     clefPosition = #-2
-    centralCPosition = #-6
+    middleCPosition = #-6
     
     defaultBarType = #"|"
     barNumberVisibility = #default-bar-number-visibility
@@ -489,6 +473,8 @@ AncientRemoveEmptyStaffContext = \translator {
     pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
     pedalSostenutoStyle = #'mixed
 
+
+    harmonicAccidentals = ##t 
     fingeringOrientations = #'(up down)
     tupletNumberFormatFunction = #denominator-tuplet-formatter
     markFormatter = #format-mark-letters
@@ -499,24 +485,26 @@ AncientRemoveEmptyStaffContext = \translator {
     autoAccidentals = #'(Staff (same-octave . 0))
     autoCautionaries = #'()  
 
+    printKeyCancellation = ##t
     keyAccidentalOrder = #`(
        (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
        (3  . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
        (6 . ,DOUBLE-FLAT) (2  . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1  . ,DOUBLE-FLAT) (4  . ,DOUBLE-FLAT) (0  . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
        (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
     )
-    breakAlignOrder = #'(
-    instrument-name
-    left-edge
-    ambitus
-    breathing-sign
-    clef
-    rehearsal-mark
-    staff-bar
-    key-signature
-    time-signature
-    custos
-    )
+
+    %{
+
+    this order is more complex, see wansek p254 and further.
+
+    for instance, order of clef and :|: depends on function of the clef
+
+    (clef of start-repeat) :|: (change-clef)
+
+    is the proper order.
+    
+    %}
+    
     barCheckSynchronize = ##f
     
     %% chord names:
@@ -529,31 +517,34 @@ AncientRemoveEmptyStaffContext = \translator {
     chordNameExceptionsFull = #fullJazzExceptions
     chordNameExceptionsPartial = #partialJazzExceptions
     
+
+    bassStaffProperties = #'((assign clefGlyph "clefs-F")
+      (assign clefPosition 2)
+      (assign middleCPosition 6))
     %% tablature:
     stringOneTopmost = ##t
     highStringOne = ##t
 
     %% One may change the strings tuning as following :
     %% The lenght of the list must be equal to the number of string
-    stringTunings   = #guitar-tunings
+    stringTunings = #guitar-tunings
     tablatureFormat = #fret-number-tablature-format
 
     %%
-    bassFigureFormatFunction = #make-bass-figure-markup
+    bassFigureFormatFunction = #format-bass-figure
     metronomeMarkFormatter = #format-metronome-markup
     graceSettings = #`#(
        (Voice Stem direction 1)
-
        ;; TODO: should take from existing definition.
        ;; c&p from define-grobs.scm
        
        (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
-       (Voice Stem stem-shorten (0.4 0))
+       (Voice Stem stem-shorten (0.4 0.4))
        (Voice Stem  font-size -3)
        (Voice NoteHead  font-size -3)
        (Voice Dots  font-size -3)
        (Voice Stem beamed-lengths  
-        ,(map (lambda (x) (* 0.8 x)) '(3.26)))
+        ,(map (lambda (x) (* 0.8 x)) '(3.3 3.3 4.0)))
        (Voice Stem beamed-minimum-free-lengths  
         ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
        (Voice Stem beamed-extreme-minimum-free-lengths  
@@ -564,54 +555,48 @@ AncientRemoveEmptyStaffContext = \translator {
        (Voice Beam space-function ,(lambda (beam mult)
                                     (* 0.8 (Beam::space_function
                                             beam mult))))
-       (Voice Beam position-callbacks (,Beam::least_squares
-                                       ,Beam::check_concave
-                                       ,Beam::slope_damping))
-       (Staff Accidental font-size -4)
+       (Voice Accidental font-size -4)
        (Voice Slur direction -1)
     )
-    
-    \grobdescriptions #all-grob-descriptions
-}
 
-OrchestralScoreContext = \translator {
-       \ScoreContext
+    quotedEventTypes = #'(note-event rest-event time-scaled-music tie-event)
+    instrumentTransposition = #(ly:make-pitch 0 0 0)
 }
 
-EasyNotation = \translator {
-       \ScoreContext
-       NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
-       NoteHead \override #'Y-extent-callback = #'()
-       NoteHead \override #'X-extent-callback = #'()
+EasyNotation = \context {      % TODO: why \context override? 
+       \Score
+       \override NoteHead #'print-function = #Note_head::brew_ez_stencil
+       \override NoteHead #'Y-extent-callback = #'()
+       \override NoteHead #'X-extent-callback = #'()
 }
 
 
 
-\translator {
+\context {
        \type "Engraver_group_engraver"
        \name FiguredBass 
        \consists "Figured_bass_engraver"
        \consists "Rest_swallow_translator"
        \consists "Note_swallow_translator"
+       \consists "Skip_event_swallow_translator"
        \consists "Separating_line_group_engraver"
        
-       \consistsend "Hara_kiri_engraver"
+       \consists "Hara_kiri_engraver"
 }
 
-\translator {
+\context {
     \name "Devnull"
     \type "Engraver_group_engraver"
 
     %% don't want to route anything out of here: 
     \alias "Staff"
-    \alias "Timing"
     \alias "Voice"
     \consists "Swallow_engraver"
     \description "Silently discards all musical information given to this context. "
     }
 
-\translator {
-      \VoiceContext
+\context {
+      \Voice
       \name "TabVoice"
       \consists "Tab_note_heads_engraver"
       \remove "Note_heads_engraver"
@@ -619,42 +604,36 @@ EasyNotation = \translator {
       \remove "New_fingering_engraver"
 
       \description "Context for drawing notes in a Tab staff. "
-      Slur \override #'font-family       = #'roman
-      Slur \override #'molecule-callback = #hammer-molecule-callback
-      Slur \override #'direction    = #-1
+      \override Slur #'font-family    = #'roman
+      \override Slur #'print-function = #hammer-print-function
+      \override Slur #'direction = #-1
 
       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
       % This feature is now disabled because most of the tab does not use it.
-      %Beam \override #'damping = #100000
-      %Stem \override #'up-to-staff = ##t
+      %\override Beam #'damping = #100000
+      %\override Stem #'up-to-staff = ##t
 
       % No accidental in tablature !
       \remove Accidental_engraver
 }
 
-\translator {
-      \StaffContext
+\context {
+      \Staff
       \alias "Staff"
       \name "TabStaff"
       \denies "Voice"
-
+      \remove "Staff_symbol_engraver"
+      \consists "Tab_staff_symbol_engraver"
+      
       \description "Context for generating tablature. [DOCME]"
 
-%{
-      TODO: this context should use a special staff_symbol engraver that
-      takes the line count out of the stringTunings property.
-
-%}
-      
-      
       \accepts "TabVoice"
       
       % 6 strings
-      StaffSymbol \override #'line-count  = #6
-      StaffSymbol \override #'staff-space = #1.5
+      \override StaffSymbol #'staff-space = #1.5
 
      % Don't draw stems over the tablature figures !
-      Stem \override #'avoid-note-head = ##t
+      \override Stem #'avoid-note-head = ##t
       
       % No accidental in tablature !
       \remove "Accidental_engraver"
@@ -669,14 +648,14 @@ EasyNotation = \translator {
 % but this does not work (is this a bug or intended behaviour?):
 %
 % If I try to do so, I get "error: unknown escaped string:
-% `\VaticanaStaffContext'" in params-init.ly.  If I also move
-% "\translator { \Vaticana*Context }" from params-init.ly to the end
+% `\VaticanaStaff'" in params-init.ly.  If I also move
+% "\context { \Vaticana*Context }" from params-init.ly to the end
 % of gregorian-init.ly, then I get "error: parse error, unexpected
-% TRANSLATOR: \translator { \VaticanaStaffContext }" in
+% TRANSLATOR: \context { \VaticanaStaff }" in
 % gregorian-init.ly. --jr
 
-\translator {
-  \VoiceContext
+\context {
+  \Voice
   \name "VaticanaVoice"
   \alias "Voice"
   \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
@@ -687,25 +666,34 @@ EasyNotation = \translator {
   \consists "Vaticana_ligature_engraver"
 
   % Set default head for notes outside of \[ \].
-  NoteHead \set #'style = #'vaticana_punctum
+  \override NoteHead #'style = #'vaticana-punctum
 
   % Put some space before and after divisiones.
   % FIXME: This does not seem to show any effect.
-  Script \set #'padding = #0.5
+  \override Script #'padding = #0.5
 
   % There are no beams in Gregorian Chant notation.
-  autobeaming = ##f
+  autoBeaming = ##f
 
   % Prepare TextSpanner for \episem{Initium|Finis} use.
-  TextSpanner \set #'style = #'line
-  TextSpanner \set #'edge-height = #'(0 . 0)
-  TextSpanner \set #'padding = #0.5
-  TextSpanner \set #'enclose-bounds = #1
-  TextSpanner \set #'edge-text = #'("" . "")
+  %
+  % N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
+  % always produce dashed lines, regardless of the style property.
+  %
+  % FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
+  % required to force the articulation signs being placed vertically
+  % tightly to the correpsonding note heads.
+  %
+  \override TextSpanner #'dash-fraction = #'()
+  \override TextSpanner #'style = #'line
+  \override TextSpanner #'edge-height = #'(0 . 0)
+  \override TextSpanner #'padding = #-0.1
+  \override TextSpanner #'enclose-bounds = #1
+  \override TextSpanner #'edge-text = #'("" . "")
 }
 
-\translator {
-  \StaffContext
+\context {
+  \Staff
   \name "VaticanaStaff"
   \alias "Staff"
   \denies "Voice"
@@ -718,34 +706,33 @@ EasyNotation = \translator {
   % We can not remove Bar_engraver; otherwise clefs and custodes will
   % not show up any more among other line breaking issues.
   % Instead, we make the grob transparent.
-  BarLine \set #'transparent = ##t
+  \override BarLine #'transparent = ##t
 
-  StaffSymbol \set #'line-count = #4
-  StaffSymbol \set #'thickness = #0.6
+  \override StaffSymbol #'line-count = #4
+  \override StaffSymbol #'thickness = #0.6
 
   % FIXME: unit on StaffSymbol's width should be \linewidth.
-  % StaffSymbol \set #'width = #60.0
+  % \override StaffSymbol #'width = #60.0
 
   % Choose vaticana do clef on 3rd line as default.
-  clefGlyph = #"clefs-vaticana_do"
-  centralCPosition = #1
+  clefGlyph = #"clefs-vaticana-do"
+  middleCPosition = #1
   clefPosition = #1
   clefOctavation = #0
 
   % Select vaticana style font.
-  KeySignature \set #'style = #'vaticana
-  Accidental \set #'style = #'vaticana
-  Custos \set #'style = #'vaticana
-  Custos \set #'neutral-position = #3
-  Custos \set #'neutral-direction = #-1
-  Custos \set #'adjust-if-on-staffline = ##t
+  \override KeySignature #'style = #'vaticana
+  \override Accidental #'style = #'vaticana
+  \override Custos #'style = #'vaticana
+  \override Custos #'neutral-position = #3
+  \override Custos #'neutral-direction = #-1
 
   % Score.timing = ##f
   % Score.barAlways = ##t
 }
 
-\translator {
-  \VoiceContext
+\context {
+  \Voice
   \name "GregorianTranscriptionVoice"
   \alias "Voice"
 
@@ -753,24 +740,33 @@ EasyNotation = \translator {
   % other ligature engraver would cause a "Junking event: `LigatureEvent'"
   % warning for every "\[" and "\]".  Therefore, we make the grob
   % transparent instead.
-  LigatureBracket \set #'transparent = ##t
+  \override LigatureBracket #'transparent = ##t
 
   % Put some space before and after divisiones.
   % FIXME: This does not seem to show any effect.
-  Script \set #'padding = #0.5
+  \override Script #'padding = #0.5
 
   % There are no beams in Gregorian Chant notation.
-  autobeaming = ##f
+  autoBeaming = ##f
 
   % Prepare TextSpanner for \episem{Initium|Finis} use.
-  TextSpanner \set #'style = #'line
-  TextSpanner \set #'edge-height = #'(0 . 0)
-  TextSpanner \set #'padding = #0.5
-  TextSpanner \set #'enclose-bounds = #1
-  TextSpanner \set #'edge-text = #'("" . "")
+  %
+  % N.B.: dash-fraction MUST be unset; otherwise, TextSpanner will
+  % always produce dashed lines, regardless of the style property.
+  %
+  % FIXME: The line @code{\override TextSpanner #'padding = #-0.1} is
+  % required to force the articulation signs being placed vertically
+  % tightly to the correpsonding note heads.
+  %
+  \override TextSpanner #'dash-fraction = #'()
+  \override TextSpanner #'style = #'line
+  \override TextSpanner #'edge-height = #'(0 . 0)
+  \override TextSpanner #'padding = #-0.1
+  \override TextSpanner #'enclose-bounds = #1
+  \override TextSpanner #'edge-text = #'("" . "")
 }
- \translator {
-  \StaffContext
+ \context {
+  \Staff
   \name "GregorianTranscriptionStaff"
   \alias "Staff"
   \denies "Voice"
@@ -779,5 +775,60 @@ EasyNotation = \translator {
   % We can not remove Bar_engraver; otherwise clefs and custodes will
   % not show up any more among other line breaking issues.
   % Instead, we make the grob transparent.
-  BarLine \set #'transparent = ##t
+  \override BarLine #'transparent = ##t
+}
+
+\context {
+  \Voice
+  \name "MensuralVoice"
+  \alias "Voice"
+  \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting a piece in mensural style."
+
+  \remove "Slur_engraver"
+  \remove "Ligature_bracket_engraver"
+  \consists "Mensural_ligature_engraver"
+
+  % Set default head for notes outside of \[ \].
+  \override NoteHead #'style = #'mensural
+
+  % There are no beams in mensural notation.
+  autoBeaming = ##f
+}
+
+\context {
+  \Staff
+  \name "MensuralStaff"
+  \alias "Staff"
+  \denies "Voice"
+  \accepts "MensuralVoice"
+  \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting a piece in mensural style."
+
+  \consists "Custos_engraver"
+
+  % We can not remove Bar_engraver; otherwise clefs and custodes will
+  % not show up any more among other line breaking issues.
+  % Instead, we make the grob transparent.
+  \override BarLine #'transparent = ##t
+
+  \override StaffSymbol #'thickness = #0.6
+
+  % FIXME: unit on StaffSymbol's width should be \linewidth.
+  % \override StaffSymbol #'width = #60.0
+
+  % Choose petrucci g clef on 2nd line as default.
+  clefGlyph = #"clefs-petrucci-g"
+  middleCPosition = #-6
+  clefPosition = #-2
+  clefOctavation = #0
+
+  % Select mensural style font.
+  \override TimeSignature #'style = #'mensural
+  \override KeySignature #'style = #'mensural
+  \override Accidental #'style = #'mensural
+  \override Custos #'style = #'mensural
+  \override Custos #'neutral-position = #3
+  \override Custos #'neutral-direction = #-1
+
+  % Score.timing = ##f
+  % Score.barAlways = ##t
 }