DPF Plugin examples
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.

104 lines
3.2KB

  1. /*
  2. * DISTRHO Plugin Framework (DPF)
  3. * Copyright (C) 2012-2014 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for any purpose with
  6. * or without fee is hereby granted, provided that the above copyright notice and this
  7. * permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
  10. * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
  11. * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  12. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
  13. * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  14. * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #include "DistrhoUI.hpp"
  17. // include full file here for convenience
  18. #include "gui/ducka_widget.cxx"
  19. START_NAMESPACE_DISTRHO
  20. // -----------------------------------------------------------------------------------------------------------
  21. class ArtyFxUiDucka : public UI
  22. {
  23. public:
  24. ArtyFxUiDucka()
  25. : UI(),
  26. fUI(this),
  27. sidechainAmp(0.0f)
  28. {
  29. // ntk method to add sub-window
  30. add(fUI.window);
  31. fUI.window->show();
  32. // start widgets on their default values
  33. fUI.graph->threshold(0.25f);
  34. fUI.graph->reduce(1.0f);
  35. fUI.graph->release(0.5f);
  36. fUI.threshold->value(0.25f);
  37. fUI.drop->value(1.0f);
  38. fUI.time->value(0.5f);
  39. setSize(fUI.getWidth(), fUI.getHeight());
  40. }
  41. protected:
  42. /* --------------------------------------------------------------------------------------------------------
  43. * DSP/Plugin Callbacks */
  44. /**
  45. A parameter has changed on the plugin side.
  46. This is called by the host to inform the UI about parameter changes.
  47. */
  48. void d_parameterChanged(uint32_t index, float value) override
  49. {
  50. switch (index)
  51. {
  52. case 0:
  53. fUI.graph->threshold( value );
  54. fUI.threshold->value( value );
  55. break;
  56. case 1:
  57. fUI.graph->reduce( value );
  58. fUI.drop->value( value );
  59. break;
  60. case 2:
  61. fUI.graph->release( value );
  62. fUI.time->value( value );
  63. break;
  64. case 3:
  65. /// only update when value changes?
  66. //if ( sidechainAmp > value + 0.1 || sidechainAmp < value - 0.1)
  67. {
  68. fUI.graph->sidechain( value );
  69. sidechainAmp = value;
  70. }
  71. break;
  72. }
  73. }
  74. // -------------------------------------------------------------------------------------------------------
  75. private:
  76. DuckaUI fUI;
  77. float sidechainAmp;
  78. DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ArtyFxUiDucka)
  79. };
  80. /* ------------------------------------------------------------------------------------------------------------
  81. * UI entry point, called by DPF to create a new UI instance. */
  82. UI* createUI()
  83. {
  84. return new ArtyFxUiDucka();
  85. }
  86. // -----------------------------------------------------------------------------------------------------------
  87. END_NAMESPACE_DISTRHO