sinsyscoreconverter.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. This file is part of QTau
  3. Copyright (C) 2013-2018 Tobias "Tomoko" Platen <tplaten@posteo.de>
  4. Copyright (C) 2013 digited <https://github.com/digited>
  5. Copyright (C) 2010-2013 HAL@ShurabaP <https://github.com/haruneko>
  6. QTau is free software: you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation, either version 3 of the License, or
  9. (at your option) any later version.
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14. You should have received a copy of the GNU General Public License
  15. along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. SPDX-License-Identifier: GPL-3.0+
  17. */
  18. #ifndef SINSYSCORECONVERTER_H
  19. #define SINSYSCORECONVERTER_H
  20. #undef emit
  21. #include <sinsy/sinsy.h>
  22. #define emit Q_EMIT
  23. #include <QJsonArray>
  24. #include "tempomap.h"
  25. class SinsyScoreConverter : public sinsy::IScore {
  26. int pos_pulses;
  27. QJsonArray notes;
  28. TempoMap tmap;
  29. int current_measure=0;
  30. int numerator=4;
  31. int denominator=4;
  32. //void genSetup();
  33. public:
  34. SinsyScoreConverter();
  35. virtual ~SinsyScoreConverter() {}
  36. //! set encoding
  37. virtual bool setEncoding(const std::string& encoding);
  38. //! add key mark
  39. virtual bool addKeyMark(sinsy::ModeType modeType, int fifths);
  40. //! add beat mark (beats/beatType) to end of score: default beat mark is 4/4
  41. virtual bool addBeatMark(size_t beats, size_t beatType);
  42. //! add tempo mark to end of score: default tempo is 100bps
  43. virtual bool addTempoMark(double tempo);
  44. //! add dynamics mark (sudden changes) to end of score
  45. virtual bool addSuddenDynamicsMark(
  46. sinsy::SuddenDynamicsType suddenDynamicsType);
  47. //! add dynamics mark (gradual changes) to end of score
  48. virtual bool addGradualDynamicsMark(
  49. sinsy::GradualDynamicsType gradualDynamicsType);
  50. //! add note to end of score
  51. virtual bool addNote(size_t duration, const std::string& lyric, size_t pitch,
  52. bool accent, bool staccato, sinsy::TieType tieType,
  53. sinsy::SlurType slurType,
  54. sinsy::SyllabicType syllabicType, bool breath = false);
  55. //! add rest to end of score
  56. virtual bool addRest(size_t duration);
  57. void toJSON(QJsonArray& ust);
  58. };
  59. #endif // SINSYSCORECONVERTER_H