lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Solfege Syllables Easy Notes


From: Craig Bakalian
Subject: Re: Solfege Syllables Easy Notes
Date: Sat, 8 Oct 2022 08:44:48 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2

Hi Lukas-Fabian,

Thank you for the solution.  You are a generous person!

I used to code, about 25 years ago, lol.  The scheme code below, or whatever lilypond uses to extend functionality is confusing to me.  But, I can generalize it.   All is great with the code, with one exception; dorian is re as the resting tone, do does not become the resting tone in d dorian.  So, the tonic in dorian is re,fa,la.  The tonic in mixolydian is mi,so,ti.  And, I am not apologizing here, I am a pretty well respected music teacher in the US, European and Asian fixed do is ignorant.  Just an aside comment, your code is not creating fixed do.

Solfege is for students to learn the syntax of music; tonic - dominant - subdominant relationships, with a movable resting tone within each key or keyality.  So, you can have an e based dorian coupled into d major.   I think Arnold Schoenberg was pretty strong on this issue.

To the point, and it is resolvable by making everything \key "anykey" \major, but, how would we change the code to make \dorian re based, \lydian fa based?

And the modulations to fis and bes is excellent!

Thanks again!

On 10/8/22 4:01 AM, Lukas-Fabian Moser wrote:

#(define solfeggio-list (list "do" "re" "mi" "fa" "so" "la" "ti"))

#(define sharp-vowel #\i)
#(define flat-vowel #\e)

Solfeggio_engraver =
#(lambda (context)
   (make-engraver
    (acknowledgers
     ((note-head-interface engraver grob source-engraver)
      (let* (
         (tonic-pitch (ly:context-property context 'tonic))
         (tonic-name (ly:pitch-notename tonic-pitch))
         (grob-pitch
          (ly:event-property (event-cause grob) 'pitch))
         (delta (ly:pitch-diff grob-pitch tonic-pitch))
         (syllable
          ; use string-copy because of later in-place modification
          (string-copy
           (list-ref solfeggio-list (ly:pitch-notename delta)))))
        (case (ly:pitch-alteration delta)
          ((0) (noop))
          ((1/2) (string-set! syllable 1 sharp-vowel))
          ((-1/2) (string-set! syllable 1 flat-vowel))
          (else (string-set! syllable 1 #\?)))
    (ly:grob-set-property! grob 'note-names (make-vector 7 syllable)))))))

#(set-global-staff-size 26)

\layout {
  ragged-right = ##t
  \context {
    \Voice
    \consists \Solfeggio_engraver
  }
}

\relative c' {
  \easyHeadsOn
  c4 d e f
  g4 a b c
  c b bes a
  fis g as g
  \break

  \key a \major
  a,4 b cis d
  e4 fis gis a \break

  \key d \dorian
  d,4 e f g
  a4 b c d
}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]