class_docstr: Audio level analyzer
  
  Examples
  --------
  
  >>> import timeside
  >>> from timeside.core import get_processor
  >>> from timeside.core.tools.test_samples import samples
  >>> source = samples['sweep.mp3']
  >>> decoder = get_processor('file_decoder')(uri=source)
  >>> level = get_processor('level')()
  >>> (decoder | level).run()
  >>> ('level.max' in level.results.keys()) and ('level.rms' in level.results.keys() )
  True
  >>> max = level.results['level.max']
  >>> print(max.data)
  [0.]
  >>> rms = level.results['level.rms']
  >>> print(rms.data)  # doctest: +ELLIPSIS
  [-3.7...]
class_docstr_tok: ["Audio","level","analyzer","Examples","--","--","--","--",">",">",">","import","timeside",">",">",">","from","timeside.core","import","get_processor",">",">",">","from","timeside.core.tools.test_samples","import","samples",">",">",">","source","=","samples","[","'sweep.mp3","'","]",">",">",">","decoder","=","get_processor","(","'file_decoder","'",")","(","uri=source",")",">",">",">","level","=","get_processor","(","'level","'",")","(",")",">",">",">","(","decoder","|","level",")",".run","(",")",">",">",">","(","'level.max","'","in","level.results.keys","(",")",")","and","(","'level.rms","'","in","level.results.keys","(",")",")","True",">",">",">","max","=","level.results","[","'level.max","'","]",">",">",">","print","(","max.data",")","[","0",".","]",">",">",">","rms","=","level.results","[","'level.rms","'","]",">",">",">","print","(","rms.data",")","#","doctest",":","+ELLIPSIS","[","-3.7","...","]"]
code: def process(self, frames, eod=False):
      if frames.size:
          # max_level
          max_value = np.abs(frames).max()
          if max_value > self.max_value:
              self.max_value = max_value
          # rms_level
          self.mean_values = np.append(
              self.mean_values, np.mean(np.square(frames))
          )
      return frames, eod
  
file_path: TimeSide/timeside/plugins/analyzer/level.py
imports: from timeside.core import implements, interfacedoc
  from timeside.core.analyzer import Analyzer
  from timeside.core.api import IValueAnalyzer
  import numpy
  from timeside.plugins.analyzer.utils import MACHINE_EPSILON
label_desc: Use image node_id 6 for calling the Level obj's underlying member method code with example usage: obj.process(frames, eod) and returns: frames,  eod