Parcourir la source

new methods in BeatSequence

Fabian Peter Hammerle il y a 10 ans
Parent
commit
d84614b9ea
2 fichiers modifiés avec 22 ajouts et 1 suppressions
  1. 16 0
      BeatSequence.cpp
  2. 6 1
      BeatSequence.h

+ 16 - 0
BeatSequence.cpp

@@ -61,6 +61,12 @@ void BeatSequence::resize(BeatIndex size)
     refreshRegistry();
 }
 
+void BeatSequence::pushFrontMessage(BeatIndex beatIndex, std::shared_ptr<midi::Message>& msg_ptr)
+{
+    parent::at(beatIndex).push_front(msg_ptr);
+    registerMessage(beatIndex, msg_ptr);
+}
+
 void BeatSequence::pushBackMessage(BeatIndex beatIndex, std::shared_ptr<midi::Message>& msg_ptr)
 {
     parent::at(beatIndex).push_back(msg_ptr);
@@ -91,6 +97,16 @@ void BeatSequence::reduceErasingConflicts(BeatIndex factor)
     refreshRegistry();
 }
 
+const BeatSequence::BeatIndexMultiset& BeatSequence::getNoteOnBeatIndices(Channel channel, Pitch pitch)
+{
+    return getNoteInfo(channel, pitch).onBeatIndices;
+}
+
+const BeatSequence::BeatIndexMultiset& BeatSequence::getNoteOffBeatIndices(Channel channel, Pitch pitch)
+{
+    return getNoteInfo(channel, pitch).offBeatIndices;
+}
+
 void BeatSequence::printRegistry(std::ostream& stream) const
 {
     stream << "beat sequence note info registry: \n";

+ 6 - 1
BeatSequence.h

@@ -5,8 +5,9 @@
 
 class BeatSequenceNoteInformation
 {
-    typedef std::multiset<midi::BeatSequence::BeatIndex> BeatIndexMultiset;
 public:
+    typedef std::multiset<midi::BeatSequence::BeatIndex> BeatIndexMultiset;
+    
     BeatIndexMultiset onBeatIndices, offBeatIndices;
 
 	void print(std::ostream& stream, std::size_t indent = 0) const;
@@ -22,6 +23,7 @@ class BeatSequence : public midi::BeatSequence
     typedef midi::NoteMessage::Pitch Pitch;
     typedef std::pair<Channel, Pitch> ChannelPitchPair;
     typedef std::map<ChannelPitchPair, BeatSequenceNoteInformation> NoteInfoMap;
+    typedef BeatSequenceNoteInformation::BeatIndexMultiset BeatIndexMultiset;
 
     NoteInfoMap noteInfos;
 
@@ -29,11 +31,14 @@ public:
     const midi::MessageList& at(BeatIndex beatIndex) const;
     const midi::MessageList& operator[](BeatIndex beatIndex) const;
     void resize(BeatIndex size);
+    void pushFrontMessage(BeatIndex beatIndex, std::shared_ptr<midi::Message>& msg_ptr);
     void pushBackMessage(BeatIndex beatIndex, std::shared_ptr<midi::Message>& msg_ptr);
     void eraseMessage(BeatIndex beatIndex, midi::MessageList::const_iterator msg_it);
     void expand(BeatIndex factor);
     void reduceToNeighbour(BeatIndex factor);
     void reduceErasingConflicts(BeatIndex factor);
+    const BeatIndexMultiset& getNoteOnBeatIndices(Channel channel, Pitch pitch);
+    const BeatIndexMultiset& getNoteOffBeatIndices(Channel channel, Pitch pitch);
     void printRegistry(std::ostream& stream) const;
 
 private: