code: def computeBpmHistogram(
      self,
      noveltyCurve,
      frameSize=4,
      overlap=2,
      frameRate=44100.0 / 128.0,
      window="hann",
      zeroPadding=0,
      constantTempo=False,
      minBpm=30,
  ):
      pool = Pool()
      bpmHist = ess.BpmHistogram(
          frameRate=frameRate,
          frameSize=frameSize,
          overlap=overlap,
          zeroPadding=zeroPadding,
          constantTempo=constantTempo,
          windowType="hann",
          minBpm=minBpm,
      )
  
      gen = ess.VectorInput(noveltyCurve)
      gen.data >> bpmHist.novelty
      bpmHist.bpm >> (pool, "bpm")
      bpmHist.bpmCandidates >> (pool, "bpmCandidates")
      bpmHist.bpmMagnitudes >> (pool, "bpmMagnitudes")
      bpmHist.frameBpms >> None  # (pool, 'frameBpms')
      bpmHist.tempogram >> (pool, "tempogram")
      bpmHist.ticks >> (pool, "ticks")
      bpmHist.ticksMagnitude >> (pool, "ticksMagnitude")
      bpmHist.sinusoid >> (pool, "sinusoid")
      essentia.run(gen)
  
      return pool
  
file_path: essentia/test/src/unittests/rhythm/test_bpmhistogram.py
imports: from essentia_test import *
  import essentia
  from essentia import Pool
  from essentia.standard import *
  import essentia.streaming
  from math import ceil, fabs
  from numpy import argmax
label_desc: Use image node_id 2 for calling the TestBpmHistogram obj's underlying member method code with example usage: obj.computeBpmHistogram(noveltyCurve, frameSize, overlap, frameRate, window, zeroPadding, constantTempo, minBpm) and returns: pool