class_docstr: Dissonance from Essentia
class_docstr_tok: ["Dissonance","from","Essentia"]
code: def process(self, frames, eod=False):
      if not eod:
          w_frame = self.windower(essentia.array(frames.squeeze()))
          spectrum = self.spec_alg(w_frame)
          spec, mags = self.spec_peaks_alg(spectrum)
          self.dissonance.append(self.dissonance_alg(spec, mags))
      return frames, eod
  
imports: from timeside.core import implements, interfacedoc
  from timeside.core.analyzer import Analyzer
  from timeside.core.api import IAnalyzer
  from timeside.core.tools.parameters import HasTraits, Int
  from timeside.core.preprocessors import downmix_to_mono, frames_adapter
  import numpy
  from timeside.core.tools.parameters import store_parameters
  import essentia
  import essentia.standard
  from essentia.standard import Spectrum
  from essentia.standard import SpectralPeaks
  from essentia.standard import Dissonance
  from essentia.standard import Windowing
  from timeside.core.grapher import DisplayAnalyzer
label_desc: Use image node_id 7 for calling the Essentia_Dissonance obj's underlying member method code with example usage: obj.process(frames, eod) and returns: frames,  eod