1;;;; This file is part of LilyPond, the GNU music typesetter.
2;;;;
3;;;; Copyright (C) 1998--2020  Han-Wen Nienhuys <hanwen@xs4all.nl>
4;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
5;;;;
6;;;; LilyPond is free software: you can redistribute it and/or modify
7;;;; it under the terms of the GNU General Public License as published by
8;;;; the Free Software Foundation, either version 3 of the License, or
9;;;; (at your option) any later version.
10;;;;
11;;;; LilyPond is distributed in the hope that it will be useful,
12;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14;;;; GNU General Public License for more details.
15;;;;
16;;;; You should have received a copy of the GNU General Public License
17;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
18
19
20;; The interfaces defined here generally have no code (e.g.,
21;; dynamic-interface), or have callbacks defined entirely in
22;; scheme.  Others interfaces are defined in lily/*.cc with the
23;; ADD_INTERFACE function.
24
25;; should include default value?
26
27
28(ly:add-interface
29 'accidental-suggestion-interface
30 "An accidental, printed as a suggestion (typically: vertically over a
31note)."
32 '())
33
34(ly:add-interface
35 'ambitus-interface
36 "The line between note heads for a pitch range."
37 '(gap
38   length-fraction
39   maximum-gap
40   note-heads
41   thickness))
42
43(ly:add-interface
44 'bar-line-interface
45 "Print a special bar symbol.  It replaces the regular bar
46symbol with a special symbol.  The argument @var{bartype}
47is a string which specifies the kind of bar line to print.
48
49The list of allowed glyphs and predefined bar lines can be
50found in @file{scm/bar-line.scm}.
51
52@code{gap} is used for the gaps in dashed bar lines."
53 '(allow-span-bar
54   bar-extent
55   gap
56   glyph
57   glyph-name
58   hair-thickness
59   has-span-bar
60   kern
61   rounded
62   segno-kern
63   thick-thickness))
64
65(ly:add-interface
66 'bass-figure-interface
67 "A bass figure text."
68 '(implicit))
69
70(ly:add-interface
71 'bass-figure-alignment-interface
72 "Align a bass figure."
73 '())
74
75(ly:add-interface
76 'bend-after-interface
77 "A doit or drop."
78 '(delta-position
79   thickness))
80
81(ly:add-interface
82 'clef-modifier-interface
83 "The number describing transposition of the clef, placed below
84or above clef sign. Usually this is 8 (octave transposition)
85or 15 (two octaves), but LilyPond allows any integer here."
86 '(clef-alignments))
87
88(ly:add-interface
89 'duration-line-interface
90 "A line lasting for the duration of a rhythmic event."
91 '(details))
92
93(ly:add-interface
94 'dynamic-interface
95 "Any kind of loudness sign."
96 '())
97
98(ly:add-interface
99 'dynamic-line-spanner-interface
100 "Dynamic line spanner."
101 '(avoid-slur))
102
103(ly:add-interface
104 'dynamic-text-interface
105 "An absolute text dynamic."
106 '(right-padding))
107
108(ly:add-interface
109 'dynamic-text-spanner-interface
110 "Dynamic text spanner."
111 '(text))
112
113(ly:add-interface
114 'episema-interface
115 "An episema line."
116 '())
117
118(ly:add-interface
119 'finger-interface
120 "A fingering instruction."
121 '())
122
123(ly:add-interface
124 'footnote-interface
125 "Make a footnote."
126 '(automatically-numbered
127   footnote
128   footnote-text
129   numbering-assertion-function))
130
131(ly:add-interface
132 'footnote-spanner-interface
133 "Make a footnote spanner."
134 '(footnote-text
135   spanner-placement))
136
137(ly:add-interface
138 'fret-diagram-interface
139 "A fret diagram"
140 '(align-dir
141   dot-placement-list
142   fret-diagram-details
143   size
144   thickness))
145
146(ly:add-interface
147 'glissando-interface
148 "A glissando."
149 '(glissando-index))
150
151(ly:add-interface
152 'grace-spacing-interface
153 "Keep track of durations in a run of grace notes."
154 '(columns
155   common-shortest-duration))
156
157(ly:add-interface
158 'horizontal-bracket-text-interface
159 "Label for an analysis bracket."
160 '(bracket columns))
161
162(ly:add-interface
163 'inline-accidental-interface
164 "An inlined accidental (i.e. normal accidentals, cautionary
165accidentals)."
166 '())
167
168(ly:add-interface
169 'instrument-specific-markup-interface
170 "Instrument-specific markup (like fret boards or harp pedal diagrams)."
171 '(fret-diagram-details graphical harp-pedal-details size thickness))
172
173(ly:add-interface
174 'key-cancellation-interface
175 "A key cancellation."
176 '())
177
178(ly:add-interface
179 'ligature-head-interface
180 "A note head that can become part of a ligature."
181 '())
182
183(ly:add-interface
184 'ligature-bracket-interface
185 "A bracket indicating a ligature in the original edition."
186 '(width thickness height))
187
188(ly:add-interface
189 'ligature-interface
190 "A ligature."
191 '())
192
193(ly:add-interface
194 'lyric-interface
195 "Any object that is related to lyrics."
196 '())
197
198(ly:add-interface
199 'lyric-syllable-interface
200 "A single piece of lyrics."
201 '())
202
203(ly:add-interface
204 'mark-interface
205 "A rehearsal mark."
206 '())
207
208(ly:add-interface
209 'measure-counter-interface
210 "A counter for numbering measures."
211 '(columns
212   count-from
213   spacing-pair))
214
215(ly:add-interface
216 'metronome-mark-interface
217 "A metronome mark."
218 '())
219
220(ly:add-interface
221 'multi-measure-interface
222 "Multi measure rest, and the text or number that is printed over it."
223 '(bound-padding))
224
225(ly:add-interface
226 'multi-measure-rest-number-interface
227 "Multi measure rest number that is printed over a rest."
228 '())
229
230(ly:add-interface
231 'note-name-interface
232 "Note names."
233 '())
234
235(ly:add-interface
236 'number-interface
237 "Numbers."
238 '(number-type))
239
240(ly:add-interface
241 'only-prebreak-interface
242 "Kill this grob after the line breaking process."
243 '())
244
245(ly:add-interface
246 'outside-staff-axis-group-interface
247 "A vertical axis group on which outside-staff skyline calculations are done."
248 '(outside-staff-placement-directive vertical-skyline-elements))
249
250(ly:add-interface
251 'outside-staff-interface
252 "A grob that could be placed outside staff."
253 '(outside-staff-horizontal-padding outside-staff-padding outside-staff-priority))
254
255(ly:add-interface
256 'parentheses-interface
257 "Parentheses for other objects."
258 '(padding
259   stencils))
260
261(ly:add-interface
262 'percent-repeat-interface
263 "Beat, Double and single measure repeats."
264 '(dot-negative-kern
265   slash-negative-kern
266   slope
267   thickness))
268
269(ly:add-interface
270 'piano-pedal-interface
271 "A piano pedal sign."
272 '())
273
274(ly:add-interface
275 'piano-pedal-script-interface
276 "A piano pedal sign, fixed size."
277 '())
278
279(ly:add-interface
280 'pitched-trill-interface
281 "A note head to indicate trill pitches."
282 '(accidental-grob))
283
284(ly:add-interface
285 'rhythmic-grob-interface
286 "Any object with a duration.  Used to determine which grobs are
287interesting enough to maintain a hara-kiri staff."
288 '())
289
290(ly:add-interface
291 'spacing-options-interface
292 "Supports setting of spacing variables."
293 '(spacing-increment
294   shortest-duration-space))
295
296(ly:add-interface
297 'span-bar-interface
298 "A bar line that is spanned between other barlines.
299  This interface is used for bar lines that connect different
300  staves."
301 '(glyph-name
302   elements
303   pure-Y-common
304   pure-relevant-grobs
305   pure-relevant-items
306   pure-relevant-spanners))
307
308(ly:add-interface
309 'stanza-number-interface
310 "A stanza number, to be put in from of a lyrics line."
311 '())
312
313(ly:add-interface
314 'string-number-interface
315 "A string number instruction."
316 '())
317
318(ly:add-interface
319 'stroke-finger-interface
320 "A right hand finger instruction."
321 '(digit-names))
322
323(ly:add-interface
324 'system-start-text-interface
325 "Text in front of the system."
326 '(long-text
327   self-alignment-X
328   self-alignment-Y
329   text))
330
331(ly:add-interface
332 'tab-note-head-interface
333 "A note head in tablature."
334 '(details display-cautionary span-start))
335
336(ly:add-interface
337 'time-signature-interface
338 "A time signature, in different styles.  The following values for @code{style} are are recognized:
339
340 @table @code
341 @item C
342 4/4 and 2/2 are typeset as C and struck C, respectively. All other time signatures are written with two digits. The value @code{default} is equivalent to @code{C}.
343 @item neomensural
344 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are typeset with neo-mensural style mensuration marks.  All other time signatures are written with two digits.
345 @item mensural
346 2/2, 3/2, 2/4, 3/4, 4/4, 6/4, 9/4, 4/8, 6/8, and 9/8 are typeset with mensural style mensuration marks.  All other time signatures are written with two digits.
347 @item single-digit
348 All time signatures are typeset with a single digit, e.g., 3/2 is written as 3.
349 @item numbered
350 All time signatures are typeset with two digits.
351 @end table"
352 '(fraction style))
353
354(ly:add-interface
355 'trill-spanner-interface
356 "A trill spanner."
357 '())
358
359(ly:add-interface
360 'trill-pitch-accidental-interface
361 "An accidental for trill pitch."
362 '())
363
364(ly:add-interface
365 'unbreakable-spanner-interface
366 "A spanner that should not be broken across line breaks.  Override
367with @code{breakable=##t}."
368 '(breakable))
369
370(ly:add-interface
371 'volta-interface
372 "A volta repeat."
373 '())
374