def __init__(self, parent=None, logger=PrintLogger()): super().__init__(parent) self.setObjectName("LongLevels_Widget") self.logger = logger self.setObjectName("Scope_Widget") self.gridLayout = QtWidgets.QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.PlotZoneUp = TimePlot(self, self.logger) self.PlotZoneUp.setObjectName("PlotZoneUp") self.PlotZoneUp.setverticaltitle("Level (dB FS RMS)") self.PlotZoneUp.sethorizontaltitle("Time (min)") self.PlotZoneUp.setTrackerFormatter(lambda x, y: "%.3g min, %.3g" % (x, y)) self.level_min = DEFAULT_LEVEL_MIN self.level_max = DEFAULT_LEVEL_MAX self.PlotZoneUp.setverticalrange(self.level_min, self.level_max) self.gridLayout.addWidget(self.PlotZoneUp, 0, 0, 1, 1) self.logger = logger self.audiobuffer = None # initialize the settings dialog self.settings_dialog = LongLevels_Settings_Dialog(self, self.logger) # initialize the class instance that will do the fft self.proc = audioproc(self.logger) self.level = None # 1e-30 self.level_rms = -200. self.two_channels = False self.i = 0 self.old_index = 0 #self.response_time = 60. # 1 minute self.response_time = 20. # how many times we should decimate to end up with 100 points in the kernel self.Ndec = int(max(0, np.floor((np.log2(self.response_time * SAMPLING_RATE/100.))))) Ngauss = 4 self.b = np.array(gauss(10*Ngauss+1, 2.*Ngauss)) self.a = np.zeros(self.b.shape) self.a[0] = 1. self.zf = np.zeros(max(len(self.b), len(self.a)) - 1) self.subsampled_sampling_rate = SAMPLING_RATE / 2 ** (self.Ndec) self.subsampler = Subsampler(self.Ndec) self.length_seconds = 60.*10 # actually this should be linked to the pixel width of the plot area self.length_samples = self.length_seconds * self.subsampled_sampling_rate # ringbuffer for the subsampled data self.ringbuffer = RingBuffer(self.logger)
def __init__(self, parent, sharedGLWidget, logger=PrintLogger()): super().__init__(parent) self.audiobuffer = None self.logger = logger self.setObjectName("Scope_Widget") self.gridLayout = QtWidgets.QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.PlotZoneUp = TimePlot(self, sharedGLWidget, self.logger) self.PlotZoneUp.setObjectName("PlotZoneUp") self.gridLayout.addWidget(self.PlotZoneUp, 0, 0, 1, 1) self.settings_dialog = Scope_Settings_Dialog(self, self.logger) self.timerange = DEFAULT_TIMERANGE
def __init__(self, parent=None, logger=PrintLogger()): QtGui.QWidget.__init__(self, parent) self.audiobuffer = None self.logger = logger self.setObjectName("Scope_Widget") self.gridLayout = QtGui.QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.PlotZoneUp = TimePlot(self, self.logger) self.PlotZoneUp.setObjectName("PlotZoneUp") self.gridLayout.addWidget(self.PlotZoneUp, 0, 0, 1, 1) self.setStyleSheet(STYLESHEET) self.settings_dialog = Scope_Settings_Dialog(self, self.logger) self.timerange = DEFAULT_TIMERANGE
def __init__(self, parent=None): super().__init__(parent) self.setObjectName("LongLevels_Widget") self.setObjectName("Scope_Widget") self.gridLayout = QtWidgets.QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.PlotZoneUp = TimePlot(self) self.PlotZoneUp.setObjectName("PlotZoneUp") self.PlotZoneUp.setverticaltitle("Level (dB FS RMS)") self.PlotZoneUp.sethorizontaltitle("Time (sec)") self.PlotZoneUp.setTrackerFormatter(lambda x, y: "%.3g sec, %.3g" % (x, y)) self.level_min = DEFAULT_LEVEL_MIN self.level_max = DEFAULT_LEVEL_MAX self.PlotZoneUp.setverticalrange(self.level_min, self.level_max) self.gridLayout.addWidget(self.PlotZoneUp, 0, 0, 1, 1) self.audiobuffer = None # initialize the settings dialog self.settings_dialog = LongLevels_Settings_Dialog(self) # initialize the class instance that will do the fft self.proc = audioproc() self.level = None # 1e-30 self.level_rms = -200. self.two_channels = False self.i = 0 self.old_index = 0 #Set the initial timespan and response time self.length_seconds = DEFAULT_MAXTIME self.setresptime(DEFAULT_RESPONSE_TIME) # ringbuffer for the subsampled data self.ringbuffer = RingBuffer()
def __init__(self, parent=None, logger=PrintLogger()): super().__init__(parent) self.setObjectName("LongLevels_Widget") self.logger = logger self.setObjectName("Scope_Widget") self.gridLayout = QtWidgets.QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.PlotZoneUp = TimePlot(self, self.logger) self.PlotZoneUp.setObjectName("PlotZoneUp") self.PlotZoneUp.setverticaltitle("Level (dB FS RMS)") self.PlotZoneUp.sethorizontaltitle("Time (min)") self.PlotZoneUp.setTrackerFormatter(lambda x, y: "%.3g min, %.3g" % (x, y)) self.level_min = DEFAULT_LEVEL_MIN self.level_max = DEFAULT_LEVEL_MAX self.PlotZoneUp.setverticalrange(self.level_min, self.level_max) self.gridLayout.addWidget(self.PlotZoneUp, 0, 0, 1, 1) self.logger = logger self.audiobuffer = None # initialize the settings dialog self.settings_dialog = LongLevels_Settings_Dialog(self, self.logger) # initialize the class instance that will do the fft self.proc = audioproc(self.logger) #self.response_time = 60. # 1 minute self.response_time = 1. # an exponential smoothing filter is a simple IIR filter # s_i = alpha*x_i + (1-alpha)*s_{i-1} # we compute alpha so that the n most recent samples represent 100*w percent of the output w = 0.65 # how many times we should decimate to end up with 100 points in the kernel self.Ndec = int( max(0, np.floor( (np.log2(self.response_time * SAMPLING_RATE / 100.))))) n = self.response_time * SAMPLING_RATE / 2**self.Ndec N = int(5 * n) self.alpha = 1. - (1. - w)**(1. / (n + 1)) self.kernel = (1. - self.alpha)**(np.arange(0, N)[::-1]) self.level = None # 1e-30 self.level_rms = -200. self.two_channels = False self.i = 0 self.subsampled_sampling_rate = SAMPLING_RATE / 2**(self.Ndec) self.subsampler = Subsampler(self.Ndec) self.old_index = 0 self.length_seconds = 60. * 10 # actually this should be linked to the pixel width of the plot area self.length_samples = self.length_seconds * self.subsampled_sampling_rate # ringbuffer for the subsampled data self.ringbuffer = RingBuffer(self.logger)