2014-04-20 23:46 GMT+02:00 MING TSANG <tsan...@rogers.com>:

> Thank you for modify the solfege-engraver.
> I copy and paste into the .ly file and ran.  Result: The below staff seems
> working, but "\xup" suppose to put the solfege above staff and now it is put
> below the staff instead - and the stacking is not right.  Any idea?

Hi Ming,

I can't reproduce the image you posted.
On my machine, the attached code returns the attached image.
Please tell me whats wrong with it.

Cheers,
  Harm
\version "2.19.4"

\language "english"

%%%%%%%%%%%%%%%\include "include_solfege-engraver.ly"
#(define syllables '("do" "re" "mi" "fa" "so" "la" "ti"))
#(define syls '("d" "r" "m" "f" "s" "l" "t"))
#(define numR➀ '("➀" "➁" "➂" "➃" "➄" "➅" "➆"))
#(define number '("1" "2" "3" "4" "5" "6" "7"))
#(define numR➑ '("➊" "➋" "➌" "➍" "➎" "➏" "➐"))

#(define (solfege-engraver lst dir)
   (make-engraver 
     (acknowledgers
      ((note-head-interface engraver grob source)
       (let* (
              (context (ly:translator-context engraver))
              (tonic-pitch (ly:context-property context 'tonic))
              (tonic-index (ly:pitch-notename tonic-pitch))
              (event (ly:grob-property grob 'cause))
              (event-copy (ly:event-deep-copy event))
              (grob-pitch (ly:event-property event 'pitch))
              (grob-index (ly:pitch-notename grob-pitch))
              (delta (modulo (- grob-index tonic-index) 7))
              (name (list-ref lst delta))
              (newgrob (ly:engraver-make-grob engraver 'TextScript event-copy)))

         ;; clear 'tweaks for newgrob
         (ly:event-set-property! event-copy 'tweaks '())         
         (if (string= name "Hb")  (set! name "B"))
         ;; Give newgrob 'outside-staff-priority depending on 
         ;; grob 'staff-position
         (set! (ly:grob-property newgrob 'outside-staff-priority)
               (+ (ly:grob-property newgrob 'outside-staff-priority)
                  (* dir (ly:grob-property grob 'staff-position))))
         (set! (ly:grob-property newgrob 'text) name)
         (set! (ly:grob-property newgrob 'direction) dir) )))))


xup = \with { \consists #(solfege-engraver syllables UP) }
xdown = \with { \consists #(solfege-engraver syllables DOWN) }
zup= \with { \consists #(solfege-engraver syls UP) }
zdown= \with { \consists #(solfege-engraver syls DOWN) }
nup= \with { \consists #(solfege-engraver number  UP) }
ndown= \with { \consists #(solfege-engraver number  DOWN) }
rup= \with { \consists #(solfege-engraver numR➀ UP) }
rdown= \with { \consists #(solfege-engraver numR➀ DOWN) }
sup= \with { \consists #(solfege-engraver numR➑ UP) }
sdown= \with { \consists #(solfege-engraver numR➑ DOWN) }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%end
clors =
#(define-music-function (parser location which color music)
    ((procedure? car) color? ly:music?)
  (music-map
    (lambda (mus)
      (if (music-is-of-type? mus 'event-chord)
          (let* ((evt-chrd-nts (event-chord-notes mus)))
           (if (> (length evt-chrd-nts) 1)
               (let ((first-nh (which evt-chrd-nts)))
                 #{ \tweak #'color #color #first-nh #})
               mus)
            mus)
          mus))
    music))             % default #first     #last is the top notehead 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 boo =
#(define-music-function
      (parser location color the-music)
      (color? ly:music?)
    #{
      \temporary 
      \override NoteHead.color = #color
     
      #the-music
      \revert NoteHead.color
  
    #})                %\boo#blue {..}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SA = {
  d''4. d''8 d''8 <c''e''>8 <b' d''>8 f'8 |%m73
  <<{\voiceOne a'2 a'4 f'8 e'8}\new Voice{\voiceTwo \boo#red {c'4 d'4 f'4 f'4} }>> \oneVoice |%m74
  d'4. <g'b'>8 <f'b'>8 <g'b'>8 q4 |%m75
}

verseA = \lyricmode {
  re re re mi re fa la la fa mi re so so so re  
}


<<
\new Staff \with { \xup
    
  } <<
  \new Voice = "soprano" { 
      \voiceOne \clors #first #red \SA 
  }
  >>
  \new Lyrics \lyricsto "soprano" \verseA
>>

<<
\new Staff \with { \xdown
    
  } <<
    \new Voice = "soprano"  { \voiceOne \clors #first #blue \SA }
  >>
  \new Lyrics 
    \lyricsto "soprano" \verseA
>>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to