GUIDOLib  1.7.7
Guido Engine Internal Documentation
ARFactory.h
1 #ifndef ARFactory_H
2 #define ARFactory_H
3 
4 /*
5  GUIDO Library
6  Copyright (C) 2002 Holger Hoos, Juergen Kilian, Kai Renz
7  Copyright (C) 2003-2017 Grame
8 
9  This Source Code Form is subject to the terms of the Mozilla Public
10  License, v. 2.0. If a copy of the MPL was not distributed with this
11  file, You can obtain one at http://mozilla.org/MPL/2.0/.
12 
13  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
14  research@grame.fr
15 
16 */
17 
18 #include <stack>
19 
20 #include "kf_ilist.h" // required
21 
22 #include "ARDefine.h"
23 #include "ARMusicalTag.h"
24 #include "ARMusicalVoice.h"
25 #include "ARAuto.h"
26 
27 class ARAlter;
28 class ARChordTag;
29 class ARCluster;
30 class ARCrescendo;
31 class ARCue;
32 class ARDiminuendo;
33 class ARDotFormat;
34 class ARGlissando;
35 class ARGrace;
36 class ARKey;
37 class ARMeter;
38 class ARMusic;
39 class ARMusicalEvent;
40 class ARMusicalObject;
41 class ARMusicalVoice;
42 class ARNote;
43 class ARNoteFormat;
44 class AROctava;
45 class ARRepeatBegin;
46 class ARRestFormat;
47 class ARStaff;
48 class ARTHead;
49 class ARTremolo;
50 class ARTrill;
51 class ARTStem;
52 class ARTuplet;
53 
54 typedef KF_IPointerList<ARMusicalTag> TagPointerList; // todo: replace by stl container (easy)
55 
56 
60 class ARFactory
61 {
62  public:
63  ARFactory();
64  virtual ~ARFactory();
65 
66  virtual void createMusic();
67  virtual ARMusic * getMusic();
68 
69  virtual void createVoice();
70  virtual void addVoice();
71 
72  virtual void createChord();
73  virtual void addChord();
74 
75  virtual void initChordNote();
76 
77  virtual void createEvent( const char * name );
78  virtual void createTab( int string, const char * disp );
79  virtual void addEvent();
80 
81  virtual void addSharp();
82  virtual void addFlat();
83 
84  virtual void setPoints( int pointCount );
85  virtual void setAccidentals( TYPE_ACCIDENTALS accidentals );
86 
87  virtual void setRegister(TYPE_REGISTER newRegister);
88 
89  virtual void setNumerator(int newNumerator);
90  virtual void setDenominator(int newDenominator);
91 
92  virtual void createTag( TYPE_TAG_NAME_CONST name, int no = -1) ;
93 
94  // manages the tag-range. will be called if the tag has a range
95  virtual void tagRange();
96 
97  // for the closing bracket ")"
98  // the last tag will be popped from the stack and added
99  // to the current voice
100  virtual void endTag();
101  virtual void addTag();
102 
103  virtual void addTagParameter( TagParameter * parameter );
104  virtual void addTagParameter( const char * parameter );
105  virtual void addTagParameter( TYPE_TAGPARAMETER_INT parameter );
106  virtual void addTagParameter( TYPE_TAGPARAMETER_REAL parameter );
107 
108  virtual float UndoTransform( const float val );
109  virtual void setParameterName( const char * name );
110  virtual void setUnit( const char * s );
111 
112  virtual void setFilePath(const char* inFilePath) { mFilePath = inFilePath; }
113 
114  private:
115 
116  enum { kNoBeam = -99999999 };
117 
118  ARMusicalVoice * mCurrentVoice = NULL;
119  ARMusic * mCurrentMusic = NULL;
120  ARMusicalEvent * mCurrentEvent = NULL;
121  ARRepeatBegin * mCurrentRepeatBegin = NULL;
122 
123  ARMusicalEvent * mLastEvent = NULL;
124  TagPointerList mTags; // todo: replace by stl container
125  TagParametersList mTagParameters;
126  TagParameter* mLastTagParameter = 0;
127 
128  int mCurrentRegister; // (octave)
129  int mCurrentNumerator;
130  int mCurrentDenominator;
131  int mCurrentIntensity;
132  int mCurrentBeamID;
133 
134  void checkTagEnd ( ARMusicalTag* tag);
135  void checkRange ( const ARMusicalTag* tag, const std::string& ) const;
136  void endTremolo ( ARMusicalTag * tag );
137  void endCue ( ARMusicalTag * tag );
138  template <typename T> T* endStateTag (T * tag ) {
139  T * tmp = dynamic_cast<T *>(tag->getEndTag());
140  mCurrentVoice->AddTail(tmp);
141  return tmp;
142  }
143 
144  static long sMaxTagId;
145 
146 protected:
151 
152  const AROctava * mCurrentOctava = NULL;
153  const ARGrace * mCurrentGrace = NULL;
154  const ARCue * mCurrentCue = NULL;
155  const ARTStem * mCurrentStem = NULL;
156  const ARTHead * mCurrentHead = NULL;
158  std::stack<const ARNoteFormat*> fNoteFormats;
161  const ARAlter * mCurrentAlter = NULL;
162  const ARStaff * mCurrentStaff = NULL;
163  const ARChordTag * mCurrentChordTag = NULL;
164  const ARTuplet * mCurrentTuplet = NULL;
165  const ARKey * mCurrentKey = NULL;
166  const ARMeter * mCurrentMeter = NULL;
178 
179 private:
180  int mChordNotesCount;
181 
182 
183  NVstring mFilePath;
184 };
185 
186 #endif
187 
188 
ARFactory::mTagRanged
bool mTagRanged
Definition: ARFactory.h:169
ARFactory::UndoTransform
virtual float UndoTransform(const float val)
ARFactory::ARFactory
ARFactory()
ARMusicalVoice
The class for GUIDO sequence, list of timepositions of events of a stream.
Definition: ARMusicalVoice.h:76
ARFactory::mFingeringPos
ARAuto::position mFingeringPos
Definition: ARFactory.h:175
ARFactory::mCurrentCue
const ARCue * mCurrentCue
Definition: ARFactory.h:154
ARFactory::setParameterName
virtual void setParameterName(const char *name)
ARFactory::mCurrentNoteFormat
const ARNoteFormat * mCurrentNoteFormat
Definition: ARFactory.h:157
ARMusicalVoice::AddTail
GuidoPos AddTail(ARMusicalObject *newMusicalObject)
ARRestFormat
not yet documented
Definition: ARRestFormat.h:42
ARFactory::createTab
virtual void createTab(int string, const char *disp)
ARTrill
not yet documented
Definition: ARTrill.h:115
ARTHead
not yet documented
Definition: ARTHead.h:77
ARMeter
not yet documented
Definition: ARMeter.h:64
ARFactory::createVoice
virtual void createVoice()
ARFactory::createChord
virtual void createChord()
ARFactory::mCurrentTags
int mCurrentTags
Definition: ARFactory.h:168
ARFactory::mVoiceAdded
bool mVoiceAdded
Definition: ARFactory.h:170
ARFactory::createTag
virtual void createTag(TYPE_TAG_NAME_CONST name, int no=-1)
ARMusicalEvent
Class for musical events (events have an own duration tags not)
Definition: ARMusicalEvent.h:26
ARFactory::setDenominator
virtual void setDenominator(int newDenominator)
ARFactory::mCurrentTrill
ARTrill * mCurrentTrill
Definition: ARFactory.h:150
ARKey
Key signature.
Definition: ARKey.h:54
AROctava
The Octava tag.
Definition: AROctava.h:45
ARStaff
not yet documented
Definition: ARStaff.h:48
ARGrace
not yet documented
Definition: ARGrace.h:40
ARAlter
The Alter tag.
Definition: ARAlter.h:48
ARTremolo
not yet documented
Definition: ARTremolo.h:51
ARFactory::setRegister
virtual void setRegister(TYPE_REGISTER newRegister)
ARFactory::setFilePath
virtual void setFilePath(const char *inFilePath)
Definition: ARFactory.h:112
ARFactory::mCurrentHead
const ARTHead * mCurrentHead
Definition: ARFactory.h:156
ARFactory::mCurrentAlter
const ARAlter * mCurrentAlter
Definition: ARFactory.h:161
ARFactory
Class used in order to build the abstract representation (AR) structure of music.
Definition: ARFactory.h:60
ARFactory::mAutoHideTiedAccidentals
bool mAutoHideTiedAccidentals
Definition: ARFactory.h:174
ARTuplet
Abstract representation of a tuplet.
Definition: ARTuplet.h:61
ARFactory::mFingeringSize
float mFingeringSize
Definition: ARFactory.h:177
ARFactory::addFlat
virtual void addFlat()
ARFactory::addTag
virtual void addTag()
ARRepeatBegin
The right facing repeat sign.
Definition: ARRepeatBegin.h:38
ARFactory::getMusic
virtual ARMusic * getMusic()
ARFactory::mCurrentGrace
const ARGrace * mCurrentGrace
Definition: ARFactory.h:153
ARTStem
not yet documented
Definition: ARTStem.h:80
ARFactory::createMusic
virtual void createMusic()
ARDotFormat
not yet documented
Definition: ARDotFormat.h:40
ARFactory::mCurrentRestFormat
const ARRestFormat * mCurrentRestFormat
Definition: ARFactory.h:159
ARChordTag
not yet documented
Definition: ARChordTag.h:26
ARAuto::position
position
Definition: ARAuto.h:85
KF_IPointerList< ARMusicalTag >
ARGlissando
Definition: ARGlissando.h:47
ARFactory::setNumerator
virtual void setNumerator(int newNumerator)
ARCrescendo
not yet documented
Definition: ARCrescendo.h:47
ARFactory::initChordNote
virtual void initChordNote()
ARFactory::mCurrentMeter
const ARMeter * mCurrentMeter
Definition: ARFactory.h:166
ARNoteFormat
not yet documented
Definition: ARNoteFormat.h:51
ARFactory::mCurrentKey
const ARKey * mCurrentKey
Definition: ARFactory.h:165
ARFactory::addSharp
virtual void addSharp()
ARFactory::mCurrentChordTag
const ARChordTag * mCurrentChordTag
Definition: ARFactory.h:163
ARCue
not yet documented
Definition: ARCue.h:47
TagParameter
The base class for all guido tags.
Definition: TagParameter.h:26
ARFactory::setAccidentals
virtual void setAccidentals(TYPE_ACCIDENTALS accidentals)
ARFactory::mCurrentOctava
const AROctava * mCurrentOctava
Definition: ARFactory.h:152
ARFactory::setPoints
virtual void setPoints(int pointCount)
ARFactory::mAutoLyricsPos
bool mAutoLyricsPos
Definition: ARFactory.h:171
ARFactory::addTagParameter
virtual void addTagParameter(TagParameter *parameter)
ARFactory::mAutoInstrPos
bool mAutoInstrPos
Definition: ARFactory.h:172
ARFactory::mSaveCurrentVoice
ARMusicalVoice * mSaveCurrentVoice
Definition: ARFactory.h:147
ARFactory::mCurrentCluster
ARCluster * mCurrentCluster
Definition: ARFactory.h:148
ARFactory::createEvent
virtual void createEvent(const char *name)
ARFactory::mCurrentTuplet
const ARTuplet * mCurrentTuplet
Definition: ARFactory.h:164
ARMusicalTag
The base class for all musical tag classes.
Definition: ARMusicalTag.h:34
ARFactory::addEvent
virtual void addEvent()
NVstring
Definition: nvstring.h:21
ARFactory::mCurrentStaff
const ARStaff * mCurrentStaff
Definition: ARFactory.h:162
ARFactory::~ARFactory
virtual ~ARFactory()
ARFactory::addVoice
virtual void addVoice()
ARFactory::mVoiceNum
int mVoiceNum
Definition: ARFactory.h:167
ARNote
Representation of a GUIDO note.
Definition: ARNote.h:30
ARFactory::mCurrentDotFormat
const ARDotFormat * mCurrentDotFormat
Definition: ARFactory.h:160
ARFactory::addChord
virtual void addChord()
ARFactory::mAutoIntensPos
bool mAutoIntensPos
Definition: ARFactory.h:173
ARDiminuendo
not yet documented
Definition: ARDiminuendo.h:42
ARCluster
not yet documented
Definition: ARCluster.h:47
ARFactory::mCurrentStem
const ARTStem * mCurrentStem
Definition: ARFactory.h:155
ARMusicalObject
The base class for all AR objects. It contains all musical information : duration and time position.
Definition: ARMusicalObject.h:33
ARFactory::fNoteFormats
std::stack< const ARNoteFormat * > fNoteFormats
Definition: ARFactory.h:158
ARFactory::setUnit
virtual void setUnit(const char *s)
ARFactory::endTag
virtual void endTag()
ARFactory::mHarmonyPos
ARAuto::position mHarmonyPos
Definition: ARFactory.h:176
ARFactory::tagRange
virtual void tagRange()
ARMusic
Translation of a GUIDO Segment into a class.
Definition: ARMusic.h:31
ARFactory::mCurrentTremolo
ARTremolo * mCurrentTremolo
Definition: ARFactory.h:149

Guido Project Copyright © 2019 Grame-CNCM