* FIXME in midi_util.h
[ardour.git] / libs / evoral / evoral / Note.hpp
index 75a8046237d784d0ad3b949e3dad9c0aa3393109..c8365588ee2da07565fa12077a517459e955a9f2 100644 (file)
@@ -20,7 +20,7 @@
 #define EVORAL_NOTE_HPP
 
 #include <stdint.h>
-#include <evoral/MIDIEvent.hpp>
+#include "evoral/MIDIEvent.hpp"
 
 namespace Evoral {
 
@@ -29,15 +29,16 @@ namespace Evoral {
  *
  * Currently a note is defined as (on event, length, off event).
  */
+template<typename Time>
 class Note {
 public:
-       Note(uint8_t chan=0, EventTime time=0, EventLength len=0, uint8_t note=0, uint8_t vel=0x40);
-       Note(const Note& copy);
+       Note(uint8_t chan=0, Time time=0, Time len=0, uint8_t note=0, uint8_t vel=0x40);
+       Note(const Note<Time>& copy);
        ~Note();
 
-       const Note& operator=(const Note& copy);
+       const Note<Time>& operator=(const Note<Time>& copy);
 
-       inline bool operator==(const Note& other) {
+       inline bool operator==(const Note<Time>& other) {
                return time() == other.time() && 
                 note() == other.note() && 
                 length() == other.length() &&
@@ -45,31 +46,31 @@ public:
                 channel()  == other.channel();
        }
 
-       inline EventTime   time()     const { return _on_event.time(); }
-       inline EventTime   end_time() const { return _off_event.time(); }
+       inline Time        time()     const { return _on_event.time(); }
+       inline Time        end_time() const { return _off_event.time(); }
        inline uint8_t     note()     const { return _on_event.note(); }
        inline uint8_t     velocity() const { return _on_event.velocity(); }
-       inline EventLength length()   const { return _off_event.time() - _on_event.time(); }
+       inline Time        length()   const { return _off_event.time() - _on_event.time(); }
        inline uint8_t     channel()  const {
                assert(_on_event.channel() == _off_event.channel()); 
            return _on_event.channel(); 
        }
 
-       inline void set_time(EventTime t)     { _off_event.time() = t + length(); _on_event.time() = t; }
-       inline void set_note(uint8_t n)       { _on_event.buffer()[1] = n; _off_event.buffer()[1] = n; }
-       inline void set_velocity(uint8_t n)   { _on_event.buffer()[2] = n; }
-       inline void set_length(EventLength l) { _off_event.time() = _on_event.time() + l; }
-       inline void set_channel(uint8_t c)    { _on_event.set_channel(c);  _off_event.set_channel(c); }
+       inline void set_time(Time t)        { _off_event.time() = t + length(); _on_event.time() = t; }
+       inline void set_note(uint8_t n)     { _on_event.buffer()[1] = n; _off_event.buffer()[1] = n; }
+       inline void set_velocity(uint8_t n) { _on_event.buffer()[2] = n; }
+       inline void set_length(Time l)      { _off_event.time() = _on_event.time() + l; }
+       inline void set_channel(uint8_t c)  { _on_event.set_channel(c);  _off_event.set_channel(c); }
 
-       inline       Event& on_event()        { return _on_event; }
-       inline const Event& on_event()  const { return _on_event; }
-       inline       Event& off_event()       { return _off_event; }
-       inline const Event& off_event() const { return _off_event; }
+       inline       Event<Time>& on_event()        { return _on_event; }
+       inline const Event<Time>& on_event()  const { return _on_event; }
+       inline       Event<Time>& off_event()       { return _off_event; }
+       inline const Event<Time>& off_event() const { return _off_event; }
 
 private:
        // Event buffers are self-contained
-       MIDIEvent _on_event;
-       MIDIEvent _off_event;
+       MIDIEvent<Time> _on_event;
+       MIDIEvent<Time> _off_event;
 };