Audio plugin host https://kx.studio/carla
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.

127 lines
3.5KB

  1. #!/usr/bin/env python3
  2. # SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
  3. # SPDX-License-Identifier: GPL-2.0-or-later
  4. # ------------------------------------------------------------------------------------------------------------
  5. # Imports (Global)
  6. from qt_compat import qt_config
  7. if qt_config == 5:
  8. from PyQt5.QtCore import Qt
  9. elif qt_config == 6:
  10. from PyQt6.QtCore import Qt
  11. # -----------------------------------------------------------------------
  12. # Imports (Custom)
  13. from carla_shared import *
  14. from carla_utils import *
  15. # -----------------------------------------------------------------------
  16. # Imports (ExternalUI)
  17. from carla_app import CarlaApplication
  18. from externalui import ExternalUI
  19. from widgets.digitalpeakmeter import DigitalPeakMeter
  20. # -----------------------------------------------------------------------
  21. # External UI
  22. class DistrhoUIBigMeter(ExternalUI, DigitalPeakMeter):
  23. def __init__(self):
  24. ExternalUI.__init__(self)
  25. DigitalPeakMeter.__init__(self, None)
  26. channels = 2 #6 if argv[0].endswith("bigmeterM-ui") else 2
  27. self.setChannelCount(channels)
  28. self.setMeterColor(self.COLOR_GREEN)
  29. self.setMeterOrientation(self.VERTICAL)
  30. #self.setSmoothRelease(0) # till 5
  31. self.resize(50, 400)
  32. self.setWindowTitle(self.fUiName)
  33. self.fIdleTimer = self.startTimer(30)
  34. self.ready()
  35. # -------------------------------------------------------------------
  36. # DSP Callbacks
  37. def dspParameterChanged(self, index, value):
  38. if index == 0:
  39. color = int(value)
  40. if color not in (DigitalPeakMeter.COLOR_GREEN,
  41. DigitalPeakMeter.COLOR_BLUE):
  42. return
  43. self.setMeterColor(color)
  44. elif index == 1:
  45. style = int(value)
  46. if style not in (DigitalPeakMeter.STYLE_DEFAULT,
  47. DigitalPeakMeter.STYLE_OPENAV,
  48. DigitalPeakMeter.STYLE_RNCBC):
  49. return
  50. self.setMeterStyle(style)
  51. else:
  52. self.displayMeter(index-1, value)
  53. # -------------------------------------------------------------------
  54. # ExternalUI Callbacks
  55. def uiShow(self):
  56. self.show()
  57. def uiFocus(self):
  58. self.setWindowState((self.windowState() & ~Qt.WindowMinimized) | Qt.WindowActive)
  59. self.show()
  60. self.raise_()
  61. self.activateWindow()
  62. def uiHide(self):
  63. self.hide()
  64. def uiQuit(self):
  65. self.closeExternalUI()
  66. self.close()
  67. app.quit()
  68. def uiTitleChanged(self, uiTitle):
  69. self.setWindowTitle(uiTitle)
  70. # -------------------------------------------------------------------
  71. # Qt events
  72. def timerEvent(self, event):
  73. if event.timerId() == self.fIdleTimer:
  74. self.idleExternalUI()
  75. DigitalPeakMeter.timerEvent(self, event)
  76. def closeEvent(self, event):
  77. self.closeExternalUI()
  78. DigitalPeakMeter.closeEvent(self, event)
  79. # there might be other qt windows open which will block the UI from quitting
  80. app.quit()
  81. #--------------- main ------------------
  82. if __name__ == '__main__':
  83. import resources_rc
  84. pathBinaries, pathResources = getPaths()
  85. gCarla.utils = CarlaUtils(os.path.join(pathBinaries, "libcarla_utils." + DLL_EXTENSION))
  86. gCarla.utils.set_process_name("BigMeter")
  87. app = CarlaApplication("BigMeter")
  88. gui = DistrhoUIBigMeter()
  89. app.exit_exec()