Canorus 0.0
muselementfactory.h
Go to the documentation of this file.
1
10#ifndef MUSELEMENTFACTORY_H_
11#define MUSELEMENTFACTORY_H_
12#include "score/barline.h"
13
14#include "score/staff.h"
15#include "score/muselement.h"
16#include "score/clef.h"
17#include "score/keysignature.h"
18#include "score/timesignature.h"
19#include "score/voice.h"
20#include "score/rest.h"
21#include "score/slur.h"
23#include "score/functionmark.h"
24#include "score/lyricscontext.h"
25#include "score/syllable.h"
26#include "score/mark.h"
27#include "score/articulation.h"
28#include "score/fermata.h"
29#include "score/tempo.h"
30#include "score/ritardando.h"
31#include "score/crescendo.h"
32#include "score/repeatmark.h"
33#include "score/fingering.h"
35#include "score/diatonickey.h"
36
37class CAMusElement;
38
40public:
43
45
46 void removeMusElem( bool bReallyRemove = false );
47
48 void configureMusElem( CAMusElement &roMusElement );
49
50 inline CAMusElement *musElement() { return mpoMusElement; };
51 inline void setMusElement( CAMusElement *elt ) { mpoMusElement = elt; }
52
54 inline void emptyMusElem() { mpoMusElement = mpoEmpty; }
55
56 bool configureClef( CAStaff *staff,
57 CAMusElement *right );
58
59 bool configureKeySignature( CAStaff *staff,
60 CAMusElement *right );
61
63 CAMusElement *right );
64
65 bool configureBarline( CAStaff *staff,
66 CAMusElement *right );
67
68 bool configureRest( CAVoice *voice,
69 CAMusElement *right );
70
71
72 bool configureNote( int pitch,
73 CAVoice *voice,
74 CAMusElement *right,
75 bool addToChord
76 );
77
78 bool configureTuplet( QList<CAPlayable*> listOfNotes );
79
80 bool configureSlur( CAStaff *staff,
81 CANote *noteStart, CANote *noteEnd );
82
83 bool configureMark( CAMusElement *elt );
84
86
88 int timeStart, int timeLength );
89
92
94
97
98 void addPlayableDotted( int add, CAPlayableLength curLength );
99
101
103 { _eNoteStemDirection = eDir; }
104
105 inline int noteAccs() { return _iNoteAccs; };
106
107 inline void setNoteAccs( int iNoteAccs )
108 { _iNoteAccs = iNoteAccs; };
109
110 inline void addNoteAccs( int iAdd )
111 { if (_iNoteAccs+iAdd < 3) _iNoteAccs+= iAdd; };
112
113 inline void subNoteAccs( int iSub )
114 { if (_iNoteAccs-iSub > -3) _iNoteAccs-= iSub; };
115
117 inline void setDiatonicKeyNumberOfAccs(int accs) { _diatonicKeyNumberOfAccs = accs; }
120
121 inline int noteExtraAccs() { return _iNoteExtraAccs; };
122
123 inline void setNoteExtraAccs( int iNoteExtraAccs )
124 { _iNoteExtraAccs = iNoteExtraAccs; };
125
126 inline void addNoteExtraAccs( int iAdd )
127 { _iNoteExtraAccs += iAdd; };
128
129 inline void subNoteExtraAccs( int iSub )
130 { _iNoteExtraAccs -= iSub; };
131
133
135 { _eRestType = eType; }
136
137 inline int timeSigBeats() { return _iTimeSigBeats; }
138 inline void setTimeSigBeats( int iTimeSigBeats )
139 { _iTimeSigBeats = iTimeSigBeats; };
140
141 inline int timeSigBeat() { return _iTimeSigBeat; }
142 inline void setTimeSigBeat( int iTimeSigBeat )
143 { _iTimeSigBeat = iTimeSigBeat; };
144
146 inline void setClef( CAClef::CAPredefinedClefType eClefType )
147 { _eClef = eClefType; };
148
149 inline int clefOffset() { return _iClefOffset; } // readable offset interval, not internal offset
150 inline void setClefOffset( int offset )
151 { _iClefOffset= offset; };
152
155 { _eBarlineType = type; }
156
157 inline int tupletNumber() { return _tupletNumber; }
158 inline void setTupletNumber( int number ) { _tupletNumber = number; }
159
161 inline void setTupletActualNumber( int actualNumber ) { _tupletActualNumber = actualNumber; }
162
164 inline void setSlurType( CASlur::CASlurType type ) { _eSlurType = type; }
165
167 inline void setSlurStyle( CASlur::CASlurStyle style ) { _slurStyle = style; }
168
170 inline void setMarkType( CAMark::CAMarkType t ) { _markType = t; }
171
174
175 inline int fbmNumber() { return _fbmNumber; }
176 inline void setFBMNumber( int n ) { _fbmNumber = n; }
177 inline int fbmAccs() { return _fbmAccs; }
178 inline void setFBMAccs( int n ) { _fbmAccs= n; }
179 inline bool fbmAccsVisible() { return _fbmAccsVisible; }
180 inline void setFBMAccsVisible( int n ) { _fbmAccsVisible = n; }
181
184
187
190
191 inline bool isFMFunctionMinor() { return _fmFunctionMinor; }
192 inline void setFMFunctionMinor( bool m ) { _fmFunctionMinor = m; }
193
195 inline void setFMTonicDegreeMinor( bool m ) { _fmTonicDegreeMinor = m; }
196
197 inline bool isFMChordAreaMinor() { return _fmChordAreaMinor; }
198 inline void setFMChordAreaMinor( bool m ) { _fmChordAreaMinor = m; }
199
200 inline bool isFMEllipse() { return _fmEllipse; }
201 inline void setFMEllipse( bool e ) { _fmEllipse = e; }
202
203 inline const QString dynamicText() { return _dynamicText; }
204 inline void setDynamicText( const QString t ) { _dynamicText = t; }
205
206 inline const int dynamicVolume() { return _dynamicVolume; }
207 inline void setDynamicVolume( const int vol ) { _dynamicVolume = vol; }
208
209 inline const int instrument() { return _instrument; }
210 inline void setInstrument( const int instrument ) { _instrument = instrument; }
211
213 inline void setFermataType( const CAFermata::CAFermataType type ) { _fermataType = type; }
214
215 inline const int tempoBpm() { return _tempoBpm; }
216 inline void setTempoBpm( const int tempoBpm ) { _tempoBpm = tempoBpm; }
217
219 inline void setTempoBeat( CAPlayableLength& length ) { _tempoBeat = length; }
220
223
224 inline const int crescendoFinalVolume() { return _crescendoFinalVolume; }
225 inline void setCrescendoFinalVolume( const int v ) { _crescendoFinalVolume = v; }
226
229
232
233 inline const int repeatMarkVoltaNumber() { return _repeatMarkVoltaNumber; }
234 inline void setRepeatMarkVoltaNumber( const int n ) { _repeatMarkVoltaNumber = n; }
235
238
239 inline const bool isFingeringOriginal() { return _fingeringOriginal; }
240 inline void setFingeringOriginal( const int o ) { _fingeringOriginal = o; }
241private:
242 CAMusElement *mpoMusElement; // Newly created music element itself
243 CAMusElement *mpoEmpty; // An empty (dummy) element.
244
246 // Element creation parameters //
249
250 // Staff music elements
251 CAPlayableLength _playableLength; // Length of note/rest to be added
252 CANote::CAStemDirection _eNoteStemDirection; // Note stem direction to be inserted
253 CASlur::CASlurType _eSlurType; // Slur type to be placed
254 int _tupletNumber; // Tuplet number of notes
255 int _tupletActualNumber; // Tuplet actual number of notes
256 int _iPlayableDotted; // Number of dots to be inserted for the note/rest
257 int _iNoteExtraAccs; // Extra note accidentals for new notes which user adds/removes with +/- keys
258 int _iNoteAccs; // Note accidentals at specific coordinates updated regularily when in insert mode
259 CARest::CARestType _eRestType; // Hidden/Normal rest
260 int _diatonicKeyNumberOfAccs; // Key signature number of accidentals
261 CADiatonicKey::CAGender _diatonicKeyGender; // Major/Minor gender of the key signature
262 int _iTimeSigBeats; // Time signature number of beats to be inserted
263 int _iTimeSigBeat; // Time signature beat to be inserted
264 CAClef::CAPredefinedClefType _eClef; // Type of the clef to be inserted
265 int _iClefOffset; // Interval offset for the clef
267 CAMark::CAMarkType _markType; // Type of the mark
269 CASlur::CASlurStyle _slurStyle; // Style of the slur (solid, dotted)
270
271 // Figured bass
272 int _fbmNumber; // Figured bass number
273 int _fbmAccs; // Figured bass accidentals
274 bool _fbmAccsVisible; // Are accidentals visible
275
276 // Function Mark
278 CAFunctionMark::CAFunctionType _fmChordArea; // Chord area of the function
279 CAFunctionMark::CAFunctionType _fmTonicDegree; // Tonic degree of the function
284
285 // Marks
299};
300#endif // MUSELEMENTFACTORY_H_
CAArticulationType
Definition: articulation.h:16
CABarlineType
Definition: barline.h:19
CAPredefinedClefType
Definition: clef.h:20
CACrescendoType
Definition: crescendo.h:17
CAGender
Definition: diatonickey.h:17
CAFermataType
Definition: fermata.h:18
Definition: figuredbassmark.h:17
CAFingerNumber
Definition: fingering.h:18
Context for function marks.
Definition: functionmarkcontext.h:19
CAFunctionType
Definition: functionmark.h:20
CAMarkType
Definition: mark.h:17
creation, removal, configuration of music elements
Definition: muselementfactory.h:39
bool configureTimeSignature(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:179
bool configureClef(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:145
void setTempoBpm(const int tempoBpm)
Definition: muselementfactory.h:216
CASlur::CASlurStyle slurStyle()
Definition: muselementfactory.h:166
void setNoteStemDirection(CANote::CAStemDirection eDir)
Definition: muselementfactory.h:102
void setCrescendoType(const CACrescendo::CACrescendoType t)
Definition: muselementfactory.h:228
CADiatonicKey::CAGender _diatonicKeyGender
Definition: muselementfactory.h:261
void setRitardandoType(CARitardando::CARitardandoType t)
Definition: muselementfactory.h:222
void setClef(CAClef::CAPredefinedClefType eClefType)
Definition: muselementfactory.h:146
bool configureRest(CAVoice *voice, CAMusElement *right)
Definition: muselementfactory.cpp:442
bool configureBarline(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:197
void emptyMusElem()
Definition: muselementfactory.h:54
void setDiatonicKeyGender(CADiatonicKey::CAGender g)
Definition: muselementfactory.h:119
bool isFMFunctionMinor()
Definition: muselementfactory.h:191
bool configureMark(CAMusElement *elt)
Definition: muselementfactory.cpp:329
CAArticulation::CAArticulationType _articulationType
Definition: muselementfactory.h:268
~CAMusElementFactory()
Definition: muselementfactory.cpp:110
CAFunctionMark::CAFunctionType _fmChordArea
Definition: muselementfactory.h:278
int _dynamicVolume
Definition: muselementfactory.h:287
CAPlayableLength & playableLength()
Definition: muselementfactory.h:93
const bool isFingeringOriginal()
Definition: muselementfactory.h:239
CABarline::CABarlineType barlineType()
Definition: muselementfactory.h:153
void removeMusElem(bool bReallyRemove=false)
Definition: muselementfactory.cpp:119
bool _fmChordAreaMinor
Definition: muselementfactory.h:281
void setTupletNumber(int number)
Definition: muselementfactory.h:158
bool isFMEllipse()
Definition: muselementfactory.h:200
const int tempoBpm()
Definition: muselementfactory.h:215
int _iNoteAccs
Definition: muselementfactory.h:258
void setArticulationType(CAArticulation::CAArticulationType t)
Definition: muselementfactory.h:173
void setFMChordAreaMinor(bool m)
Definition: muselementfactory.h:198
CANote::CAStemDirection _eNoteStemDirection
Definition: muselementfactory.h:252
CARest::CARestType _eRestType
Definition: muselementfactory.h:259
CARest::CARestType restType()
Definition: muselementfactory.h:132
void setFermataType(const CAFermata::CAFermataType type)
Definition: muselementfactory.h:213
CASlur::CASlurStyle _slurStyle
Definition: muselementfactory.h:269
CAFunctionMark::CAFunctionType _fmFunction
Definition: muselementfactory.h:277
CAMusElement * mpoMusElement
Definition: muselementfactory.h:242
int timeSigBeats()
Definition: muselementfactory.h:137
void setDynamicText(const QString t)
Definition: muselementfactory.h:204
CAFunctionMark::CAFunctionType fmChordArea()
Definition: muselementfactory.h:185
void setDiatonicKeyNumberOfAccs(int accs)
Definition: muselementfactory.h:117
CAArticulation::CAArticulationType articulationType()
Definition: muselementfactory.h:172
CAFunctionMark::CAFunctionType fmTonicDegree()
Definition: muselementfactory.h:188
void setTimeSigBeat(int iTimeSigBeat)
Definition: muselementfactory.h:142
int clefOffset()
Definition: muselementfactory.h:149
CASlur::CASlurType _eSlurType
Definition: muselementfactory.h:253
int fbmNumber()
Definition: muselementfactory.h:175
CANote::CAStemDirection noteStemDirection()
Definition: muselementfactory.h:100
void setFBMNumber(int n)
Definition: muselementfactory.h:176
const int dynamicVolume()
Definition: muselementfactory.h:206
int _diatonicKeyNumberOfAccs
Definition: muselementfactory.h:260
void setBarlineType(CABarline::CABarlineType type)
Definition: muselementfactory.h:154
bool _fbmAccsVisible
Definition: muselementfactory.h:274
void setSlurType(CASlur::CASlurType type)
Definition: muselementfactory.h:164
CAFermata::CAFermataType _fermataType
Definition: muselementfactory.h:289
CARepeatMark::CARepeatMarkType _repeatMarkType
Definition: muselementfactory.h:295
void setFMChordArea(CAFunctionMark::CAFunctionType c)
Definition: muselementfactory.h:186
int _crescendoFinalVolume
Definition: muselementfactory.h:293
CAMusElement * createMusElem()
CAClef::CAPredefinedClefType clef()
Definition: muselementfactory.h:145
CAClef::CAPredefinedClefType _eClef
Definition: muselementfactory.h:264
int fbmAccs()
Definition: muselementfactory.h:177
void configureMusElem(CAMusElement &roMusElement)
void setMusElementType(CAMusElement::CAMusElementType eMEType)
Definition: muselementfactory.h:91
void addPlayableDotted(int add, CAPlayableLength curLength)
Definition: muselementfactory.cpp:126
void setFMFunctionMinor(bool m)
Definition: muselementfactory.h:192
void setSlurStyle(CASlur::CASlurStyle style)
Definition: muselementfactory.h:167
int _iClefOffset
Definition: muselementfactory.h:265
int noteExtraAccs()
Definition: muselementfactory.h:121
CACrescendo::CACrescendoType _crescendoType
Definition: muselementfactory.h:294
bool configureNote(int pitch, CAVoice *voice, CAMusElement *right, bool addToChord)
Definition: muselementfactory.cpp:216
const CARitardando::CARitardandoType ritardandoType()
Definition: muselementfactory.h:221
int _instrument
Definition: muselementfactory.h:288
void setFBMAccs(int n)
Definition: muselementfactory.h:178
const CARepeatMark::CARepeatMarkType repeatMarkType()
Definition: muselementfactory.h:230
const CAFingering::CAFingerNumber fingeringFinger()
Definition: muselementfactory.h:236
int _iPlayableDotted
Definition: muselementfactory.h:256
bool configureKeySignature(CAStaff *staff, CAMusElement *right)
Definition: muselementfactory.cpp:161
void setNoteAccs(int iNoteAccs)
Definition: muselementfactory.h:107
bool configureFiguredBassNumber(CAFiguredBassMark *fbm)
Definition: muselementfactory.cpp:466
void setFMTonicDegreeMinor(bool m)
Definition: muselementfactory.h:195
void addNoteExtraAccs(int iAdd)
Definition: muselementfactory.h:126
CAMark::CAMarkType _markType
Definition: muselementfactory.h:267
int tupletActualNumber()
Definition: muselementfactory.h:160
void setFingeringOriginal(const int o)
Definition: muselementfactory.h:240
void setTupletActualNumber(int actualNumber)
Definition: muselementfactory.h:161
void setClefOffset(int offset)
Definition: muselementfactory.h:150
int _iTimeSigBeat
Definition: muselementfactory.h:263
CASlur::CASlurType slurType()
Definition: muselementfactory.h:163
void setRestType(CARest::CARestType eType)
Definition: muselementfactory.h:134
void setMusElement(CAMusElement *elt)
Definition: muselementfactory.h:51
void setPlayableLength(CAPlayableLength &playableLength)
Definition: muselementfactory.h:95
int _fingeringOriginal
Definition: muselementfactory.h:298
CADiatonicKey::CAGender diatonicKeyGender()
Definition: muselementfactory.h:118
int _tupletActualNumber
Definition: muselementfactory.h:255
int _repeatMarkVoltaNumber
Definition: muselementfactory.h:296
void setTimeSigBeats(int iTimeSigBeats)
Definition: muselementfactory.h:138
bool configureSlur(CAStaff *staff, CANote *noteStart, CANote *noteEnd)
Definition: muselementfactory.cpp:293
int _iTimeSigBeats
Definition: muselementfactory.h:262
CAMusElement * musElement()
Definition: muselementfactory.h:50
void setFMEllipse(bool e)
Definition: muselementfactory.h:201
int diatonicKeyNumberOfAccs()
Definition: muselementfactory.h:116
int timeSigBeat()
Definition: muselementfactory.h:141
void cloneMusElem()
Definition: muselementfactory.h:53
CAMusElement::CAMusElementType musElementType()
Definition: muselementfactory.h:90
void setFBMAccsVisible(int n)
Definition: muselementfactory.h:180
bool fbmAccsVisible()
Definition: muselementfactory.h:179
QString _dynamicText
Definition: muselementfactory.h:286
void setFingeringFinger(const CAFingering::CAFingerNumber f)
Definition: muselementfactory.h:237
CAMusElement::CAMusElementType _musElementType
Definition: muselementfactory.h:248
CAPlayableLength _playableLength
Definition: muselementfactory.h:251
bool _fmFunctionMinor
Definition: muselementfactory.h:280
const CACrescendo::CACrescendoType crescendoType()
Definition: muselementfactory.h:227
void setTempoBeat(CAPlayableLength &length)
Definition: muselementfactory.h:219
void setCrescendoFinalVolume(const int v)
Definition: muselementfactory.h:225
bool isFMChordAreaMinor()
Definition: muselementfactory.h:197
void subNoteExtraAccs(int iSub)
Definition: muselementfactory.h:129
void setRepeatMarkVoltaNumber(const int n)
Definition: muselementfactory.h:234
void setNoteExtraAccs(int iNoteExtraAccs)
Definition: muselementfactory.h:123
void setInstrument(const int instrument)
Definition: muselementfactory.h:210
CAFunctionMark::CAFunctionType _fmTonicDegree
Definition: muselementfactory.h:279
CAMark::CAMarkType markType()
Definition: muselementfactory.h:169
int noteAccs()
Definition: muselementfactory.h:105
void setFMFunction(CAFunctionMark::CAFunctionType f)
Definition: muselementfactory.h:183
CAMusElementFactory()
Definition: muselementfactory.cpp:57
const int instrument()
Definition: muselementfactory.h:209
void setDynamicVolume(const int vol)
Definition: muselementfactory.h:207
bool configureTuplet(QList< CAPlayable * > listOfNotes)
Definition: muselementfactory.cpp:504
void subNoteAccs(int iSub)
Definition: muselementfactory.h:113
void setFMTonicDegree(CAFunctionMark::CAFunctionType td)
Definition: muselementfactory.h:189
int tupletNumber()
Definition: muselementfactory.h:157
const int repeatMarkVoltaNumber()
Definition: muselementfactory.h:233
CAPlayableLength & tempoBeat()
Definition: muselementfactory.h:218
int _iNoteExtraAccs
Definition: muselementfactory.h:257
const int crescendoFinalVolume()
Definition: muselementfactory.h:224
bool _fmTonicDegreeMinor
Definition: muselementfactory.h:282
int _fbmNumber
Definition: muselementfactory.h:272
bool _fmEllipse
Definition: muselementfactory.h:283
const CAFermata::CAFermataType fermataType()
Definition: muselementfactory.h:212
void setRepeatMarkType(const CARepeatMark::CARepeatMarkType t)
Definition: muselementfactory.h:231
bool isFMTonicDegreeMinor()
Definition: muselementfactory.h:194
void addNoteAccs(int iAdd)
Definition: muselementfactory.h:110
int _tempoBpm
Definition: muselementfactory.h:291
CARitardando::CARitardandoType _ritardandoType
Definition: muselementfactory.h:292
int _tupletNumber
Definition: muselementfactory.h:254
CABarline::CABarlineType _eBarlineType
Definition: muselementfactory.h:266
CAFingering::CAFingerNumber _fingeringFinger
Definition: muselementfactory.h:297
CAPlayableLength _tempoBeat
Definition: muselementfactory.h:290
CAFunctionMark::CAFunctionType fmFunction()
Definition: muselementfactory.h:182
const QString dynamicText()
Definition: muselementfactory.h:203
void setMarkType(CAMark::CAMarkType t)
Definition: muselementfactory.h:170
bool configureFunctionMark(CAFunctionMarkContext *fmc, int timeStart, int timeLength)
Definition: muselementfactory.cpp:484
CAMusElement * mpoEmpty
Definition: muselementfactory.h:243
int _fbmAccs
Definition: muselementfactory.h:273
An abstract class which represents every music element in the score.
Definition: muselement.h:21
virtual CAMusElement * clone(CAContext *context=0)=0
CAMusElementType
Definition: muselement.h:23
Represents a note in the score.
Definition: note.h:18
CAStemDirection
Direction of the note's stem.
Definition: note.h:20
Musical length of notes and rests.
Definition: playablelength.h:16
CARepeatMarkType
Definition: repeatmark.h:17
CARestType
Definition: rest.h:17
CARitardandoType
Definition: ritardando.h:17
CASlurStyle
Definition: slur.h:27
CASlurType
Definition: slur.h:33
Represents a staff in the sheet.
Definition: staff.h:25
Class which represents a voice in the staff.
Definition: voice.h:23