class_docstr: Derive a tempo histogram from (multi-task) TCN output.
  
  Parameters
  ----------
  min_bpm : float, optional
      Minimum tempo to detect [bpm].
  max_bpm : float, optional
      Maximum tempo to detect [bpm].
  
  References
  ----------
  .. [1] Sebastian Böck, Matthew Davies and Peter Knees,
         "Multi-Task learning of tempo and beat: learning one to improve the
         other",
         Proceedings of the 20th International Society for Music Information
         Retrieval Conference (ISMIR), 2019.
class_docstr_tok: ["Derive","a","tempo","histogram","from","(","multi-task",")","TCN","output",".","Parameters","--","--","--","--","--","min_bpm",":","float",",","optional","Minimum","tempo","to","detect","[","bpm","]",".","max_bpm",":","float",",","optional","Maximum","tempo","to","detect","[","bpm","]",".","References","--","--","--","--","--","..","[","1","]","Sebastian","B\u00f6ck",",","Matthew","Davies","and","Peter","Knees",",","``","Multi-Task","learning","of","tempo","and","beat",":","learning","one","to","improve","the","other","''",",","Proceedings","of","the","20th","International","Society","for","Music","Information","Retrieval","Conference","(","ISMIR",")",",","2019","."]
docstr: Extract tempo histogram from (multi-task) TCN output.
  
  Parameters
  ----------
  data : numpy array or tuple of numpy arrays
      Tempo-task (numpy array) or multi-task (tuple) output of TCN.
  
  Returns
  -------
  histogram_bins : numpy array
      Bins of tempo histogram, i.e. tempo strengths.
  histogram_tempi : numpy array
      Corresponding tempi [bpm].
code: def process(self, data, **kwargs):
      """
      Extract tempo histogram from (multi-task) TCN output.
  
      Parameters
      ----------
      data : numpy array or tuple of numpy arrays
          Tempo-task (numpy array) or multi-task (tuple) output of TCN.
  
      Returns
      -------
      histogram_bins : numpy array
          Bins of tempo histogram, i.e. tempo strengths.
      histogram_tempi : numpy array
          Corresponding tempi [bpm].
  
      """
      # if data is a tuple, tempo is usually last item of TCN output
      if type(data) == tuple:
          data = itemgetter(-1)(data)
      # use a linear tempo range
      tempi = np.arange(len(data))
      # determine tempo range to consider
      min_idx = np.argmax(tempi >= self.min_bpm)
      max_idx = np.argmin(tempi <= self.max_bpm)
      # return only selected range
      return data[min_idx:max_idx], tempi[min_idx:max_idx]
  
imports: from __future__ import absolute_import, division, print_function
  import sys
  import warnings
  from operator import itemgetter
  import numpy
  from ..audio.signal import smooth
  from ..processors import BufferProcessor, OnlineProcessor
label_desc: Use image node_id 2 for calling the TCNTempoHistogramProcessor obj's underlying member method code with example usage: obj.process(data) and returns: data,  tempi