Track.h 821 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef SEKAI_TRACK_H
  2. #define SEKAI_TRACK_H
  3. #include <sekai/common.h>
  4. #include <map>
  5. #include <string>
  6. #include <vector>
  7. struct Pitch {
  8. float pos;
  9. float voiced;
  10. float f0;
  11. };
  12. class Track {
  13. private:
  14. std::map<std::string, std::string> headerMap;
  15. std::vector<Pitch> pitchTrack;
  16. static Pitch pitchEmpty;
  17. public:
  18. bool readFromFile(std::string fileName);
  19. inline Pitch getPitch(unsigned int i) {
  20. if (unlikely(i > pitchTrack.size()))
  21. return pitchEmpty;
  22. else
  23. return pitchTrack[i];
  24. }
  25. inline int getPitchCount() { return pitchTrack.size(); }
  26. inline std::string getHeaderInfo(std::string field) { return headerMap[field]; }
  27. static void WriteF0(const char *filename, int f0_length, double frame_period,
  28. const double *temporal_positions, const double *f0, int text_flag);
  29. };
  30. #endif