LibMusicXML 3.18
msrTablatures.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 ___msrTablatures___
14#define ___msrTablatures___
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 // data types
32 // ------------------------------------------------------
33
34 enum msrBarreTypeKind {
35 kBarreTypeNone,
36 kBarreTypeStart, kBarreTypeStop };
37
38 static string barreTypeKindAsString (
39 msrBarreTypeKind barreTypeKind);
40
41/*
42 <frame-note>
43 <string>6</string>
44 <fret>0</fret>
45 </frame-note>
46*/
47
48 // creation from MusicXML
49 // ------------------------------------------------------
50
51 static SMARTP<msrFrameNote> create (
52 int inputLineNumber,
53 int frameNoteStringNumber,
54 int frameNoteFretNumber,
55 int frameNoteFingering,
56 msrBarreTypeKind frameNoteBarreTypeKind);
57
58 protected:
59
60 // constructors/destructor
61 // ------------------------------------------------------
62
64 int inputLineNumber,
65 int frameNoteStringNumber,
66 int frameNoteFretNumber,
67 int frameNoteFingering,
68 msrBarreTypeKind frameNoteBarreTypeKind);
69
70 virtual ~msrFrameNote ();
71
72 public:
73
74 // set and get
75 // ------------------------------------------------------
76
77 int getFrameNoteStringNumber () const
78 { return fFrameNoteStringNumber; }
79
80 int getFrameNoteFretNumber () const
81 { return fFrameNoteFretNumber; }
82
83 int getFrameNoteFingering () const
84 { return fFrameNoteFingering; }
85
86 msrBarreTypeKind getFrameNoteBarreTypeKind () const
87 { return fFrameNoteBarreTypeKind; }
88
89 // services
90 // ------------------------------------------------------
91
92 public:
93
94 // visitors
95 // ------------------------------------------------------
96
97 virtual void acceptIn (basevisitor* v);
98 virtual void acceptOut (basevisitor* v);
99
100 virtual void browseData (basevisitor* v);
101
102 public:
103
104 // print
105 // ------------------------------------------------------
106
107 string asString () const;
108
109 virtual void print (ostream& os) const;
110
111 private:
112
113 // fields
114 // ------------------------------------------------------
115
116 int fFrameNoteStringNumber;
117 int fFrameNoteFretNumber;
118
119 int fFrameNoteFingering;
120
121 msrBarreTypeKind fFrameNoteBarreTypeKind;
122};
124EXP ostream& operator<< (ostream& os, const S_msrFrameNote& elt);
125
126//______________________________________________________________________________
127struct msrBarre {
128 public:
129
130 // constructors/destructor
131 // ------------------------------------------------------
132
133 msrBarre (
134 int barreStartString,
135 int barreStopString,
136 int barreFretNumber)
137 {
138 fBarreStartString = barreStartString;
139 fBarreStopString = barreStopString;
140 fBarreFretNumber = barreFretNumber;
141 }
142
143 // fields
144 // ------------------------------------------------------
145
146 int fBarreStartString;
147 int fBarreStopString;
148 int fBarreFretNumber;
149};
150
151//______________________________________________________________________________
152class msrFrame : public msrElement
153{
154 public:
155
156 // creation from MusicXML
157 // ------------------------------------------------------
158
159 static SMARTP<msrFrame> create (
160 int inputLineNumber,
161 int frameStringsNumber,
162 int frameFretsNumber,
163 int frameFirstFretNumber);
164
165 protected:
166
167 // constructors/destructor
168 // ------------------------------------------------------
169
170 msrFrame (
171 int inputLineNumber,
172 int frameStringsNumber,
173 int frameFretsNumber,
174 int frameFirstFretNumber);
175
176 virtual ~msrFrame ();
177
178 public:
179
180 // set and get
181 // ------------------------------------------------------
182
183
184 int getFrameStringsNumber () const
185 { return fFrameStringsNumber; }
186
187 int getFrameFretsNumber () const
188 { return fFrameFretsNumber; }
189
190 int getFrameFirstFretNumber () const
191 { return fFrameFirstFretNumber; }
192
193 const list<S_msrFrameNote>&
194 getFrameFrameNotesList ()
195 { return fFrameFrameNotesList; }
196
197 const list<msrBarre>& getFrameBarresList ()
198 { return fFrameBarresList; }
199
200 bool getFrameContainsFingerings () const
201 { return fFrameContainsFingerings; }
202
203 public:
204
205 // public services
206 // ------------------------------------------------------
207
208 void appendFrameNoteToFrame (
209 S_msrFrameNote frameNote);
210
211 private:
212
213 // private services
214 // ------------------------------------------------------
215
216 void appendBarreToFrame ( // JMI
217 msrBarre barre)
218 {
219 fFrameBarresList.push_back (barre);
220 }
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 int fFrameStringsNumber;
247 int fFrameFretsNumber;
248 int fFrameFirstFretNumber;
249
250 list<S_msrFrameNote> fFrameFrameNotesList;
251
252 list<msrBarre > fFrameBarresList;
253
254 // a barre start remains pending
255 // until the matching stop is appended to the frame
256 stack<S_msrFrameNote> fPendingBarreStartFrameNotes;
257
258 // optimizing computation
259 bool fFrameContainsFingerings;
260};
262EXP ostream& operator<< (ostream& os, const S_msrFrame& elt);
263
264
265} // namespace MusicXML2
266
267
268#endif
the smart pointer implementation
Definition: smartpointer.h:58
Definition: basevisitor.h:25
Definition: msrElements.h:26
Definition: msrTablatures.h:28
Definition: msrTablatures.h:153
Definition: msrTablatures.h:127