code: def runAlg(
      self,
      usePolyphony=True,
      useThreeChords=True,
      numHarmonics=4,
      slope=0.6,
      profileType="temperley",
      pcpSize=36,
      windowSize=0.5,
  ):
      sampleRate = 44100
      audio = MonoLoader(
          filename=join(
              testdata.audio_dir,
              join("recorded", "mozart_c_major_30sec.wav"),
          ),
          sampleRate=sampleRate,
      )()
  
      fc = FrameCutter(frameSize=4096, hopSize=512)
  
      windower = Windowing(type="blackmanharris62")
  
      specAlg = Spectrum(size=4096)
      sPeaksAlg = SpectralPeaks(
          sampleRate=sampleRate,
          maxFrequency=sampleRate / 2,
          minFrequency=0,
          orderBy="magnitude",
      )
  
      hpcpAlg = HPCP(
          size=pcpSize, harmonics=numHarmonics - 1, windowSize=0.5
      )
  
      # Calculate the average hpcp over all frames of audio
      frame = fc(audio)
      sums = [0] * pcpSize
      count = 0
      while len(frame) != 0:
          sPeaks = sPeaksAlg(specAlg(windower(frame)))
          hpcp = hpcpAlg(*sPeaks)
  
          for p in range(len(hpcp)):
              sums[p] += hpcp[p]
  
          count += 1
          frame = fc(audio)
  
      avgs = [x / count for x in sums]
  
      keyAlg = Key(
          usePolyphony=usePolyphony,
          useThreeChords=useThreeChords,
          numHarmonics=numHarmonics,
          slope=slope,
          profileType=profileType,
          pcpSize=pcpSize,
      )
  
      return keyAlg(avgs)
  
file_path: essentia/test/src/unittests/tonal/test_key.py
imports: from essentia_test import *
label_desc: Use image node_id 4 for calling the TestKey obj's underlying member method code with example usage: obj.runAlg(usePolyphony, useThreeChords, numHarmonics, slope, profileType, pcpSize, windowSize) and returns: keyAlg