GUIDOLib  1.7.7
Guido Engine Internal Documentation
TimeUnwrap.h
1 #ifndef __TimeUnwrap__
2 #define __TimeUnwrap__
3 
4 /*
5  GUIDO Library
6  Copyright (C) 2010 Grame
7 
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 "GUIDOEngine.h"
19 #include "GUIDOScoreMap.h"
20 #include "GUIDOTypes.h"
21 #include "defines.h"
22 
23 #include <map>
24 
25 class ARMusicalObject;
26 class ARMusicalVoice;
27 //------------------------------------------------------------------------------
28 // mapping collector abstract class definition
30 {
31  private:
32  typedef const ARMusicalObject * Position;
33 
34  TYPE_TIMEPOSITION fRPosition; // the current rolled time position
35  ARMusicalVoice* fVoice; // the musical voice we're browsing
36 
37  Position fStartPos; // the score start position
38  Position fFinePos; // the score fine position
39  Position fCodaPos; // the score coda position
40  Position fSegnoPos; // the score segno position
41  Position fRepeatPos; // the score repeat begin position
42  Position fBackJump; // indicates a backward jump position (da capo or dal segno)
43  bool fPendingFine;
44  bool fPendingCoda;
45  bool fDone;
46 
47  std::map<Position,int> fRepeatMap; // used to avoid loops in scores
48  std::map<Position,int> fJumpsMap; // used to avoid loops in scores
49 
50  public:
51  typedef enum { kNote, kRest, kRepeatBegin, kRepeatEnd,
57 
58  TimeUnwrap(ARMusicalVoice* voice) : fVoice(voice),
59  fStartPos(0), fFinePos(0), fCodaPos(0),
60  fSegnoPos(0), fRepeatPos (0), fBackJump(0),
61  fPendingFine(false), fPendingCoda(false), fDone(false) {}
62  virtual ~TimeUnwrap() {}
63 
64  virtual void AtPos (const ARMusicalObject * ev, EventType type);
65  virtual void Event (const ARMusicalObject * ev, EventType type) {}
66 
67  protected:
68  virtual void Note (const ARMusicalObject * ev);
69  virtual void Rest (const ARMusicalObject * ev);
70  const TYPE_TIMEPOSITION& PrevPosition() const { return fRPosition; }
71  bool StartPos() const { return fStartPos != 0; }
72 
73  private:
74  void NewEv (const ARMusicalObject * ev);
75  void Jump (const ARMusicalObject* pos, const ARMusicalObject* to, const ARMusicalObject* end );
76 };
77 
78 
79 #endif
TimeUnwrap::kDaCapoAlFine
Definition: TimeUnwrap.h:53
ARMusicalVoice
The class for GUIDO sequence, list of timepositions of events of a stream.
Definition: ARMusicalVoice.h:76
TimeUnwrap::StartPos
bool StartPos() const
Definition: TimeUnwrap.h:71
TimeUnwrap::AtPos
virtual void AtPos(const ARMusicalObject *ev, EventType type)
TimeUnwrap::kTempo
Definition: TimeUnwrap.h:54
TimeUnwrap::kGlissando
Definition: TimeUnwrap.h:56
TimeUnwrap::kCoda
Definition: TimeUnwrap.h:52
TimeUnwrap::kSlur
Definition: TimeUnwrap.h:55
TimeUnwrap::kStaccato
Definition: TimeUnwrap.h:55
TimeUnwrap::~TimeUnwrap
virtual ~TimeUnwrap()
Definition: TimeUnwrap.h:62
Fraction
Numerator and denominator.
Definition: Fraction.h:23
TimeUnwrap::EventType
EventType
Definition: TimeUnwrap.h:51
TimeUnwrap::kRepeatEnd
Definition: TimeUnwrap.h:51
TimeUnwrap::kChordComma
Definition: TimeUnwrap.h:56
TimeUnwrap::kSegno
Definition: TimeUnwrap.h:52
TimeUnwrap::Rest
virtual void Rest(const ARMusicalObject *ev)
TimeUnwrap::kTenuto
Definition: TimeUnwrap.h:55
TimeUnwrap::kDalSegno
Definition: TimeUnwrap.h:54
TimeUnwrap::kMarcato
Definition: TimeUnwrap.h:56
TimeUnwrap::kNote
Definition: TimeUnwrap.h:51
TimeUnwrap::kRepeatBegin
Definition: TimeUnwrap.h:51
TimeUnwrap::TimeUnwrap
TimeUnwrap(ARMusicalVoice *voice)
Definition: TimeUnwrap.h:58
TimeUnwrap::kFermata
Definition: TimeUnwrap.h:55
TimeUnwrap::kRest
Definition: TimeUnwrap.h:51
TimeUnwrap::Note
virtual void Note(const ARMusicalObject *ev)
TimeUnwrap::kNoTie
Definition: TimeUnwrap.h:56
TimeUnwrap::kDaCoda
Definition: TimeUnwrap.h:53
TimeUnwrap::PrevPosition
const TYPE_TIMEPOSITION & PrevPosition() const
Definition: TimeUnwrap.h:70
TimeUnwrap::kAccent
Definition: TimeUnwrap.h:55
TimeUnwrap::kDalSegnoAlFine
Definition: TimeUnwrap.h:54
TimeUnwrap::kFine
Definition: TimeUnwrap.h:52
TimeUnwrap::kIntens
Definition: TimeUnwrap.h:56
TimeUnwrap::kTie
Definition: TimeUnwrap.h:56
ARMusicalObject
The base class for all AR objects. It contains all musical information : duration and time position.
Definition: ARMusicalObject.h:33
TimeUnwrap::Event
virtual void Event(const ARMusicalObject *ev, EventType type)
Definition: TimeUnwrap.h:65
TimeUnwrap::kDaCapo
Definition: TimeUnwrap.h:53
TimeUnwrap::kVolta
Definition: TimeUnwrap.h:54
TimeUnwrap
Definition: TimeUnwrap.h:29

Guido Project Copyright © 2019 Grame-CNCM