HydrogenSwing.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef HYDROGENSWING_H
  2. #define HYDROGENSWING_H
  3. #include <QObject>
  4. #include "AutomatableSlider.h"
  5. #include "Groove.h"
  6. #include "lmms_basics.h"
  7. #include "MidiTime.h"
  8. #include "Note.h"
  9. #include "Pattern.h"
  10. /**
  11. * A groove that mimics Hydrogen drum machine's swing feature
  12. */
  13. class HydrogenSwing : public Groove
  14. {
  15. Q_OBJECT
  16. public:
  17. HydrogenSwing(QObject *parent = NULL);
  18. virtual ~HydrogenSwing();
  19. void init();
  20. int isInTick(MidiTime * curStart, const fpp_t frames, const f_cnt_t offset, Note * n, Pattern * p);
  21. inline virtual QString nodeName() const
  22. {
  23. return "hydrogen";
  24. }
  25. QWidget * instantiateView(QWidget * parent);
  26. public slots:
  27. // valid values are from 0 - 127
  28. void update();
  29. private:
  30. int m_framesPerTick;
  31. } ;
  32. class HydrogenSwingView : public QWidget
  33. {
  34. Q_OBJECT
  35. public:
  36. HydrogenSwingView(HydrogenSwing * swing, QWidget * parent = NULL);
  37. ~HydrogenSwingView();
  38. public slots:
  39. void valueChanged();
  40. void modelChanged();
  41. private:
  42. HydrogenSwing * m_swing;
  43. IntModel * m_sliderModel;
  44. AutomatableSlider * m_slider;
  45. } ;
  46. #endif // HYDROGENSWING_H