\version "2.19.25" %%%%%%%%%%%%%%%%%%% switch lyrics on and off %%%%%%%%%%%%%%%%%%%%%%%%%%% switchLyrics = #(define-music-function (fn voices) (procedure? list?) " @code{fn} must take a single symbol. " (let* ((unfold-voices (lambda (sym) (case sym ((soprano sop) 'sopLyrics) ((sopOne) 'sopOneLyrics) ((sopTwo) 'sopTwoLyrics) ((mezzo mez) 'mezLyrics) ((mezOne) 'mezOneLyrics) ((mezTwo) 'mezTwoLyrics) ((alto alt) 'altLyrics) ((altOne) 'altOneLyrics) ((altTwo) 'altTwoLyrics) ((tenor ten) 'tenLyrics) ((tenOne) 'tenOneLyrics) ((tenTwo) 'tenTwoLyrics) ((baritone bar) 'barLyrics) ((barOne) 'barOneLyrics) ((barTwo) 'barTwoLyrics) ((bass bas) 'bassLyrics) ((bassOne basOne) 'bassOneLyrics) ((bassTwo basTwo) 'bassTwoLyrics)))) (voices (map unfold-voices voices)) (all-lyrics-grobs '(LyricText LyricSpace LyricHyphen LyricExtender)) (tweaks (make-sequential-music (map fn all-lyrics-grobs))) (direct (lambda (ctx) #{ \context Lyrics = $(symbol->string ctx) $tweaks #})) ) (make-sequential-music (map direct voices)))) omitLyrics = #(define-music-function (voices) (list?) (let ((omit-single (lambda (grob) (omit (list grob))))) (switchLyrics omit-single voices))) hideLyrics = #omitLyrics showLyrics = #(define-music-function (voices) (list?) (let ((show-single (lambda (grob) (undo (omit (list grob)))))) (switchLyrics show-single voices)))