LibMusicXML  3.18
msrInstruments.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 ___msrInstruments___
14 #define ___msrInstruments___
15 
16 #include <list>
17 
18 #include "msrMeasureElements.h"
19 
20 #include "msrBasicTypes.h"
21 
22 
23 namespace MusicXML2
24 {
25 
26 //______________________________________________________________________________
28 {
29  public:
30 
31  // creation from MusicXML
32  // ------------------------------------------------------
33 
34  static SMARTP<msrStringTuning> create (
35  int inputLineNumber,
36  int stringTuningNumber,
37  msrDiatonicPitchKind stringTuningDiatonicPitchKind,
38  msrAlterationKind stringTuningAlterationKind,
39  int stringTuningOctave);
40 
41  protected:
42 
43  // constructors/destructor
44  // ------------------------------------------------------
45 
47  int inputLineNumber,
48  int stringTuningNumber,
49  msrDiatonicPitchKind stringTuningDiatonicPitchKind,
50  msrAlterationKind stringTuningAlterationKind,
51  int stringTuningOctave);
52 
53  virtual ~msrStringTuning ();
54 
55  public:
56 
57  // set and get
58  // ------------------------------------------------------
59 
60  int getStringTuningNumber () const
61  { return fStringTuningNumber; }
62 
63  msrDiatonicPitchKind getStringTuningDiatonicPitchKind () const
64  { return fStringTuningDiatonicPitchKind; }
65 
66  msrAlterationKind getStringTuningAlterationKind () const
67  { return fStringTuningAlterationKind; }
68 
69  int getStringTuningOctave () const
70  { return fStringTuningOctave; }
71 
72  // services
73  // ------------------------------------------------------
74 
75  string stringTuningKindAsString () const;
76 
77  public:
78 
79  // visitors
80  // ------------------------------------------------------
81 
82  virtual void acceptIn (basevisitor* v);
83  virtual void acceptOut (basevisitor* v);
84 
85  virtual void browseData (basevisitor* v);
86 
87  public:
88 
89  // print
90  // ------------------------------------------------------
91 
92  virtual void print (ostream& os) const;
93 
94  private:
95 
96  // fields
97  // ------------------------------------------------------
98 
99  int fStringTuningNumber;
100 
101  msrDiatonicPitchKind fStringTuningDiatonicPitchKind;
102  msrAlterationKind fStringTuningAlterationKind;
103  int fStringTuningOctave;
104 };
106 EXP ostream& operator<< (ostream& os, const S_msrStringTuning& elt);
107 
108 //______________________________________________________________________________
110 {
111  public:
112 
113  // data types
114  // ------------------------------------------------------
115 
116  enum msrScordaturaKind {
117  kScordaturaNone,
118  kScordaturaUp, kScordaturaDown,
119  kScordaturaStop, kScordaturaContinue };
120 
121  static string scordaturaKindAsString (
122  msrScordaturaKind scordaturaKind);
123 
124  // creation from MusicXML
125  // ------------------------------------------------------
126 
127  static SMARTP<msrScordatura> create (
128  int inputLineNumber);
129 
130  protected:
131 
132  // constructors/destructor
133  // ------------------------------------------------------
134 
135  msrScordatura (
136  int inputLineNumber);
137 
138  virtual ~msrScordatura ();
139 
140  public:
141 
142  // set and get
143  // ------------------------------------------------------
144 
145  const list<S_msrStringTuning>&
146  getScordaturaStringTuningsList ()
147  { return fScordaturaStringTuningsList; }
148 
149  // services
150  // ------------------------------------------------------
151 
152  void addStringTuningToScordatura (
153  S_msrStringTuning stringTuning);
154 
155  public:
156 
157  // visitors
158  // ------------------------------------------------------
159 
160  virtual void acceptIn (basevisitor* v);
161  virtual void acceptOut (basevisitor* v);
162 
163  virtual void browseData (basevisitor* v);
164 
165  public:
166 
167  // print
168  // ------------------------------------------------------
169 
170  virtual void print (ostream& os) const;
171 
172  private:
173 
174  // fields
175  // ------------------------------------------------------
176 
177  list<S_msrStringTuning>
178  fScordaturaStringTuningsList;
179 };
181 EXP ostream& operator<< (ostream& os, const S_msrScordatura& elt);
182 
183 //______________________________________________________________________________
185 {
186  public:
187 
188  // creation from MusicXML
189  // ------------------------------------------------------
190 
191  static SMARTP<msrAccordionRegistration> create (
192  int inputLineNumber,
193  int highDotsNumber,
194  int middleDotsNumber,
195  int lowDotsNumber);
196 
197  protected:
198 
199  // constructors/destructor
200  // ------------------------------------------------------
201 
203  int inputLineNumber,
204  int highDotsNumber,
205  int middleDotsNumber,
206  int lowDotsNumber);
207 
208  virtual ~msrAccordionRegistration ();
209 
210  public:
211 
212  // set and get
213  // ------------------------------------------------------
214 
215  int getHighDotsNumber () const
216  { return fHighDotsNumber; }
217 
218  int getMiddleDotsNumber () const
219  { return fMiddleDotsNumber; }
220 
221  int getLowDotsNumber () const
222  { return fLowDotsNumber; }
223 
224  // services
225  // ------------------------------------------------------
226 
227  string asString () const;
228 
229  public:
230 
231  // visitors
232  // ------------------------------------------------------
233 
234  virtual void acceptIn (basevisitor* v);
235  virtual void acceptOut (basevisitor* v);
236 
237  virtual void browseData (basevisitor* v);
238 
239  public:
240 
241  // print
242  // ------------------------------------------------------
243 
244  virtual void print (ostream& os) const;
245 
246  private:
247 
248  // fields
249  // ------------------------------------------------------
250 
251  // see https://de.wikipedia.org/wiki/Register_%28Akkordeon%29
252  // for the meaning of the dots numbers
253 
254  int fHighDotsNumber;
255  int fMiddleDotsNumber;
256  int fLowDotsNumber;
257 };
259 EXP ostream& operator<< (ostream& os, const S_msrAccordionRegistration& elt);
260 
261 //______________________________________________________________________________
263 {
264  public:
265 
266  // creation from MusicXML
267  // ------------------------------------------------------
268 
269  static SMARTP<msrHarpPedalsTuning> create (
270  int inputLineNumber);
271 
272  SMARTP<msrHarpPedalsTuning> createHarpPedalsTuningNewbornClone ();
273 
274  SMARTP<msrHarpPedalsTuning> createHarpPedalsTuningDeepCopy ();
275 
276  protected:
277 
278  // constructors/destructor
279  // ------------------------------------------------------
280 
282  int inputLineNumber);
283 
285 
286  public:
287 
288  // set and get
289  // ------------------------------------------------------
290 
291  const map<msrDiatonicPitchKind, msrAlterationKind>&
292  getHarpPedalsAlterationKindsMap ()
293  { return fHarpPedalsAlterationKindsMap; }
294 
295  // services
296  // ------------------------------------------------------
297 
298  void addPedalTuning (
299  int intputLineNumber,
300  msrDiatonicPitchKind diatonicPitchKind,
301  msrAlterationKind alterationKind);
302 
303  public:
304 
305  // visitors
306  // ------------------------------------------------------
307 
308  virtual void acceptIn (basevisitor* v);
309  virtual void acceptOut (basevisitor* v);
310 
311  virtual void browseData (basevisitor* v);
312 
313  public:
314 
315  // print
316  // ------------------------------------------------------
317 
318  string asString () const;
319 
320  virtual void print (ostream& os) const;
321 
322  public:
323 
324  // fields
325  // ------------------------------------------------------
326 
327  map<msrDiatonicPitchKind, msrAlterationKind>
328  fHarpPedalsAlterationKindsMap;
329 };
331 EXP ostream& operator<< (ostream& os, const S_msrHarpPedalsTuning& elt);
332 
333 //______________________________________________________________________________
335 {
336  public:
337 
338  // data types
339  // ------------------------------------------------------
340 
341  enum msrPedalTypeKind {
342  kPedalStart, kPedalContinue, kPedalChange, kPedalStop,
343  k_NoPedalType };
344 
345  static string pedalTypeKindAsString (
346  msrPedalTypeKind pedalTypeKind);
347 
348  enum msrPedalLineKind {
349  kPedalLineYes, kPedalLineNo};
350 
351  static string pedalLineKindAsString (
352  msrPedalLineKind pedalLineKind);
353 
354  enum msrPedalSignKind {
355  kPedalSignYes, kPedalSignNo};
356 
357  static string pedalSignKindAsString (
358  msrPedalSignKind pedalSignKind);
359 
360  // creation from MusicXML
361  // ------------------------------------------------------
362 
363  static SMARTP<msrPedal> create (
364  int inputLineNumber,
365  msrPedalTypeKind pedalTypeKind,
366  msrPedalLineKind pedalLineKind,
367  msrPedalSignKind pedalSignKind);
368 
369  protected:
370 
371  // constructors/destructor
372  // ------------------------------------------------------
373 
374  msrPedal (
375  int inputLineNumber,
376  msrPedalTypeKind pedalTypeKind,
377  msrPedalLineKind pedalLineKind,
378  msrPedalSignKind pedalSignKind);
379 
380  virtual ~msrPedal ();
381 
382  public:
383 
384  // set and get
385  // ------------------------------------------------------
386 
387  msrPedalTypeKind getPedalTypeKind () const
388  { return fPedalTypeKind; }
389 
390  msrPedalLineKind getPedalLineKind () const
391  { return fPedalLineKind; }
392 
393  msrPedalSignKind getPedalSignKind () const
394  { return fPedalSignKind; }
395 
396  // services
397  // ------------------------------------------------------
398 
399  public:
400 
401  // visitors
402  // ------------------------------------------------------
403 
404  virtual void acceptIn (basevisitor* v);
405  virtual void acceptOut (basevisitor* v);
406 
407  virtual void browseData (basevisitor* v);
408 
409  public:
410 
411  // print
412  // ------------------------------------------------------
413 
414  string pedalTypeAsString () const;
415 
416  string pedalLineAsString () const;
417 
418  string pedalSignAsString () const;
419 
420  virtual void print (ostream& os) const;
421 
422  private:
423 
424  // fields
425  // ------------------------------------------------------
426 
427  msrPedalTypeKind fPedalTypeKind;
428  msrPedalLineKind fPedalLineKind;
429  msrPedalSignKind fPedalSignKind;
430 };
432 EXP ostream& operator<< (ostream& os, const S_msrPedal& elt);
433 
434 //______________________________________________________________________________
436 {
437  public:
438 
439  // creation from MusicXML
440  // ------------------------------------------------------
441 
442  static SMARTP<msrDamp> create (
443  int inputLineNumber);
444 
445  protected:
446 
447  // constructors/destructor
448  // ------------------------------------------------------
449 
450  msrDamp (
451  int inputLineNumber);
452 
453  virtual ~msrDamp ();
454 
455  public:
456 
457  // set and get
458  // ------------------------------------------------------
459 
460  // services
461  // ------------------------------------------------------
462 
463  public:
464 
465  // visitors
466  // ------------------------------------------------------
467 
468  virtual void acceptIn (basevisitor* v);
469  virtual void acceptOut (basevisitor* v);
470 
471  virtual void browseData (basevisitor* v);
472 
473  public:
474 
475  // print
476  // ------------------------------------------------------
477 
478  virtual void print (ostream& os) const;
479 
480  private:
481 
482  // fields
483  // ------------------------------------------------------
484 };
485 typedef SMARTP<msrDamp> S_msrDamp;
486 EXP ostream& operator<< (ostream& os, const S_msrDamp& elt);
487 
488 //______________________________________________________________________________
490 {
491  public:
492 
493  // creation from MusicXML
494  // ------------------------------------------------------
495 
496  static SMARTP<msrDampAll> create (
497  int inputLineNumber);
498 
499  protected:
500 
501  // constructors/destructor
502  // ------------------------------------------------------
503 
504  msrDampAll (
505  int inputLineNumber);
506 
507  virtual ~msrDampAll ();
508 
509  public:
510 
511  // set and get
512  // ------------------------------------------------------
513 
514  // services
515  // ------------------------------------------------------
516 
517  public:
518 
519  // visitors
520  // ------------------------------------------------------
521 
522  virtual void acceptIn (basevisitor* v);
523  virtual void acceptOut (basevisitor* v);
524 
525  virtual void browseData (basevisitor* v);
526 
527  public:
528 
529  // print
530  // ------------------------------------------------------
531 
532  virtual void print (ostream& os) const;
533 
534  private:
535 
536  // fields
537  // ------------------------------------------------------
538 };
540 EXP ostream& operator<< (ostream& os, const S_msrDampAll& elt);
541 
542 
543 } // namespace MusicXML2
544 
545 
546 #endif
MusicXML2::msrStringTuning
Definition: msrInstruments.h:28
MusicXML2::msrDamp
Definition: msrInstruments.h:436
MusicXML2::msrScordatura
Definition: msrInstruments.h:110
MusicXML2::msrMeasureElement
Definition: msrMeasureElements.h:24
MusicXML2::msrPedal
Definition: msrInstruments.h:335
MusicXML2::msrAccordionRegistration
Definition: msrInstruments.h:185
MusicXML2::SMARTP
the smart pointer implementation
Definition: smartpointer.h:58
MusicXML2::msrHarpPedalsTuning
Definition: msrInstruments.h:263
MusicXML2::basevisitor
Definition: basevisitor.h:25
MusicXML2::msrElement
Definition: msrElements.h:26
MusicXML2::msrDampAll
Definition: msrInstruments.h:490