X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ly%2Fengraver-init.ly;h=3dfcdbd3ebdd212c1db901421779fff19d8d4dea;hb=ab44d6965ec6af3b58e2ef469b98689a5af64bb0;hp=6261811a13244229551ed15f5fa5ca89533f5348;hpb=94375d04f45b415ad705fd444fdb344416f116d9;p=lilypond.git diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 6261811a13..3dfcdbd3eb 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -1,4 +1,6 @@ -\version "1.3.146" +\version "1.7.18" + + % % setup for Request->Element conversion. Guru-only @@ -6,9 +8,13 @@ StaffContext=\translator { \type "Engraver_group_engraver" - \name Staff + \name Staff + + \description "Handles clefs, bar lines, keys, accidentals. It can contain +@code{Voice} contexts." + + \consists "Output_property_engraver" - Generic_property_list = #generic-staff-properties \consists "Bar_engraver" % Bar_engraver must be first so default bars aren't overwritten @@ -18,31 +24,36 @@ StaffContext=\translator { % \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 "Ottava_spanner_engraver" \consists "Clef_engraver" \consists "Key_engraver" \consists "Time_signature_engraver" \consists "Staff_symbol_engraver" \consists "Collision_engraver" \consists "Rest_collision_engraver" - \consists "Local_key_engraver" + \consists "Accidental_engraver" \consists "Piano_pedal_engraver" \consists "Instrument_name_engraver" - + \consists "Grob_pq_engraver" + \consists "Forbid_line_break_engraver" \consistsend "Axis_group_engraver" - - MinimumVerticalExtent = #'(-4 . 4) - ExtraVerticalExtent = ##f - VerticalExtent = ##f + + minimumVerticalExtent = #'(-6 . 6) + extraVerticalExtent = ##f + verticalExtent = ##f + localKeySignature = #'() % explicitly set instrument, so we don't get % weird effects when doing instrument names for % piano staves - instrument = ##f - instr = ##f + instrument = #'() + instr = #'() \accepts "Voice" } @@ -51,10 +62,11 @@ StaffContext=\translator { StaffContainerContext = \translator { \type Engraver_group_engraver \consists "Axis_group_engraver" - MinimumVerticalExtent = ##f - ExtraVerticalExtent = ##f - VerticalExtent = ##f - + minimumVerticalExtent = ##f + extraVerticalExtent = ##f + verticalExtent = ##f + localKeySignature = #'() + \accepts Staff \name StaffContainer } @@ -62,9 +74,9 @@ StaffContainerContext = \translator { InnerChoirStaffContext = \translator { \type "Engraver_group_engraver" \name InnerChoirStaff - alignmentReference = #0 \consists "System_start_delimiter_engraver" - SystemStartDelimiter = #'SystemStartBracket + systemStartDelimiter = #'SystemStartBracket + localKeySignature = #'() \accepts "Staff" \accepts "RhythmicStaff" @@ -73,9 +85,14 @@ InnerChoirStaffContext = \translator { \accepts "Lyrics" \accepts "ChordNames" } + ChoirStaffContext = \translator { \InnerChoirStaffContext \name ChoirStaff + + \description "Identical to @code{StaffGroup} except that the + contained staves are not connected vertically." + \accepts "InnerChoirStaff" \accepts "InnerStaffGroup" } @@ -86,26 +103,34 @@ RhythmicStaffContext=\translator{ \consists "Output_property_engraver" - Generic_property_list = #generic-staff-properties - MinimumVerticalExtent = ##f - ExtraVerticalExtent = ##f - VerticalExtent = ##f +\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" \consists "Separating_line_group_engraver" \name RhythmicStaff \alias "Staff" - Bar \override #'bar-size = #4 + BarLine \override #'bar-size = #4 VoltaBracket \override #'minimum-space = #15 % urg, in \pt VoltaBracket \override #'padding = #5 % urg, in \pt StaffSymbol \override #'line-count = #1 + Stem \override #'neutral-direction = #1 + Beam \override #'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 "Instrument_name_engraver" \consistsend "Axis_group_engraver" \accepts "Voice" } @@ -114,8 +139,15 @@ RhythmicStaffContext=\translator{ VoiceContext = \translator { \type "Engraver_group_engraver" \name Voice +\description " + Corresponds to a voice on a staff. This context handles the + conversion of dynamic signs, stems, beams, super- and subscripts, + slurs, ties, and rests. - Generic_property_list = #generic-voice-properties + You have to instantiate this explicitly if you want to have + multiple voices on the same staff." + + localKeySignature = #'() \consists "Font_size_engraver" % must come before all @@ -124,100 +156,135 @@ VoiceContext = \translator { \consists "Arpeggio_engraver" \consists "Multi_measure_rest_engraver" \consists "Text_spanner_engraver" - + \consists "Grob_pq_engraver" + + \consists "Ligature_bracket_engraver" \consists "Breathing_sign_engraver" % \consists "Rest_engraver" - \consists "Dot_column_engraver" \consists "Stem_engraver" \consists "Beam_engraver" + \consists "Grace_beam_engraver" \consists "Auto_beam_engraver" - + \consists "New_fingering_engraver" \consists "Chord_tremolo_engraver" \consists "Percent_repeat_engraver" + \consists "Slash_repeat_engraver" \consists "Melisma_engraver" %{ Must come before text_engraver, but after note_column engraver. %} - \consists "Dynamic_engraver" \consists "Text_engraver" + \consists "Dynamic_engraver" + \consists "Fingering_engraver" \consists "Script_engraver" \consists "Script_column_engraver" \consists "Rhythmic_column_engraver" \consists "Phrasing_slur_engraver" + \consists "Cluster_engraver" \consists "Slur_engraver" \consists "Tie_engraver" - \consists "Porrectus_engraver" + \consists "New_tie_engraver" \consists "Tuplet_engraver" \consists "A2_engraver" - \consists "Skip_req_swallow_translator" + \consists "Skip_event_swallow_translator" \accepts Thread % bug if you leave out this! } ThreadContext = \translator{ \type Engraver_group_engraver \name Thread - + localKeySignature = #'() +\description " + Handles note heads, and is contained in the Voice context. You + have to instantiate this explicitly if you want to adjust the + style of individual note heads. +" \consists "Font_size_engraver" \consists "Thread_devnull_engraver" \consists "Note_heads_engraver" \consists "Rest_engraver" + + % why here ? \consists "Note_head_line_engraver" \consists "Output_property_engraver" - Generic_property_list = #generic-thread-properties + } + + GrandStaffContext=\translator{ \type "Engraver_group_engraver" \name GrandStaff + localKeySignature = #'() + + \description " A group of staffs, with a brace on the left + side, grouping the staves together. The bar lines of the + contained staves are connected vertically. " + \consists "Span_bar_engraver" \consists "Span_arpeggio_engraver" \consists "System_start_delimiter_engraver" - SystemStartDelimiter = #'SystemStartBrace - Generic_property_list = #generic-grand-staff-properties + systemStartDelimiter = #'SystemStartBrace + \accepts "Staff" } PianoStaffContext = \translator{ \GrandStaffContext \name "PianoStaff" + \alias "GrandStaff" +\description " + Just like @code{GrandStaff} but with @code{minVerticalAlign} set + equal to @code{maxVerticalAlign} so that interstaff beaming and + slurring can be used." + verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback + VerticalAlignment \override #'forced-distance = #12 + VerticalAlignment \override #'self-alignment-Y = #0 \consists "Vertical_align_engraver" \consists "Instrument_name_engraver" - instrument = ##f - instr = ##f + instrument = #'() + instr = #'() - verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback - VerticalAlignment \override #'forced-distance = #12 - VerticalAlignment \override #'self-alignment-Y = #0 % \consistsend "Axis_group_engraver" } InnerStaffGroupContext= \translator { \type "Engraver_group_engraver" \name InnerStaffGroup + localKeySignature = #'() \consists "Span_bar_engraver" \consists "Span_arpeggio_engraver" \consists "Output_property_engraver" - SystemStartDelimiter = #'SystemStartBracket + systemStartDelimiter = #'SystemStartBracket \consists "System_start_delimiter_engraver" \accepts "Staff" \accepts "RhythmicStaff" \accepts "GrandStaff" \accepts "PianoStaff" - + \accepts "TabStaff" \accepts "Lyrics" \accepts "ChordNames" } + StaffGroupContext = \translator { \InnerStaffGroupContext \name StaffGroup + + \description + + " Groups staffs while adding a bracket on the left side, + grouping the staves together. The bar lines of the contained + staves are connected vertically. +" + \accepts "InnerChoirStaff" \accepts "ChoirStaff" \accepts "InnerStaffGroup" @@ -228,16 +295,23 @@ StaffGroupContext = \translator { % UGH! JUNKME LyricsVoiceContext= \translator{ \type "Engraver_group_engraver" - \consistsend "Axis_group_engraver" - MinimumVerticalExtent = #(cons -1.2 1.2) - ExtraVerticalExtent = ##f - VerticalExtent = ##f + \consistsend "Hara_kiri_engraver" + minimumVerticalExtent = #'(-1.2 . 1.2) + extraVerticalExtent = ##f + verticalExtent = ##f + + \description " + Corresponds to a voice with lyrics. Handles the printing of a + single line of lyrics. +" + \name LyricsVoice \consists "Separating_line_group_engraver" \consists "Lyric_engraver" \consists "Extender_engraver" \consists "Hyphen_engraver" \consists "Stanza_number_engraver" + \consists "Skip_event_swallow_translator" phrasingPunctuation = #".,:!?\"" } @@ -246,9 +320,9 @@ NoteNamesContext = \translator { \name NoteNames \consistsend "Axis_group_engraver" - MinimumVerticalExtent = ##f - ExtraVerticalExtent = ##f - VerticalExtent = ##f + minimumVerticalExtent = ##f + extraVerticalExtent = ##f + verticalExtent = ##f \consists "Note_name_engraver" @@ -258,13 +332,14 @@ NoteNamesContext = \translator { LyricsContext = \translator { \type "Engraver_group_engraver" \name Lyrics - \consists Vertical_align_engraver %need this for getting folded repeats right. - Generic_property_list = #generic-lyrics-properties + \description "Typesets lyrics." + %% To get folded repeats right. + \consists Vertical_align_engraver - \consistsend "Axis_group_engraver" - MinimumVerticalExtent = ##f - ExtraVerticalExtent = ##f - VerticalExtent = ##f + \consistsend "Hara_kiri_engraver" + minimumVerticalExtent = ##f + extraVerticalExtent = ##f + verticalExtent = ##f \accepts "LyricsVoice" } @@ -273,59 +348,62 @@ LyricsContext = \translator { ChordNamesContext = \translator { \type "Engraver_group_engraver" \name ChordNames - - Generic_property_list = #generic-chord-staff-properties - - +\description " Typesets chord names." + + \consists "Rest_swallow_translator" \consists "Output_property_engraver" \consists "Separating_line_group_engraver" \consists "Chord_name_engraver" - \consists "Skip_req_swallow_translator" - \consistsend "Axis_group_engraver" - MinimumVerticalExtent = ##f - ExtraVerticalExtent = ##f - VerticalExtent = ##f - - VerticalAxisGroup \override #'invisible-staff = ##t - } - - - -StupidScore = \translator { - \type "Score_engraver" - \name Score - \consists "Note_heads_engraver" + \consists "Skip_event_swallow_translator" + \consistsend "Hara_kiri_engraver" + minimumVerticalExtent = #'(0 . 2.5) + extraVerticalExtent = ##f + verticalExtent = ##f } - - -HaraKiriStaffContext = \translator { +RemoveEmptyStaffContext = \translator { \StaffContext \remove "Axis_group_engraver" \consistsend "Hara_kiri_engraver" \consists "Instrument_name_engraver" \accepts "Voice" -} -%{ - The HaraKiriStaffContexts doesn't override \name, - so it is still named `Staff'. - - %\translator { \HaraKiriStaffContext } -%} - + % hara kiri & auto knee don't work together. + Beam \override #'auto-knee-gap = #'() +} +HaraKiriStaffContext = \translator { \RemoveEmptyStaffContext } ScoreContext = \translator { \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 + handles the administration of time signatures. It also makes sure + that items such as clefs, time signatures, and key-signatures are + aligned across staves. + + 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." \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" \consists "Mark_engraver" + \consists "Metronome_mark_engraver" \consists "Break_align_engraver" \consists "Spacing_engraver" \consists "Vertical_align_engraver" @@ -334,6 +412,7 @@ ScoreContext = \translator { \consists "Span_arpeggio_engraver" \accepts "Staff" + \accepts "TabStaff" \accepts "StaffContainer" \accepts "StaffGroup" \accepts "RhythmicStaff" @@ -350,35 +429,45 @@ ScoreContext = \translator { aDueText = #"a2" soloADue = ##t splitInterval = #'(0 . 1) - changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512)) - SystemStartDelimiter =#'SystemStartBar - barAuto = ##t - voltaVisibility = ##t - % name, glyph id, clef position - % where is c0 in this clef? + changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512)) + systemStartDelimiter =#'SystemStartBar + clefGlyph = #"clefs-G" clefPosition = #-2 centralCPosition = #-6 automaticPhrasing = ##t - alignmentReference = #-1 % \down + automaticMelismata = ##t + defaultBarType = #"|" + barNumberVisibility = #default-bar-number-visibility explicitClefVisibility = #all-visible explicitKeySignatureVisibility = #all-visible - autoBeamSettings = #auto-beam-settings - + autoBeamSettings = #default-auto-beam-settings + autoBeaming = ##t scriptDefinitions = #default-script-alist verticalAlignmentChildCallback = #Align_interface::alignment_callback pedalSustainStrings = #'("Ped." "*Ped." "*") pedalUnaCordaStrings = #'("una corda" "" "tre corde") - pedalSostenutoStrings = #'() % FIXME + + %% These are in ordinary italic font, including the *, + %% but they are unlikely to be used, + %% as the default pedal-style for SostenutoPedal is 'mixed': + %% i.e. Sost. Ped_____________________ + pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") tupletNumberFormatFunction = #denominator-tuplet-formatter + subdivideBeams = ##f + allowBeamBreak = ##f + extraNatural = ##t + autoAccidentals = #'(Staff (same-octave . 0)) + autoCautionaries = #'() + keyAccidentalOrder = #'( (6 . -1) (2 . -1) (5 . -1 ) (1 . -1) (4 . -1) (0 . -1) (3 . -1) (3 . 1) (0 . 1) (4 . 1) (1 . 1) (5 . 1) (2 . 1) (6 . 1) @@ -386,17 +475,39 @@ ScoreContext = \translator { (3 . 2) (0 . 2) (4 . 2) (2 . 2) (5 . 2) (2 . 2) (6 . 2) ) breakAlignOrder = #'( - Instrument_name - Left_edge_item - Span_bar - Breathing_sign - Clef_item - Key_item - Staff_bar - Time_signature - Custos + instrument-name + left-edge + ambitus + span-bar + breathing-sign + clef + key-signature + staff-bar + time-signature + custos ) + barCheckSynchronize = ##t + + %% chord names: + chordNameFunction = #ignatzek-chord-names + majorSevenSymbol = #whiteTriangleMarkup + chordNameSeparator = #(make-simple-markup "/") + chordNameExceptions = #ignatzekExceptions + chordNoteNamer = #'() + chordRootNamer = #note-name->markup + + %% 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 + tablatureFormat = #fret-number-tablature-format + %% + bassFigureFormatFunction = #make-bass-figure-markup + metronomeMarkFormatter = #make-metronome-markup \grobdescriptions #all-grob-descriptions } @@ -404,20 +515,67 @@ ScoreContext = \translator { OrchestralScoreContext= \translator { \ScoreContext } + EasyNotation = \translator { \ScoreContext NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule - easyPlay = ##t } -% retain for compatibility reasons (FIXME: convert-ly) -GraceContext = \translator { - \type "Engraver_group_engraver" -} + FiguredBassContext = \translator { \type "Engraver_group_engraver" \name FiguredBass - \consists "Figured_bass_engraver" - \consistsend "Axis_group_engraver" + \consists "Figured_bass_engraver" + \consists "Rest_swallow_translator" + \consists "Note_swallow_translator" + \consists "Separating_line_group_engraver" + + \consistsend "Hara_kiri_engraver" +} + +TabVoiceContext = \translator { + \VoiceContext + \name "TabVoice" + \denies "Thread" + \consists "Tab_note_heads_engraver" + + Slur \override #'font-family = #'roman + Slur \override #'molecule-callback = #hammer-molecule-callback + Slur \override #'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 + + % No accidental in tablature ! + \remove Accidental_engraver +} + +TabStaffContext = \translator { + \StaffContext + \alias "Staff" + \name "TabStaff" + \denies "Voice" + + \description "Context for generating tablature. [DOCME]" + + \accepts "TabVoice" + + % 6 strings + StaffSymbol \override #'line-count = #6 + StaffSymbol \override #'staff-space = #1.5 + + % Don't draw stems over the tablature figures ! + Stem \override #'avoid-note-head = ##t + + % No accidental in tablature ! + \remove Accidental_engraver + \remove Key_engraver + + % Special "TAB" clef + clefGlyph = #"clefs-tab" + clefPosition = #0 } +