GUIDOLib  1.7.7
Guido Engine Internal Documentation
ARMusicalVoiceState.h
1 #ifndef ARMusicalVoiceState_H
2 #define ARMusicalVoiceState_H
3 
4 /*
5  GUIDO Library
6  Copyright (C) 2002 Holger Hoos, Juergen Kilian, Kai Renz
7  Copyright (C) 2002-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 <typeinfo>
19 
20 #include "TagList.h" // is a typedef
21 #include "defines.h" // for TYPE_TIMEPOSITION
22 #include "GUIDOTypes.h" // for GuidoPos
23 
24 class ARMusicalTag;
25 class ARPositionTag;
26 class ARMeter;
27 class ARDisplayDuration;
28 class ARBeamState;
29 class ARAuto;
30 class ARGrace;
31 class ARChordTag;
32 
33 template <class T> class KF_IPointerList;
35 
40 {
41  friend class ARMusic;
42  friend class ARMusicalVoice;
43  friend class ARVoiceManager;
44  friend class GRVoiceManager;
45 
46  public:
50 
51  virtual ~ARMusicalVoiceState();
52 
53  ARMusicalTag * getCurStateTag (const std::type_info & ti);
54  ARMusicalTag * RemoveCurStateTag(const std::type_info & ti);
55 
57 
58  const TagList * getCurTags() const { return curtags; }
59  const TagList * getCurStateTags() const { return curstatetags; }
60  const PositionTagList * getCurPositionTags() const { return curpositiontags; }
61 
62  void AddStateTag (ARMusicalTag * ntag);
63  void AddTag (ARMusicalTag * ntag);
64  void RemoveTag (ARMusicalTag * ntag);
65  void AddPositionTag (ARPositionTag * ntag, int addtoaddedlist = 1);
66  void RemovePositionTag (ARPositionTag * ntag, int addtoremovedlist = 1);
67 
68  void DeleteAll();
69 
70  const PositionTagList * addedPTags() const { return addedpositiontags; }
71  const PositionTagList * removedPTags() const { return removedpositiontags; }
72  const PositionTagList * currentPTags() const { return curpositiontags; }
73 
74  const ARMeter * curMeter() const { return curmeter; }
75  const ARDisplayDuration * curDispDur() const { return fCurdispdur; }
76 
77  protected:
78  // The timeposition of the last barline.
80  GuidoPos curlastbarpos;
81  // ptagpos indicates the current position within the ptaglist.
82  GuidoPos ptagpos;
83 
85  // Distinguish between Tags, that allow a range and those, who don't
86 
87  TagList * curstatetags; // A list of Tags, that determine the State of
88  // the voice (e.g. clef, key, meter, etc. )
89  // All the tags, that have no range ...
90 
91  // the tags that are just tags in the musical voice, like e.g. ARText
92  // or ARFermata ... (the ones without ranges)
94 
95  GuidoPos vpos; // Position within the voice
96 
97  // now we save the current meter
98  // which is actually also a state-tag -> this is handled so that autobeaming can be done elegantly
100  // the current displayduration (if set) ...
102 
103  // we also save the beamstate ... makes it more elegant for autobeaming ...
108 
111 
112  private:
113  // these describe those position tags that have been Added in the last
114  // operation on the Voice with the given state.
115  PositionTagList * addedpositiontags;
116 
117  // this list holds all the position tags that have been removed in the last
118  // operation on the Voice with the state.
119  PositionTagList * removedpositiontags;
120 
121  // this list holds all the position tags that are currently active.
122  PositionTagList * curpositiontags;
123 
124 };
125 
126 #endif
127 
128 
ARMusicalVoice
The class for GUIDO sequence, list of timepositions of events of a stream.
Definition: ARMusicalVoice.h:76
ARMusicalVoiceState::curgracetag
ARGrace * curgracetag
Definition: ARMusicalVoiceState.h:106
ARMusicalVoiceState::curchordtag
ARChordTag * curchordtag
Definition: ARMusicalVoiceState.h:107
ARMusicalVoiceState::DeleteAll
void DeleteAll()
ARBeamState
not yet documented
Definition: ARBeamState.h:50
ARMeter
not yet documented
Definition: ARMeter.h:64
ARMusicalVoiceState::getCurPositionTags
const PositionTagList * getCurPositionTags() const
Definition: ARMusicalVoiceState.h:60
Fraction
Numerator and denominator.
Definition: Fraction.h:23
ARMusicalVoiceState::AddStateTag
void AddStateTag(ARMusicalTag *ntag)
ARMusicalVoiceState::curDispDur
const ARDisplayDuration * curDispDur() const
Definition: ARMusicalVoiceState.h:75
ARGrace
not yet documented
Definition: ARGrace.h:40
ARMusicalVoiceState::curtp
TYPE_TIMEPOSITION curtp
Definition: ARMusicalVoiceState.h:84
ARMusicalVoiceState::DeleteAddedAndRemovedPTags
void DeleteAddedAndRemovedPTags()
GRVoiceManager
not yet documented
Definition: GRVoiceManager.h:60
ARMusicalVoiceState::ARMusicalVoiceState
ARMusicalVoiceState()
ARMusicalVoiceState::addedPTags
const PositionTagList * addedPTags() const
Definition: ARMusicalVoiceState.h:70
ARMusicalVoiceState::curbeamstate
ARBeamState * curbeamstate
Definition: ARMusicalVoiceState.h:104
ARMusicalVoiceState::RemoveTag
void RemoveTag(ARMusicalTag *ntag)
ARMusicalVoiceState::AddTag
void AddTag(ARMusicalTag *ntag)
ARChordTag
not yet documented
Definition: ARChordTag.h:26
KF_IPointerList
Definition: ARMusicalVoiceState.h:33
ARMusicalVoiceState::currentPTags
const PositionTagList * currentPTags() const
Definition: ARMusicalVoiceState.h:72
ARMusicalVoiceState::operator=
ARMusicalVoiceState & operator=(const ARMusicalVoiceState &vst)
ARMusicalVoiceState::curtags
TagList * curtags
Definition: ARMusicalVoiceState.h:93
ARMusicalVoiceState::curlastbartp
TYPE_TIMEPOSITION curlastbartp
Definition: ARMusicalVoiceState.h:79
ARMusicalVoiceState::RemovePositionTag
void RemovePositionTag(ARPositionTag *ntag, int addtoremovedlist=1)
ARMusicalVoiceState::prevchordState
ARMusicalVoiceState * prevchordState
Definition: ARMusicalVoiceState.h:110
ARMusicalVoiceState::curlastbarpos
GuidoPos curlastbarpos
Definition: ARMusicalVoiceState.h:80
ARMusicalVoiceState::~ARMusicalVoiceState
virtual ~ARMusicalVoiceState()
ARMusicalVoiceState::curmeter
ARMeter * curmeter
Definition: ARMusicalVoiceState.h:99
ARMusicalVoiceState::curautostate
ARAuto * curautostate
Definition: ARMusicalVoiceState.h:105
ARMusicalVoiceState::fCurdispdur
ARDisplayDuration * fCurdispdur
Definition: ARMusicalVoiceState.h:101
ARMusicalTag
The base class for all musical tag classes.
Definition: ARMusicalTag.h:34
ARAuto
Auto tag.
Definition: ARAuto.h:79
ARMusicalVoiceState::getCurStateTags
const TagList * getCurStateTags() const
Definition: ARMusicalVoiceState.h:59
ARMusicalVoiceState::getCurTags
const TagList * getCurTags() const
Definition: ARMusicalVoiceState.h:58
ARMusicalVoiceState
This class manage the state of a voice. Here additional information for voices will be stored (i....
Definition: ARMusicalVoiceState.h:39
ARMusicalVoiceState::curMeter
const ARMeter * curMeter() const
Definition: ARMusicalVoiceState.h:74
ARMusicalVoiceState::vpos
GuidoPos vpos
Definition: ARMusicalVoiceState.h:95
ARMusicalVoiceState::removedPTags
const PositionTagList * removedPTags() const
Definition: ARMusicalVoiceState.h:71
ARPositionTag
The base class for all range tags.
Definition: ARPositionTag.h:26
ARMusicalVoiceState::curstatetags
TagList * curstatetags
Definition: ARMusicalVoiceState.h:87
ARMusicalVoiceState::RemoveCurStateTag
ARMusicalTag * RemoveCurStateTag(const std::type_info &ti)
ARVoiceManager
This class is used to handle preliminary break-detection.
Definition: ARVoiceManager.h:30
ARMusicalVoiceState::AddPositionTag
void AddPositionTag(ARPositionTag *ntag, int addtoaddedlist=1)
ARDisplayDuration
not yet documented
Definition: ARDisplayDuration.h:47
ARMusicalVoiceState::ptagpos
GuidoPos ptagpos
Definition: ARMusicalVoiceState.h:82
ARMusicalVoiceState::chordState
ARMusicalVoiceState * chordState
Definition: ARMusicalVoiceState.h:109
ARMusic
Translation of a GUIDO Segment into a class.
Definition: ARMusic.h:31
ARMusicalVoiceState::getCurStateTag
ARMusicalTag * getCurStateTag(const std::type_info &ti)

Guido Project Copyright © 2019 Grame-CNCM