LibMusicXML 3.18
msrKeys.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 ___msrKeys___
14#define ___msrKeys___
15
16#include <list>
17
18#include "msrMeasureElements.h"
19
20#include "msrBasicTypes.h"
21
22
23namespace MusicXML2
24{
25
26//______________________________________________________________________________
27class msrHumdrumScotKeyItem;
28typedef SMARTP<msrHumdrumScotKeyItem> S_msrHumdrumScotKeyItem;
29
30//______________________________________________________________________________
32{
33 public:
34
35 // data types
36 // ------------------------------------------------------
37
38 enum msrHumdrumScotKeyItemKind {
39 kTraditionalKind, kHumdrumScotKind };
40
41 static string HumdrumScotKeyItemKindAsString (
42 msrHumdrumScotKeyItemKind HumdrumScotKeyItemKind);
43
44 enum msrHumdrumScotKeyItemModeKind {
45 kMajorMode, kMinorMode,
46 kIonianMode, kDorianMode, kPhrygianMode, kLydianMode,
47 kMixolydianMode, kAeolianMode, kLocrianMode };
48
49 static string HumdrumScotKeyItemModeKindAsString (
50 msrHumdrumScotKeyItemModeKind HumdrumScotKeyItemModeKind);
51
52 // creation from MusicXML
53 // ------------------------------------------------------
54
55 static SMARTP<msrHumdrumScotKeyItem> create (
56 int inputLineNumber);
57
58 protected:
59
60 // constructors/destructor
61 // ------------------------------------------------------
62
64 int inputLineNumber);
65
66 virtual ~msrHumdrumScotKeyItem ();
67
68 public:
69
70 // set and get
71 // ------------------------------------------------------
72
73 void setKeyItemDiatonicPitchKind (
74 msrDiatonicPitchKind diatonicPitchKind);
75
76 msrDiatonicPitchKind getKeyItemDiatonicPitchKind () const
77 { return fKeyDiatonicPitchKind; }
78
79 void setKeyItemAlterationKind (
80 msrAlterationKind alterationKind);
81
82 msrAlterationKind getKeyItemAlterationKind () const
83 { return fKeyAlterationKind; }
84
85 void setKeyItemOctave (int keyOctave);
86
87 int getKeyItemOctave () const
88 { return fKeyOctave; }
89
90 // services
91 // ------------------------------------------------------
92
93 bool isEqualTo (
95 otherHumdrumScotKeyItem) const;
96
97 public:
98
99 // visitors
100 // ------------------------------------------------------
101
102 virtual void acceptIn (basevisitor* v);
103 virtual void acceptOut (basevisitor* v);
104
105 virtual void browseData (basevisitor* v);
106
107 public:
108
109 // print
110 // ------------------------------------------------------
111
112 string asString () const;
113
114 virtual void print (ostream& os) const;
115
116 private:
117
118 // fields
119 // ------------------------------------------------------
120
121 msrDiatonicPitchKind fKeyDiatonicPitchKind;
122 msrAlterationKind fKeyAlterationKind;
123 int fKeyOctave;
124};
126EXP ostream& operator<< (ostream& os, const S_msrHumdrumScotKeyItem& elt);
127
128//______________________________________________________________________________
129class msrKey;
131
133{
134 public:
135
136 // data types
137 // ------------------------------------------------------
138
139 enum msrKeyKind {
140 kTraditionalKind, kHumdrumScotKind };
141
142 static string keyKindAsString (
143 msrKeyKind keyKind);
144
145 enum msrKeyModeKind {
146 kMajorMode, kMinorMode,
147 kIonianMode, kDorianMode, kPhrygianMode, kLydianMode,
148 kMixolydianMode, kAeolianMode, kLocrianMode };
149
150 static string keyModeKindAsString (
151 msrKeyModeKind keyModeKind);
152
153 // creation from MusicXML
154 // ------------------------------------------------------
155
156 static SMARTP<msrKey> createTraditional (
157 int inputLineNumber,
158 msrQuarterTonesPitchKind keyTonicPitchKind,
159 msrKeyModeKind keyModeKind,
160 int keyCancel);
161
162 static SMARTP<msrKey> createHumdrumScot (
163 int inputLineNumber);
164
165 protected:
166
167 // constructors/destructor
168 // ------------------------------------------------------
169
170 msrKey ( // for traditional keys
171 int inputLineNumber,
172 msrQuarterTonesPitchKind keyTonicPitchKind,
173 msrKeyModeKind keyModeKind,
174 int keyCancel);
175
176 msrKey ( // for Humdrum/Scot keys
177 int inputLineNumber);
178
179 virtual ~msrKey ();
180
181 public:
182
183 // set and get
184 // ------------------------------------------------------
185
186 msrKeyKind getKeyKind () const
187 { return fKeyKind; }
188
189 // traditional keys
190
191 msrQuarterTonesPitchKind
192 getKeyTonicQuarterTonesPitchKind () const
193 { return fKeyTonicQuarterTonesPitchKind; }
194
195 msrKeyModeKind getKeyModeKind () const
196 { return fKeyModeKind; }
197
198 int getKeyCancel () const
199 { return fKeyCancel; }
200
201 // Humdrum/Scot keys
202
203 // void setKeyItemsOctavesAreSpecified ()
204 // { fKeyItemsOctavesAreSpecified = true; }
205
206 bool getKeyItemsOctavesAreSpecified () const
207 { return fKeyItemsOctavesAreSpecified; }
208
209 const vector<S_msrHumdrumScotKeyItem>&
210 getHumdrumScotKeyItemsVector ()
211 { return fHumdrumScotKeyItemsVector; }
212
213
214 // services
215 // ------------------------------------------------------
216
217 bool isEqualTo (S_msrKey otherKey) const;
218
219 void appendHumdrumScotKeyItem (
221
222 public:
223
224 // visitors
225 // ------------------------------------------------------
226
227 virtual void acceptIn (basevisitor* v);
228 virtual void acceptOut (basevisitor* v);
229
230 virtual void browseData (basevisitor* v);
231
232 public:
233
234 // print
235 // ------------------------------------------------------
236
237 string asString () const;
238
239 virtual void print (ostream& os) const;
240
241 private:
242
243 // fields
244 // ------------------------------------------------------
245
246 msrKeyKind fKeyKind;
247
248 // traditional keys
249
250 msrQuarterTonesPitchKind
251 fKeyTonicQuarterTonesPitchKind;
252 msrKeyModeKind fKeyModeKind;
253 int fKeyCancel;
254
255 // Humdrum/Scot keys
256 vector<S_msrHumdrumScotKeyItem>
257 fHumdrumScotKeyItemsVector;
258 bool fKeyItemsOctavesAreSpecified;
259};
261EXP ostream& operator<< (ostream& os, const S_msrKey& elt);
262
263
264} // namespace MusicXML2
265
266
267#endif
Definition: basevisitor.h:25
Definition: msrElements.h:26
Definition: msrKeys.h:32
Definition: msrKeys.h:133
Definition: msrMeasureElements.h:24