code: def main_note(audio):
      rate, y = audio
      if len(y.shape) == 2:
          y = y.T[0]
      N = len(y)
      T = 1.0 / rate
      yf = fft(y)
      yf2 = 2.0 / N * np.abs(yf[0 : N // 2])
      xf = np.linspace(0.0, 1.0 / (2.0 * T), N // 2)
  
      volume_per_pitch = {}
      total_volume = np.sum(yf2)
      for freq, volume in zip(xf, yf2):
          if freq == 0:
              continue
          pitch = get_pitch(freq)
          if pitch not in volume_per_pitch:
              volume_per_pitch[pitch] = 0
          volume_per_pitch[pitch] += 1.0 * volume / total_volume
      volume_per_pitch = {
          k: float(v) for k, v in volume_per_pitch.items()
      }
      return volume_per_pitch
  
imports: from math import log2, pow
  import os
  import numpy
  from scipy.fftpack import fft
  import gradio
label_desc: Use image node_id 2 for calling a global function with example usage: main_note(audio) and returns: volume_per_pitch