LibMusicXML 3.18
msrDivisions.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 ___msrDivisions___
14#define ___msrDivisions___
15
16#include <list>
17
18#include "msrElements.h"
19
20#include "msrBasicTypes.h"
21
22
23namespace MusicXML2
24{
25
26//______________________________________________________________________________
28{
29 public:
30
31 // creation from MusicXML
32 // ------------------------------------------------------
33
34 static SMARTP<msrDivisions> create (
35 int inputLineNumber,
36 int divisionsPerQuarterNote);
37
38 SMARTP<msrDivisions> createDivisionsNewbornClone (); // JMI
39
40 private:
41
42 // initialisation
43 // ------------------------------------------------------
44
45 void initializeDivisions ();
46
47 protected:
48
49 // constructors/destructor
50 // ------------------------------------------------------
51
53 int inputLineNumber,
54 int divisionsPerQuarterNote);
55
56 virtual ~msrDivisions ();
57
58 public:
59
60 // set and get
61 // ------------------------------------------------------
62
63 void setDivisionsPerQuarterNote ( // JMI
64 int divisionsPerQuarterNote)
65 {
66 fDivisionsPerQuarterNote =
67 divisionsPerQuarterNote;
68 }
69
70 int getDivisionsPerQuarterNote () const
71 { return fDivisionsPerQuarterNote; }
72
73 // services
74 // ------------------------------------------------------
75
76 string divisionsAsString () const;
77
78 // durations
79 int durationKindAsDivisions (
80 int inputLineNumber,
81 msrDurationKind durationKind);
82
83 void printDurationKindsDivisions (ostream& os);
84
85 // MSR strings
86 string divisionsAsMsrString (
87 int inputLineNumber,
88 int divisions,
89 int& numberOfDotsNeeded);
90
91 string divisionsAsMsrString (
92 int inputLineNumber,
93 int divisions);
94/* JMI
95 string wholeNotesAsMsrString (
96 int inputLineNumber,
97 rational wholeNotes,
98 int& numberOfDotsNeeded);
99
100 string wholeNotesAsMsrString (
101 int inputLineNumber,
102 rational wholeNotes);
103*/
104 string tupletDivisionsAsMsrString (
105 int inputLineNumber,
106 int divisions,
107 int actualNotes,
108 int normalNotes);
109
110 string tupletWholeNotesAsMsrString (
111 int inputLineNumber,
112 rational wholeNotes,
113 int actualNotes,
114 int normalNotes);
115
116/* JMI
117 void testDivisionsAndDurations (); // JMI
118 void testTupletSoundingWholeNotesAndDurations ();
119*/
120
121 public:
122
123 // visitors
124 // ------------------------------------------------------
125
126 virtual void acceptIn (basevisitor* v);
127 virtual void acceptOut (basevisitor* v);
128
129 virtual void browseData (basevisitor* v);
130
131 public:
132
133 // print
134 // ------------------------------------------------------
135
136 virtual void print (ostream& os) const;
137
138 private:
139
140 // fields
141 // ------------------------------------------------------
142
143 int fDivisionsPerQuarterNote;
144
145 list<pair<msrDurationKind, int> >
146 fDurationKindsToDivisions;
147};
149EXP ostream& operator<< (ostream& os, const S_msrDivisions& elt);
150
151
152} // namespace MusicXML2
153
154
155#endif
Definition: basevisitor.h:25
Definition: msrDivisions.h:28
Definition: msrElements.h:26
Rational number representation.
Definition: rational.h:25