%\version "2.19.22" \include "voice-tkit.ly" %% Staff-oriented functions % These assume the following lists have been defined: % voice-prefixes eg "Soprano" % voice-postfixes eg "Music" % lyrics-postfixes eg "Lyrics" % lyrics-names eg "VerseOne" % variable-names eg "Time" % % The first three lists are used to generate compound % names such as "SopranoLyrics" and "SopranoInstrumentName" % The last two lists of names are used as-is. make-one-voice-staff = #(define-music-function (show-instrName name clef dynamic-direction) ((boolean? #t) voice-prefix? string? (up-or-down? "")) "Make a staff with one voice (no lyrics) show-instrName: show instrument and short instrument names? name: the default prefix for instrument name and music clef: the clef for this staff dynamic-direction: dynamics are up, down or neither" (define music (make-id name "Music")) (define instrName (make-id name "InstrumentName")) (define shortInstrName (make-id name "ShortInstrumentName")) (define midiName (make-id name "MidiInstrument")) (define dynUp (equal? dynamic-direction "Up")) (define dynDown (equal? dynamic-direction "Down")) (if music #{ \new Staff = #(string-append name "Staff") \with { instrumentName = \markup \smallCaps { #(if show-instrName (if instrName instrName name) "") } shortInstrumentName = \markup \smallCaps { #(if show-instrName (cond (shortInstrName shortInstrName) (instrName (substring instrName 0 1)) (else (substring name 0 1))) "") } midiInstrument = #(if midiName midiName "clarinet") #(cond (dynUp dynamicUp) (dynDown dynamicDown) (else dynamicNeutral)) } { #(if Key Key) \clef #clef \make-voice #name } #} (make-music 'SequentialMusic 'void #t))) make-two-voice-staff = #(define-music-function (name clef v1name v2name) (voice-prefix? string? voice-prefix? voice-prefix?) "Make a vocal staff with two voices name: the prefix to the staff name clef: the clef to use v1name: the prefix to the name of voice one v2name: the prefix to the name of voice two " (define v1music (make-id v1name "Music")) (define v2music (make-id v2name "Music")) (define instrName (make-id name "InstrumentName")) (define v1InstrName (make-id v1name "InstrumentName")) (define v2InstrName (make-id v2name "InstrumentName")) (define shortInstrName (make-id name "ShortInstrumentName")) (define v1ShortInstrName (make-id v1name "ShortInstrumentName")) (define v2ShortInstrName (make-id v2name "ShortInstrumentName")) (define v1midiName (make-id v1name "MidiInstrument")) (define v2midiName (make-id v2name "MidiInstrument")) (if (or v1music v2music) #{ << \new Staff = #(string-append name "Staff") \with { \remove "Staff_performer" instrumentName = #(if instrName #{ \markup \smallCaps #instrName #} #{ \markup \right-column \smallCaps { #(if v1music (if v1InstrName v1InstrName v1name) "") #(if v2music (if v2InstrName v2InstrName v2name) "") } #} ) shortInstrumentName = #(if shortInstrName #{ \markup \smallCaps #shortInstrName #} #{ \markup \right-column \smallCaps { #(if v1music (cond (v1ShortInstrName v1ShortInstrName) (v1InstrName (substring v1InstrName 0 1)) (else (substring v1name 0 1))) "") #(if v2music (cond (v2ShortInstrName v2ShortInstrName) (v2InstrName (substring v2InstrName 0 1)) (else (substring v2name 0 1))) "") } #} ) } << #(if Key Key) \clef #clef #(if v1music #{ \new Voice = #(string-append v1name "Voice") \with { \consists "Staff_performer" \dynamicUp midiInstrument = #(if v1midiName v1midiName "clarinet") } << #(if KeepAlive KeepAlive) #(if Time Time) #(if v2music voiceOne oneVoice) #v1music >> #} ) #(if v2music #{ \new Voice = #(string-append v2name "Voice") \with { \consists "Staff_performer" \dynamicDown midiInstrument = #(if v2midiName v2midiName "clarinet") } << #(if KeepAlive KeepAlive) #(if Time Time) #(if v1music voiceTwo oneVoice) #v2music >> #} ) >> >> #} (make-music 'SequentialMusic 'void #t)))