def __init__(self, parent): super().__init__(parent) self.audiobuffer = None self.setObjectName("Spectrum_Widget") self.gridLayout = QtWidgets.QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.PlotZoneSpect = HistPlot(self) self.PlotZoneSpect.setObjectName("PlotZoneSpect") self.gridLayout.addWidget(self.PlotZoneSpect, 0, 0, 1, 1) self.spec_min = DEFAULT_SPEC_MIN self.spec_max = DEFAULT_SPEC_MAX self.weighting = DEFAULT_WEIGHTING self.response_time = DEFAULT_RESPONSE_TIME self.PlotZoneSpect.setspecrange(self.spec_min, self.spec_max) self.PlotZoneSpect.setweighting(self.weighting) self.filters = octave_filters(DEFAULT_BANDSPEROCTAVE) self.dispbuffers = [0] * DEFAULT_BANDSPEROCTAVE * NOCTAVE # set kernel and parameters for the smoothing filter self.setresponsetime(self.response_time) # initialize the settings dialog self.settings_dialog = OctaveSpectrum_Settings_Dialog(self)
def __init__(self, parent, logger=None): QtGui.QWidget.__init__(self, parent) # store the logger instance if logger is None: self.logger = parent.parent.logger else: self.logger = logger self.audiobuffer = None self.setObjectName("Spectrum_Widget") self.gridLayout = QtGui.QGridLayout(self) self.gridLayout.setObjectName("gridLayout") self.PlotZoneSpect = HistPlot(self, self.logger) self.PlotZoneSpect.setObjectName("PlotZoneSpect") self.gridLayout.addWidget(self.PlotZoneSpect, 0, 0, 1, 1) self.setStyleSheet(STYLESHEET) self.spec_min = DEFAULT_SPEC_MIN self.spec_max = DEFAULT_SPEC_MAX self.weighting = DEFAULT_WEIGHTING self.response_time = DEFAULT_RESPONSE_TIME self.PlotZoneSpect.setspecrange(self.spec_min, self.spec_max) self.PlotZoneSpect.setweighting(self.weighting) self.filters = octave_filters(DEFAULT_BANDSPEROCTAVE) #self.bankbuffers = [RingBuffer() for band in range(0, DEFAULT_BANDSPEROCTAVE*NOCTAVE)] self.dispbuffers = [0] * DEFAULT_BANDSPEROCTAVE * NOCTAVE # 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 decs = self.filters.get_decs() ns = [self.response_time * SAMPLING_RATE / dec for dec in decs] Ns = [2 * 4096 / dec for dec in decs] self.alphas = [1. - (1. - w)**(1. / (n + 1)) for n in ns] #print ns, Ns self.kernels = self.compute_kernels(self.alphas, Ns) # initialize the settings dialog self.settings_dialog = OctaveSpectrum_Settings_Dialog( self, self.logger)