Hi Kieren,

I use some helper functions to enter edition-mods of the same kind. Again this might not be self-explaining ... but perhaps you get the idea. And of course: maybe it is more sufficient to use the markup-hammer and separate the lyrics from the music with a mace!

Jan-Peter


Am 15.06.2017 um 17:38 schrieb Kieren MacMillan:
Hello again,

Here's another example, solved a different way.

BEFORE. Even with lyrics horizontally compressed to help, there are visible note-spacing distortions:


AFTER. I \omit-ted the lyrics (so that note-spacing reverted to 100% 'neutral' spacing), then added the text back in (without any horizontal glyph compression required!) as a hand-tweaked markup:


There are obviously improvements that could still be made, but this is closer to what I want in my score than the "BEFORE" version. If I could take a *little* of the space out after each non-16th note and gain it back after each 16th, it would be nearly perfect.

Regardless, this takes a *huge* amount of manual effort — as much as I hate to admit it, it takes more effort even than it would in something like Finale or Sibelius [!!].

Any help (however hackish) would be appreciated.

Thanks,
Kieren.
________________________________

Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info <http://www.kierenmacmillan.info>
‣ email: [email protected] <mailto:[email protected]>



_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user


\version "2.19.63"
\include "edition-engraver/edition-engraver.ily"

\setEditions lyrics

\consistToContexts #edition-engraver Score.Staff.Voice.Lyrics

#(set-global-staff-size 16)

% start mod-list entry
#(define-public startModList
   (define-void-function (lid edition-target edition-context-id proc)(symbol? symbol? list? procedure?)
     (ly:parser-define! lid '())
     (ly:parser-define! 'current-modlist lid)
     (ly:parser-define! 'current-modproc `((proc . ,proc)
                                           (edition-target . ,edition-target)
                                           (edition-context-id . ,edition-context-id)))
     ))
% add mod-list entry
#(define-public addModList
   (let ((short-mom? (@@ (edition-engraver engine) short-mom?)))
     (define-void-function (takt pos mod)
       (integer? short-mom? scheme?)
       (if (and (defined? 'current-modlist)(symbol? current-modlist))
           (let ((ml (ly:parser-lookup current-modlist)))
             (set! ml (assoc-set! ml (cons takt pos) mod))
             (ly:parser-define! current-modlist ml))
           (ly:input-warning (*location*) "no modlist started?")
           ))))
% create EE-mods
#(define-public finishModList
   (define-void-function ()()
     (if (and (defined? 'current-modlist)
              (symbol? current-modlist)
              (defined? 'current-modproc)
              (list? current-modproc)
              (symbol? (assoc-get 'edition-target current-modproc))
              (list? (assoc-get 'edition-context-id current-modproc))
              (procedure? (assoc-get 'proc current-modproc))
              )
         (let ((lst (ly:parser-lookup current-modlist))
               (edition-target (assoc-get 'edition-target current-modproc))
               (edition-id (assoc-get 'edition-context-id current-modproc))
               (proc (assoc-get 'proc current-modproc)))
           (for-each (lambda (p)
                       (if (pair? p)
                           (let ((mod (proc (cdr p))))
                             (editionMod edition-target (caar p) (cdar p) edition-id mod)
                             )))
             lst))
         (ly:input-warning (*location*) "no modlist started?")
         )))

% the function to produce the mods
lyricsAlign = \once \override LyricText.self-alignment-X = \etc
noteColumnAlign = \once \override NoteColumn.X-offset = \etc

% enter the list
\startModList myLyricMods lyrics Lyrics #lyricsAlign
\addModList 1 0/16 #.8
\addModList 1 2/16 #.5
\addModList 1 4/16 #.4
\addModList 1 6/16 #-.4
\addModList 1 8/16 #.4
\addModList 1 10/16 #-.4
\addModList 1 12/16 #-.2

\addModList 2 2/16 #.4
\addModList 2 3/16 #-.2
\addModList 2 4/16 #.2
\addModList 2 7/16 #.2
\addModList 2 8/16 #.8
\addModList 2 9/16 #.8
\addModList 2 10/16 #.3
\addModList 2 12/16 #-.4
\finishModList
% enter the list
\startModList myNoteColumnMods lyrics Score #noteColumnAlign
\addModList 2 4/16 #3
\addModList 2 7/16 #3
\addModList 2 8/16 #3
\addModList 2 9/16 #4
\finishModList

\new Voice \relative {
  \key g \major
  e'8 e e16 e e fis fis g g g g8. g16 | \noBreak fis8 fis16 fis fis fis fis fis fis g g a a8 g16 fis |
} \addlyrics {
  few short min -- utes with a ham -- mer and a mace should do quite suf -- fi -- cient -- ly to re -- ar -- range your face. When I'm
}
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to