Browse Source

Add meters on the side of the canvas (configurable soon)

tags/1.9.4
falkTX 11 years ago
parent
commit
3d8cdaf3a7
3 changed files with 42 additions and 8 deletions
  1. +1
    -0
      source/carla
  2. +39
    -6
      source/carla_patchbay.py
  3. +2
    -2
      source/widgets/digitalpeakmeter.py

+ 1
- 0
source/carla View File

@@ -136,6 +136,7 @@ class CarlaMultiW(QTabWidget):


def idleFast(self): def idleFast(self):
self.fRack.idleFast() self.fRack.idleFast()
self.fPatchbay.idleFast()


def idleSlow(self): def idleSlow(self):
self.fRack.idleSlow() self.fRack.idleSlow()


+ 39
- 6
source/carla_patchbay.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-


# Carla patchbay widget code # Carla patchbay widget code
# Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com>
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as # modify it under the terms of the GNU General Public License as
@@ -20,7 +20,7 @@
# Imports (Global) # Imports (Global)


from PyQt4.QtCore import QPointF, QTimer from PyQt4.QtCore import QPointF, QTimer
from PyQt4.QtGui import QFrame, QGraphicsView, QImage, QPrinter, QPrintDialog, QVBoxLayout
from PyQt4.QtGui import QFrame, QGraphicsView, QGridLayout, QImage, QPrinter, QPrintDialog


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff) # Imports (Custom Stuff)
@@ -28,6 +28,7 @@ from PyQt4.QtGui import QFrame, QGraphicsView, QImage, QPrinter, QPrintDialog, Q
import patchcanvas import patchcanvas


from carla_widgets import * from carla_widgets import *
from digitalpeakmeter import DigitalPeakMeter
from pixmapkeyboard import PixmapKeyboardHArea from pixmapkeyboard import PixmapKeyboardHArea


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -52,7 +53,7 @@ class CarlaPatchbayW(QFrame):
def __init__(self, parent, doSetup = True, onlyPatchbay = True): def __init__(self, parent, doSetup = True, onlyPatchbay = True):
QFrame.__init__(self, parent) QFrame.__init__(self, parent)


self.fLayout = QVBoxLayout(self)
self.fLayout = QGridLayout(self)
self.fLayout.setContentsMargins(0, 0, 0, 0) self.fLayout.setContentsMargins(0, 0, 0, 0)
self.fLayout.setSpacing(1) self.fLayout.setSpacing(1)
self.setLayout(self.fLayout) self.setLayout(self.fLayout)
@@ -60,8 +61,24 @@ class CarlaPatchbayW(QFrame):
self.fView = QGraphicsView(self) self.fView = QGraphicsView(self)
self.fKeys = PixmapKeyboardHArea(self) self.fKeys = PixmapKeyboardHArea(self)


self.fLayout.addWidget(self.fView)
self.fLayout.addWidget(self.fKeys)
self.fPeaksIn = DigitalPeakMeter(self)
self.fPeaksOut = DigitalPeakMeter(self)
self.fPeaksCleared = True

self.fPeaksIn.setColor(DigitalPeakMeter.BLUE)
self.fPeaksIn.setChannels(2)
self.fPeaksIn.setOrientation(DigitalPeakMeter.VERTICAL)
self.fPeaksIn.setFixedWidth(25)

self.fPeaksOut.setColor(DigitalPeakMeter.GREEN)
self.fPeaksOut.setChannels(2)
self.fPeaksOut.setOrientation(DigitalPeakMeter.VERTICAL)
self.fPeaksOut.setFixedWidth(25)

self.fLayout.addWidget(self.fPeaksIn, 0, 0)
self.fLayout.addWidget(self.fView, 0, 1)
self.fLayout.addWidget(self.fPeaksOut, 0, 2)
self.fLayout.addWidget(self.fKeys, 1, 0, 1, 0)


# ------------------------------------------------------------- # -------------------------------------------------------------
# Internal stuff # Internal stuff
@@ -247,7 +264,23 @@ class CarlaPatchbayW(QFrame):
# ----------------------------------------------------------------- # -----------------------------------------------------------------


def idleFast(self): def idleFast(self):
pass
for pluginId in self.fSelectedPlugins:
self.fPeaksCleared = False
if self.fPeaksIn.isVisible():
self.fPeaksIn.displayMeter(1, Carla.host.get_input_peak_value(pluginId, True))
self.fPeaksIn.displayMeter(2, Carla.host.get_input_peak_value(pluginId, False))
if self.fPeaksOut.isVisible():
self.fPeaksOut.displayMeter(1, Carla.host.get_output_peak_value(pluginId, True))
self.fPeaksOut.displayMeter(2, Carla.host.get_output_peak_value(pluginId, False))
return
if self.fPeaksCleared:
return

self.fPeaksCleared = True
self.fPeaksIn.displayMeter(1, 0.0, True)
self.fPeaksIn.displayMeter(2, 0.0, True)
self.fPeaksOut.displayMeter(1, 0.0, True)
self.fPeaksOut.displayMeter(2, 0.0, True)


def idleSlow(self): def idleSlow(self):
for i in range(self.fPluginCount): for i in range(self.fPluginCount):


+ 2
- 2
source/widgets/digitalpeakmeter.py View File

@@ -48,7 +48,7 @@ class DigitalPeakMeter(QWidget):
self.setChannels(0) self.setChannels(0)
self.setColor(self.GREEN) self.setColor(self.GREEN)


def displayMeter(self, meter, level):
def displayMeter(self, meter, level, forced = False):
if meter <= 0 or meter > self.fChannels: if meter <= 0 or meter > self.fChannels:
return qCritical("DigitalPeakMeter::displayMeter(%i, %f) - invalid meter number" % (meter, level)) return qCritical("DigitalPeakMeter::displayMeter(%i, %f) - invalid meter number" % (meter, level))
if not isinstance(level, float): if not isinstance(level, float):
@@ -56,7 +56,7 @@ class DigitalPeakMeter(QWidget):


i = meter - 1 i = meter - 1


if self.fSmoothMultiplier > 0:
if self.fSmoothMultiplier > 0 and not forced:
level = (self.fLastValueData[i] * self.fSmoothMultiplier + level) / float(self.fSmoothMultiplier + 1) level = (self.fLastValueData[i] * self.fSmoothMultiplier + level) / float(self.fSmoothMultiplier + 1)


if level < 0.001: if level < 0.001:


Loading…
Cancel
Save