LibMusicXML  3.18
msrArticulations.h
1 /*
2  MusicXML Library
3  Copyright (C) Grame 2006-2013
4 
5  This Source Code Form is subject to the terms of the Mozilla Public
6  License, v. 2.0. If a copy of the MPL was not distributed with this
7  file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
10  research@grame.fr
11 */
12 
13 #ifndef ___msrArticulations___
14 #define ___msrArticulations___
15 
16 #include "msrElements.h"
17 
18 #include "msrBasicTypes.h"
19 
20 
21 namespace MusicXML2
22 {
23 
24 //______________________________________________________________________________
26 {
27  public:
28 
29  // data types
30  // ------------------------------------------------------
31 
32  enum msrArticulationKind {
33  kAccent, kBreathMark, kCaesura,
34  kSpiccato,
35  kStaccato, kStaccatissimo,
36  kStress, kUnstress,
37  kDetachedLegato,
38  kStrongAccent, kTenuto,
39  kFermata, // barline ??? JMI
40  kArpeggiato, kNonArpeggiato,
41  kDoit, kFalloff, kPlop, kScoop};
42 
43  static string articulationKindAsString (
44  msrArticulationKind articulationKind);
45 
46  // creation from MusicXML
47  // ------------------------------------------------------
48 
49  static SMARTP<msrArticulation> create (
50  int inputLineNumber,
51  msrArticulationKind articulationKind,
52  msrPlacementKind articulationPlacementKind);
53 
54  protected:
55 
56  // constructors/destructor
57  // ------------------------------------------------------
58 
60  int inputLineNumber,
61  msrArticulationKind articulationKind,
62  msrPlacementKind articulationPlacementKind);
63 
64  virtual ~msrArticulation ();
65 
66  public:
67 
68  // set and get
69  // ------------------------------------------------------
70 
71  msrArticulationKind getArticulationKind () const
72  { return fArticulationKind; }
73 
74  msrPlacementKind getArticulationPlacementKind () const
75  { return fArticulationPlacementKind; }
76 
77  // services
78  // ------------------------------------------------------
79 
80  virtual string articulationKindAsString () const;
81 
82  virtual string articulationPlacementKindAsString () const;
83 
84  public:
85 
86  // visitors
87  // ------------------------------------------------------
88 
89  virtual void acceptIn (basevisitor* v);
90  virtual void acceptOut (basevisitor* v);
91 
92  virtual void browseData (basevisitor* v);
93 
94  public:
95 
96  // print
97  // ------------------------------------------------------
98 
99  virtual void print (ostream& os) const;
100 
101  protected:
102 
103  // fields
104  // ------------------------------------------------------
105 
106  msrArticulationKind fArticulationKind;
107 
108  msrPlacementKind fArticulationPlacementKind;
109 };
111 EXP ostream& operator<< (ostream& os, const S_msrArticulation& elt);
112 
113 //______________________________________________________________________________
115 {
116  public:
117 
118  // data types
119  // ------------------------------------------------------
120 
121  enum msrFermataKind {
122  kNormalFermataKind, kAngledFermataKind, kSquareFermataKind};
123 
124  static string fermataKindAsString (
125  msrFermataKind fermataKind);
126 
127  enum msrFermataTypeKind {
128  kFermataTypeNone,
129  kFermataTypeUpright, kFermataTypeInverted };
130 
131  static string fermataTypeKindAsString (
132  msrFermataTypeKind fermataTypeKind);
133 
134  // creation from MusicXML
135  // ------------------------------------------------------
136 
137  static SMARTP<msrFermata> create (
138  int inputLineNumber,
139  msrFermataKind fermataKind,
140  msrFermataTypeKind fermataTypeKind);
141 
142  protected:
143 
144  // constructors/destructor
145  // ------------------------------------------------------
146 
147  msrFermata (
148  int inputLineNumber,
149  msrFermataKind fermataKind,
150  msrFermataTypeKind fermataTypeKind);
151 
152  virtual ~msrFermata ();
153 
154  public:
155 
156  // set and get
157  // ------------------------------------------------------
158 
159  msrFermataKind getFermataKind () const
160  { return fFermataKind; }
161 
162  msrFermataTypeKind getFermataTypeKind () const
163  { return fFermataTypeKind; }
164 
165  // services
166  // ------------------------------------------------------
167 
168  string asString () const;
169 
170  public:
171 
172  // visitors
173  // ------------------------------------------------------
174 
175  virtual void acceptIn (basevisitor* v);
176  virtual void acceptOut (basevisitor* v);
177 
178  virtual void browseData (basevisitor* v);
179 
180  public:
181 
182  // print
183  // ------------------------------------------------------
184 
185  virtual void print (ostream& os) const;
186 
187  private:
188 
189  // fields
190  // ------------------------------------------------------
191 
192  msrFermataKind fFermataKind;
193 
194  msrFermataTypeKind fFermataTypeKind;
195 };
197 EXP ostream& operator<< (ostream& os, const S_msrFermata& elt);
198 
199 //______________________________________________________________________________
201 {
202  public:
203 
204  // creation from MusicXML
205  // ------------------------------------------------------
206 
207  static SMARTP<msrArpeggiato> create (
208  int inputLineNumber,
209  msrPlacementKind arpeggiatoPlacementKind,
210  msrDirectionKind arpeggiatoDirectionKind,
211  int arpeggiatoNumber);
212 
213  protected:
214 
215  // constructors/destructor
216  // ------------------------------------------------------
217 
218  msrArpeggiato (
219  int inputLineNumber,
220  msrPlacementKind arpeggiatoPlacementKind,
221  msrDirectionKind arpeggiatoDirectionKind,
222  int arpeggiatoNumber);
223 
224  virtual ~msrArpeggiato ();
225 
226  public:
227 
228  // set and get
229  // ------------------------------------------------------
230 
231  msrDirectionKind getArpeggiatoDirectionKind () const
232  { return fArpeggiatoDirectionKind; }
233 
234  int getArpeggiatoNumber () const
235  { return fArpeggiatoNumber; }
236 
237  // services
238  // ------------------------------------------------------
239 
240  virtual string arpeggiatoDirectionKindAsString () const;
241 
242  public:
243 
244  // visitors
245  // ------------------------------------------------------
246 
247  virtual void acceptIn (basevisitor* v);
248  virtual void acceptOut (basevisitor* v);
249 
250  virtual void browseData (basevisitor* v);
251 
252  public:
253 
254  // print
255  // ------------------------------------------------------
256 
257  virtual void print (ostream& os) const;
258 
259  private:
260 
261  // fields
262  // ------------------------------------------------------
263 
264  msrDirectionKind fArpeggiatoDirectionKind;
265 
266  int fArpeggiatoNumber;
267 };
269 EXP ostream& operator<< (ostream& os, const S_msrArpeggiato& elt);
270 
271 //______________________________________________________________________________
273 {
274  public:
275 
276  // data types
277  // ------------------------------------------------------
278 
279  enum msrNonArpeggiatoTypeKind {
280  kNonArpeggiatoTypeNone,
281  kNonArpeggiatoTypeTop, kNonArpeggiatoTypeBottom };
282 
283  static string nonArpeggiatoTypeKindAsString (
284  msrNonArpeggiatoTypeKind nonArpeggiatoTypeKind);
285 
286  // creation from MusicXML
287  // ------------------------------------------------------
288 
289  static SMARTP<msrNonArpeggiato> create (
290  int inputLineNumber,
291  msrPlacementKind nonArpeggiatoPlacementKind,
292  msrNonArpeggiatoTypeKind nonArpeggiatoTypeKind,
293  int nonArpeggiatoNumber);
294 
295  protected:
296 
297  // constructors/destructor
298  // ------------------------------------------------------
299 
301  int inputLineNumber,
302  msrPlacementKind nonArpeggiatoPlacementKind,
303  msrNonArpeggiatoTypeKind nonArpeggiatoTypeKind,
304  int nonArpeggiatoNumber);
305 
306  virtual ~msrNonArpeggiato ();
307 
308  public:
309 
310  // set and get
311  // ------------------------------------------------------
312 
313  msrNonArpeggiatoTypeKind
314  getNonArpeggiatoTypeKind () const
315  { return fNonArpeggiatoTypeKind; }
316 
317  int getNonArpeggiatoNumber () const
318  { return fNonArpeggiatoNumber; }
319 
320  // services
321  // ------------------------------------------------------
322 
323  virtual string nonArpeggiatoTypeKindAsString () const;
324 
325  public:
326 
327  // visitors
328  // ------------------------------------------------------
329 
330  virtual void acceptIn (basevisitor* v);
331  virtual void acceptOut (basevisitor* v);
332 
333  virtual void browseData (basevisitor* v);
334 
335  public:
336 
337  // print
338  // ------------------------------------------------------
339 
340  virtual void print (ostream& os) const;
341 
342  private:
343 
344  // fields
345  // ------------------------------------------------------
346 
347  msrNonArpeggiatoTypeKind
348  fNonArpeggiatoTypeKind;
349 
350  int fNonArpeggiatoNumber;
351 };
353 EXP ostream& operator<< (ostream& os, const S_msrNonArpeggiato& elt);
354 
355 
356 } // namespace MusicXML2
357 
358 
359 #endif
MusicXML2::msrArpeggiato
Definition: msrArticulations.h:201
MusicXML2::msrArticulation
Definition: msrArticulations.h:26
MusicXML2::SMARTP
the smart pointer implementation
Definition: smartpointer.h:58
MusicXML2::basevisitor
Definition: basevisitor.h:25
MusicXML2::msrFermata
Definition: msrArticulations.h:115
MusicXML2::msrElement
Definition: msrElements.h:26
MusicXML2::msrNonArpeggiato
Definition: msrArticulations.h:273