code: def testBandLimitedSawMasked(self):
      sr = 44100
      size = sr * 1
      freq = 440
      w = 2.0 * pi * freq
      subw = 2.0 * pi * (freq - 100)
      nharms = 10
      signal = zeros(size)
      for i in range(1, size):
          # masking noise:
          whitenoise = 2 * (random.rand(1) - 0.5)
          signal[i] += 2 * whitenoise
          for harm in range(1, nharms):
              signal[i] += 1.0 / harm * sin(i * harm * w / sr)
      signal = 5 * LowPass()(signal)
      for i in range(1, size):
          for harm in range(1, nharms + 1):
              signal[i] += 0.1 / harm * sin(i * harm * w / sr)
          signal[i] += 0.5 * sin(i * subw / sr)
      max_signal = max(signal) + 1
      signal = signal / max_signal
      self.runTest(signal, sr, freq, 1.5, 0.3)
  
file_path: essentia/test/src/unittests/tonal/test_pitchyin.py
imports: from essentia_test import *
  from numpy import sin, pi, mean, random
label_desc: Use image node_id 6 for calling the TestPitchYin obj's underlying member method code with example usage: obj.testBandLimitedSawMasked() without return types