Programmable real-time audio signal processing application
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cmGrTksrFltk.h 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. //| Copyright: (C) 2019-2020 Kevin Larke <contact AT larke DOT org>
  2. //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file.
  3. #ifndef cmGrTksrFltk_h
  4. #define cmGrTksrFltk_h
  5. class Fl_Menu_Bar;
  6. class cmdIf;
  7. class cmGrTksrFltk : public cmGrPlotFltk, public gvHashFuncArg
  8. {
  9. public:
  10. cmGrTksrFltk(cmCtx_t* ctx, cmdIf* cp, Fl_Menu_Bar* menuBar, int x, int y, int w, int h);
  11. virtual ~cmGrTksrFltk();
  12. void setTksbHandle( void* vp );
  13. void refresh();
  14. virtual double sampleRate() const;
  15. virtual bool on_plot_object( cmGrPlotCbArg_t* arg );
  16. private:
  17. enum
  18. {
  19. kOkRC,
  20. kInsertObjFailRC,
  21. kClearPlotFailRC,
  22. kTksbFailRC
  23. };
  24. enum
  25. {
  26. kPitchMId,
  27. kScEvtMId,
  28. kDeleteMId,
  29. kSustainMId,
  30. kSostenutoMId,
  31. kWriteMId,
  32. kReadMId,
  33. kMenuItemCnt
  34. };
  35. typedef struct
  36. {
  37. cmGrTksrFltk* p;
  38. int id;
  39. } item_t;
  40. typedef enum
  41. {
  42. kInvalidTksrId,
  43. kNoteTksrId,
  44. kPedalTksrId,
  45. } tksrId_t;
  46. typedef struct scObj_str
  47. {
  48. tksrId_t id;
  49. union
  50. {
  51. unsigned rid;
  52. } u;
  53. scObj_str( tksrId_t i, unsigned rid ) : id(i) { u.rid=rid; }
  54. } scObj_t;
  55. cmErr_t _err;
  56. //cmdIf* _cmdIf;
  57. cmTakeSeqBldrH_t _tksbH;
  58. Fl_Menu_Bar* _menuBar;
  59. unsigned _samplesMetricId;
  60. unsigned _secondsMetricId;
  61. //double _objSecs;
  62. unsigned _objId;
  63. //bool _togFl;
  64. item_t _menuArray[ kMenuItemCnt ];
  65. void _insertEvent( const cmTksbRend_t* m, double srate );
  66. void _createMenu();
  67. bool _isMenuChecked( int id );
  68. void _setEventLabels();
  69. void _write();
  70. void _read();
  71. void _insertPedal( unsigned long pedalMId );
  72. static void _s_deleteSelectedEle( void* arg, cmGrPlObjH_t oh );
  73. static void _s_menuCallback(Fl_Widget* w, void* arg);
  74. };
  75. #endif