Hippolyte et Aricie : acte 3 fin
[nenuvar.git] / common / staff.ily
blob700f86eb04c12f9cd25ebb53e7725392d9b418eb
1 #(use-modules (ice-9 format))
2 #(define-public gen-unique-context
3   ;; Generate a uniqueSchemeContextXX symbol, that may be (hopefully) unique.
4   (let ((var-idx -1))
5     (lambda ()
6       (set! var-idx (1+ var-idx))
7       (string->symbol
8        (format #f "uniqueSchemeContext~a"
9                (list->string (map (lambda (chr)
10                                     (integer->char (+ (char->integer #\a)
11                                                       (- (char->integer chr)
12                                                          (char->integer #\0)))))
13                                   (string->list (number->string var-idx)))))))))
15 haraKiri = \with {
16   \override VerticalAxisGroup #'remove-empty = ##t
17   \override VerticalAxisGroup #'remove-first = ##f
18   \override Beam #'auto-knee-gap = #'()
19   \consists "Hara_kiri_engraver"
20   \remove "Axis_group_engraver"
23 haraKiriFirst = \with {
24   \override VerticalAxisGroup #'remove-empty = ##t
25   \override VerticalAxisGroup #'remove-first = ##t
26   \override Beam #'auto-knee-gap = #'()
27   \consists "Hara_kiri_engraver"
28   \remove "Axis_group_engraver"
31 tinyStaff = \with {
32   \override StaffSymbol #'staff-space = #(magstep -2)
33   fontSize = #-2
36 smallStaff = \with {
37   \override StaffSymbol #'staff-space = #(magstep -1)
38   fontSize = #-1
41 withLyrics =
42 #(define-music-function (parser location music lyrics) (ly:music? ly:music?)
43    (let ((name (symbol->string (gen-unique-context))))
44      #{  << \context Voice = $name \with { autoBeaming = ##f } $music
45             \lyricsto $name \new Lyrics $lyrics
46             >> #}))
48 withLyricsB =
49 #(define-music-function (parser location music lyrics1 lyrics2) (ly:music? ly:music? ly:music?)
50    (let ((name (symbol->string (gen-unique-context))))
51      #{  << \context Voice = $name \with { autoBeaming = ##f } $music
52             \lyricsto $name \new Lyrics $lyrics1
53             \lyricsto $name \new Lyrics $lyrics2
54             >> #}))
56 withRecit =
57 #(define-music-function (parser location music lyrics) (ly:music? ly:music?)
58    (let ((name (symbol->string (gen-unique-context))))
59      #{  << \context Voice = $name \with { autoBeaming = ##f } <<
60             \set Staff . explicitClefVisibility = #end-of-line-invisible
61             \override Staff . Clef #'full-size-change = ##t
62             %%\override Staff . Clef #'break-visibility = #end-of-line-invisible
63             \override Score.BreakAlignment #'break-align-orders =
64             ##(; end-of-line:
65                (instrument-name left-edge ambitus breathing-sign
66                 clef key-cancellation key-signature
67                 time-signature custos staff-bar)
68                ; unbroken
69                (instrument-name left-edge ambitus breathing-sign
70                 staff-bar clef key-cancellation key-signature
71                 staff time-signature custos)
72                ; begin of line
73                (instrument-name left-edge ambitus breathing-sign
74                 clef key-cancellation key-signature staff-bar
75                 time-signature custos))
76             $music >>
77             \lyricsto $name \new Lyrics $lyrics
78           >> #}))
80 newHaraKiriStaff =
81 #(define-music-function (parser location music) (ly:music?)
82    (make-music
83     'ContextSpeccedMusic
84     'create-new #t
85     'property-operations '((push VerticalAxisGroup #t remove-empty)
86                            (push VerticalAxisGroup #f remove-first)
87                            (push Beam () auto-knee-gap)
88                            (consists "Hara_kiri_engraver")
89                            (remove "Axis_group_engraver"))
90     'context-type 'Staff
91     'element music))
93 newTinyHaraKiriStaff =
94 #(define-music-function (parser location music) (ly:music?)
95    (make-music
96     'ContextSpeccedMusic
97     'create-new #t
98     'property-operations `((push VerticalAxisGroup #t remove-empty)
99                            (push VerticalAxisGroup #f remove-first)
100                            (push Beam () auto-knee-gap)
101                            (consists "Hara_kiri_engraver")
102                            (remove "Axis_group_engraver")
103                            (remove "Page_turn_engraver")
104                            (push StaffSymbol ,(magstep -2) staff-space)
105                            (assign fontSize -2))
106     'context-type 'Staff
107     'element music))
109 newSmallHaraKiriStaff =
110 #(define-music-function (parser location music) (ly:music?)
111    (make-music
112     'ContextSpeccedMusic
113     'create-new #t
114     'property-operations `((push VerticalAxisGroup #t remove-empty)
115                            (push VerticalAxisGroup #f remove-first)
116                            (push Beam () auto-knee-gap)
117                            (consists "Hara_kiri_engraver")
118                            (remove "Axis_group_engraver")
119                            (remove "Page_turn_engraver")
120                            (push StaffSymbol ,(magstep -1) staff-space)
121                            (assign fontSize -1))
122     'context-type 'Staff
123     'element music))
125 newHaraKiriStaffB =
126 #(define-music-function (parser location music) (ly:music?)
127    (make-music
128     'ContextSpeccedMusic
129     'create-new #t
130     'property-operations '((push VerticalAxisGroup #t remove-empty)
131                            (push VerticalAxisGroup #t remove-first)
132                            (push Beam () auto-knee-gap)
133                            (consists "Hara_kiri_engraver")
134                            (remove "Axis_group_engraver"))
135     'context-type 'Staff
136     'element music))
138 newTinyHaraKiriStaffB =
139 #(define-music-function (parser location music) (ly:music?)
140    (make-music
141     'ContextSpeccedMusic
142     'create-new #t
143     'property-operations `((push VerticalAxisGroup #t remove-empty)
144                            (push VerticalAxisGroup #t remove-first)
145                            (push Beam () auto-knee-gap)
146                            (consists "Hara_kiri_engraver")
147                            (remove "Axis_group_engraver")
148                            (remove "Page_turn_engraver")
149                            (push StaffSymbol ,(magstep -2) staff-space)
150                            (assign fontSize -2))
151     'context-type 'Staff
152     'element music))
154 newSmallHaraKiriStaffB =
155 #(define-music-function (parser location music) (ly:music?)
156    (make-music
157     'ContextSpeccedMusic
158     'create-new #t
159     'property-operations `((push VerticalAxisGroup #t remove-empty)
160                            (push VerticalAxisGroup #t remove-first)
161                            (push Beam () auto-knee-gap)
162                            (consists "Hara_kiri_engraver")
163                            (remove "Axis_group_engraver")
164                            (remove "Page_turn_engraver")
165                            (push StaffSymbol ,(magstep -1) staff-space)
166                            (assign fontSize -1))
167     'context-type 'Staff
168     'element music))
170 newSmallStaff = 
171 #(define-music-function (parser location music) (ly:music?)
172    #{ \new Staff \with {
173         fontSize = #-1
174         \override StaffSymbol #'staff-space = #(magstep -1)
175       } << $music >> #})
177 newTinyStaff = 
178 #(define-music-function (parser location music) (ly:music?)
179    #{ \new Staff \with {
180         fontSize = #-2
181         \override StaffSymbol #'staff-space = #(magstep -2)
182         \remove "Page_turn_engraver"
183       } << $music >> #})
185 dessusHauteContreTailleQuinteBasse =
186 #(define-music-function (parser location) ()
187   #{ \new StaffGroup <<
188     \new Staff << \global \clef "dessus" \includeNotes "dessus" >>
189     \new Staff << \global \clef "haute-contre" \includeNotes "haute-contre" >>
190     \new Staff << \global \clef "taille" \includeNotes "taille" >>
191     \new Staff << \global \clef "quinte" \includeNotes "quinte" >>
192     \new Staff << \global \clef "basse" \includeNotes "basse" >>
193   >> #})
195 dessusHauteContreTailleBasse =
196 #(define-music-function (parser location) ()
197   #{ \new StaffGroup <<
198     \new Staff << \global \clef "dessus" \includeNotes "dessus" >>
199     \new Staff << \global \clef "haute-contre" \includeNotes "haute-contre" >>
200     \new Staff << \global \clef "taille" \includeNotes "taille" >>
201     \new Staff << \global \clef "basse" \includeNotes "basse" >>
202   >> #})