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