class_docstr: Aubio Pitch estimation analyzer
class_docstr_tok: ["Aubio","Pitch","estimation","analyzer"]
code: def post_process(self):
      pitch = self.new_result(data_mode="value", time_mode="framewise")
  
      # parameters : None # TODO check with Piem "default" and "freq" in
      # setup
  
      pitch.id_metadata.id += "." + "pitch"
      pitch.id_metadata.name += " " + "pitch"
      pitch.id_metadata.unit = "Hz"
      pitch.data_object.value = self.pitches
      self.add_result(pitch)
  
      pitch_confidence = self.new_result(
          data_mode="value", time_mode="framewise"
      )
      pitch_confidence.id_metadata.id += "." + "pitch_confidence"
      pitch_confidence.id_metadata.name += " " + "pitch confidence"
      pitch_confidence.id_metadata.unit = None
      pitch_confidence.data_object.value = self.pitch_confidences
      self.add_result(pitch_confidence)
  
imports: from __future__ import absolute_import
  from timeside.core import implements, interfacedoc
  from timeside.core.analyzer import Analyzer
  from timeside.core.api import IAnalyzer
  from timeside.core.preprocessors import downmix_to_mono, frames_adapter
  from aubio import pitch
  import numpy
  from timeside.plugins.analyzer.utils import nextpow2
  from timeside.core.tools.parameters import store_parameters, Float, HasTraits
  from timeside.core.grapher import DisplayAnalyzer
label_desc: Use image node_id 9 for calling the AubioPitch obj's underlying member method code with example usage: obj.post_process() without return types