code: def testRegressionTwoOctaveRange(self):
      testBpms = [118, 120, 121, 122, 236, 240, 240, 240, 241]
  
      # Check first with 100 bpm and threshold+tolerance at default
      harmonicBpms = HarmonicBpm(bpm=100, threshold=20, tolerance=5)(
          testBpms
      )
      # The threshold being 20 a divisor of 120, 240, will yield these values
      # at tolerance 5.
      expectedBpm = [120, 240]
      self.assertEqualVector(harmonicBpms, expectedBpm)
  
      # Threshold Checks
  
      # Threshold is the value below which greatest common divisors of BPM are discarded
      # Check for more outputs included at lower threshold.
      harmonicBpms = HarmonicBpm(bpm=100, threshold=1, tolerance=5)(
          testBpms
      )
      expectedBpm = [118, 236]
      self.assertEqualVector(harmonicBpms, expectedBpm)
  
      # Check that higher threshold value lead to higher discarding rate.
      # Muliple BPMs are output and are discarded due to being below threshold.
      harmonicBpms = HarmonicBpm(bpm=100, threshold=25, tolerance=5)(
          testBpms
      )
      self.assertEqualVector(harmonicBpms, [])
  
      # Tolerance Checks
  
      # Tolerance parameter:consideration of whether two BPM values are equal or "harmonically" equal
      # Check for no outputs at reduced tolerance value
      harmonicBpms = HarmonicBpm(bpm=100, threshold=20, tolerance=4)(
          testBpms
      )
      # The threshold being 20 a divisor of 120, 240, will yield these values
      # at tolerance 4.
      expectedBpm = [120, 240]
      self.assertEqualVector(harmonicBpms, expectedBpm)
  
      # Increase tolerance to 10 to check if 236 is included
      harmonicBpms = HarmonicBpm(bpm=100, threshold=20, tolerance=10)(
          testBpms
      )
      # Check that multiples of threshold are included.
      expectedBpm = [120, 236]
      self.assertEqualVector(harmonicBpms, expectedBpm)
  
      harmonicBpms = HarmonicBpm(bpm=100, threshold=60, tolerance=5)(
          testBpms
      )
      self.assertEqualVector(harmonicBpms, [])
  
file_path: essentia/test/src/unittests/rhythm/test_harmonicbpm.py
imports: from essentia_test import *
  import essentia
label_desc: Use image node_id 7 for calling the TestHarmonicBpm obj's underlying member method code with example usage: obj.testRegressionTwoOctaveRange() without return types