]> git.donarmstrong.com Git - lilypond.git/blob - scm/define-music-properties.scm
Merge branch 'master' into lilypond/translation
[lilypond.git] / scm / define-music-properties.scm
1 ;;;; This file is part of LilyPond, the GNU music typesetter.
2 ;;;;
3 ;;;; Copyright (C) 1998--2011  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 (define (music-property-description symbol type? description)
20   (if (not (equal? #f (object-property symbol 'music-doc)))
21       (ly:error (_ "symbol ~S redefined") symbol))
22   (set-object-property! symbol 'music-type? type?)
23   (set-object-property! symbol 'music-doc description)
24   symbol)
25
26 (define-public all-music-properties
27   (map
28    (lambda (x) (apply music-property-description x))
29    `(
30      (absolute-octave ,integer?
31                       "The absolute octave for a octave check note.")
32      (alteration ,number? "Alteration for figured bass.")
33      (articulation-type ,string? "Key for script definitions alist.
34
35 TODO: Consider making type into symbol.")
36      (articulations ,ly:music-list?
37                     "Articulation events specifically for this note.")
38      (associated-context ,string? "Name of the Voice context associated with
39 this @code{\\lyricsto} section.")
40      (augmented ,boolean? "This figure is for an augmented figured bass
41 (with @code{+} sign).")
42      (augmented-slash ,boolean? "This figure is for an augmented figured bass
43 (back-slashed number).")
44
45      (bass ,boolean? "Set if this note is a bass note in a chord.")
46      (beat-structure ,list? "A beatStructure to be used in autobeaming.")
47      (bracket-start ,boolean? "Start a bracket here.
48
49 TODO: Use SpanEvents?")
50      (bracket-stop ,boolean? "Stop a bracket here.")
51      (break-penalty ,number? "Penalty for line break hint.")
52      (break-permission ,symbol?
53                        "Whether to allow, forbid or force a line break.")
54
55      (cautionary ,boolean? "If set, this alteration needs a
56 cautionary accidental.")
57      (change-to-id ,string? "Name of the context to change to.")
58      (change-to-type ,symbol? "Type of the context to change to.")
59      (compress-procedure ,procedure? "Compress this music expression.
60 Arg@tie{}1: the music, arg@tie{}2: factor.")
61      (context-id ,string? "Name of context.")
62      (context-type ,symbol?  "Type of context.")
63      (create-new ,boolean? "Create a fresh context.")
64
65      (delta-step ,number? "How much should a fall change pitch?")
66      (denominator ,integer? "Denominator in a time signature.")
67      (descend-only ,boolean? "If set, this @code{\\context} only descends
68 in the context tree.")
69      (digit ,integer? "Digit for fingering.")
70      (diminished ,boolean? "This bass figure should be slashed.")
71      (direction ,ly:dir? "Print this up or down?")
72      (drum-type ,symbol? "Which percussion instrument to play this note on.")
73      (duration ,ly:duration? "Duration of this note or lyric.")
74
75      (element ,ly:music? "The single child of a Music_wrapper music object,
76 or the body of a repeat.")
77      (elements ,ly:music-list? "A list of elements for sequential of
78 simultaneous music, or the alternatives of repeated music.")
79      (elements-callback ,procedure? "Return a list of children, for use by
80 a sequential iterator.  Takes a single music parameter.")
81      (error-found ,boolean?
82                   "If true, a parsing error was found in this expression.")
83
84      (figure ,integer? "A bass figure.")
85      (force-accidental ,boolean? "If set, a cautionary accidental should
86 always be printed on this note.")
87      (forced-type ,symbol? "Override for the part-combiner.")
88
89      (grob-property ,symbol? "The symbol of the grob property to set.")
90      (grob-property-path ,list? "A list of symbols, locating a nested grob
91 property, e.g., @code{(beamed-lengths details)}.")
92      (grob-value ,scheme? "The value of the grob property to set.")
93
94      (input-tag ,scheme? "Arbitrary marker to relate input and output.")
95      (inversion ,boolean? "If set, this chord note is inverted.")
96      (iterator-ctor ,procedure? "Function to construct a
97 @code{music-event-iterator} object for this music.")
98
99      (label ,markup? "Label of a mark.")
100      (last-pitch ,ly:pitch? "The last pitch after relativization.")
101      (length ,ly:moment? "The duration of this music.")
102      (length-callback ,procedure? "How to compute the duration of this music.
103 This property can only be defined as initializer in
104 @file{scm/@/define-music-types.scm}.")
105      (line-break-permission ,symbol? "When the music is at top-level,
106 whether to allow, forbid or force a line break.")
107
108      (metronome-count ,number-or-pair? "How many beats in a minute?")
109
110      (name ,symbol? "Name of this music object.")
111      (no-continuation ,boolean? "If set, disallow continuation lines.")
112      (numerator ,integer? "Numerator of a time signature.")
113
114      (octavation ,integer? "This pitch was octavated by how many octaves?
115 For chord inversions, this is negative.")
116      (once ,boolean? "Apply this operation only during one time step?")
117      (origin ,ly:input-location? "Where was this piece of music defined?")
118      (original-chord ,ly:music? "Original chord of a repeated chord.
119 Used by repeated chords in \\relative mode, to determine the first note octave")
120      (ottava-number ,integer? "The octavation for @code{\\ottava}.")
121
122      (page-break-permission ,symbol? "When the music is at top-level,
123 whether to allow, forbid or force a page break.")
124      (page-label ,symbol? "The label of a page marker.")
125      (page-marker ,boolean? "If true, and the music expression is found at
126 top-level, a page marker object is instanciated instead of a score.")
127      (page-turn-permission ,symbol? "When the music is at top-level,
128 whether to allow, forbid or force a page turn.")
129      (parenthesize ,boolean? "Enclose resulting objects in parentheses?")
130      (partial-duration ,ly:duration? "The length of a partial measure as a
131 duration.")
132      (part-combine-status ,symbol? "Change to what kind of state?
133 Options are @code{solo1}, @code{solo2} and @code{unisono}.")
134      (pitch ,ly:pitch? "The pitch of this note.")
135      (pitch-alist ,list? "A list of pitches jointly forming the scale
136 of a key signature.")
137      (pop-first ,boolean? "Do a revert before we try to do a override
138 on some grob property.")
139      (prob-property ,symbol? "The symbol of the prob property to set.")
140      (procedure ,procedure? "The function to run with @code{\\applycontext}.
141 It must take a single argument, being the context.")
142      (property-operations ,list? "Do these operations for instantiating
143 the context.")
144
145      (quoted-context-id ,string? "The ID of the context to direct quotes to,
146 e.g., @code{cue}.")
147      (quoted-context-type ,symbol? "The name of the context to
148 direct quotes to, e.g., @code{Voice}.")
149      (quoted-events ,vector? "A vector of with @code{moment} and
150 @code{event-list} entries.")
151      (quoted-music-clef ,string? "The clef of the voice to quote.")
152      (quoted-music-name ,string? "The name of the voice to quote.")
153      (quoted-transposition ,ly:pitch? "The pitch used for the quote,
154 overriding @code{\\transposition}.")
155      (quoted-voice-direction ,ly:dir? "Should the quoted voice be up-stem
156 or down-stem?")
157
158      (repeat-count ,integer? "Do a @code{\\repeat} how often?")
159
160      (span-direction ,ly:dir? "Does this start or stop a spanner?")
161      (span-type ,symbol? "What kind of dynamic spanner should be created?
162 Options are @code{'text} and @code{'hairpin}.")
163      (span-text ,markup? "The displayed text for dynamic text spanners
164 (e.g., cresc.)")
165      (split-list ,list? "Splitting moments for part combiner.")
166      (start-callback ,procedure? "Function to compute the negative length
167 of starting grace notes.  This property can only be defined as initializer
168 in @file{scm/@/define-music-types.scm}.")
169      (string-number ,integer? "The number of the string in
170 a @code{StringNumberEvent}.")
171      (symbol ,symbol? "Grob name to perform an override or revert on.")
172
173      (tags ,list? "List of symbols that for denoting extra details, e.g.,
174 @code{\\tag #'part @dots{}} could tag a piece of music as only being active
175 in a part.")
176      (tempo-unit ,ly:duration? "The unit for the metronome count.")
177      (text ,markup? "Markup expression to be printed.")
178      (to-relative-callback ,procedure? "How to transform a piece of music
179 to relative pitches.")
180      (tonic ,ly:pitch? "Base of the scale.")
181      (tremolo-type ,integer? "Speed of tremolo, e.g., 16 for @code{c4:16}.")
182      (trill-pitch ,ly:pitch? "Pitch of other note of the trill.")
183      (tweaks ,list? "An alist of properties to override in the backend
184 for the grob made of this event.")
185      (type ,symbol? "The type of this music object.
186 Determines iteration in some cases.")
187      (types ,list? "The types of this music object; determines by what
188 engraver this music expression is processed.")
189
190      (untransposable ,boolean? "If set, this music is not transposed.")
191
192      (value ,scheme? "Assignment value for a translation property.")
193      (void ,boolean? "If this property is @code{#t}, then the
194 music expression is to be discarded by the toplevel music handler.")
195
196      (what ,symbol? "What to change for auto-change.
197
198 FIXME: Naming.")
199
200      (X-offset ,number?
201                "Offset of resulting grob; only used for balloon texts.")
202
203      (Y-offset ,number?
204                "Offset of resulting grob; only used for balloon texts.")
205     )))