"-DeeT (sent by Nabble.com)" <[EMAIL PROTECTED]> writes: > The Lilypond manual explains well how to code this way: > > staff1, all measures > staff2, all measures > staff3, all measures > > I'd prefer to have this organization in the source: > > staff1,measure-group1 > staff2,measure-group1 > staff3,measure-group1 > % > staff1,measure-group2 > staff2,measure-group2 > staff3,measure-group2
The following function may enable the style you want. It uses the "|" bar check sign to separate different voices: staff1 measure-group1 | staff2 measure-group1 | staff3 measure-group1 | staff1 measure-group2 | staff2 measure-group2 | staff3 measure-group2 | ------------------------------------------------------ parallelMusic = #(def-music-function (parser location voice-number music) (number? ly:music?) (let ((voices (make-vector voice-number (list))) (current 0)) (define (push-music music index) (vector-set! voices index (cons music (vector-ref voices index)))) (map-in-order (lambda (m) (push-music m current) (if (eq? (ly:music-property m 'name) 'BarCheck) (set! current (modulo (1+ current) voice-number)))) (ly:music-property music 'elements)) (make-music 'SimultaneousMusic 'elements (map-in-order (lambda (music-list) #{ \new Staff $(make-music 'SequentialMusic 'elements (reverse! music-list)) #}) (vector->list voices))))) \new StaffGroup \parallelMusic #'3 { \time 4/4 g' g' g' g' | e' e' e' e' | c' c' c' c' | %% \time 3/4 a' a' a' | fis' fis' fis' |d' d' d' | %% \time 2/4 b' b' c'' c'' | gis' gis' a' a' | e' e' f' f' | } ------------------------------------------------------ You can also define something similar for mixing a melody and lyrics, but you'll have to use \lyricmode explicitly, which is not convenient here. ------------------------------------------------------ songMusic = #(def-music-function (parser location music) (ly:music?) (let ((voices (make-vector 2 (list))) (current 0) (voice-number 2)) (define (push-music music index) (vector-set! voices index (cons music (vector-ref voices index)))) (map-in-order (lambda (m) (push-music m current) (if (eq? (ly:music-property m 'name) 'BarCheck) (set! current (modulo (1+ current) voice-number)))) (ly:music-property music 'elements)) (let ((voice (make-music 'SequentialMusic 'elements (reverse! (vector-ref voices 0)))) (lyrics (make-music 'SequentialMusic 'elements (reverse! (vector-ref voices 1))))) #{ \new Voice { $voice } \addlyrics { $lyrics } #}))) \new StaffGroup \songMusic { c'8 c' c' d' e'4 d' | \lyricmode { Au clair de la lu -- ne, } | %% c'8 e'8 d' d' c'2 | \lyricmode { mon a -- mi Pier -- rot } | } ------------------------------------------------------ Note that these are just hacks. nicolas _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-user