code: def testRegressionSyntheticSignal(self):
      # generate a test signal concatenating different frequencies
      signalSize = 15 * 2048
  
      # Concat 3 sine waves together of different frequencies
      x = 0.5 * numpy.sin(
          (array(range(signalSize)) / 44100.0) * 124 * 2 * math.pi
      )
      y = 0.5 * numpy.sin(
          (array(range(signalSize)) / 44100.0) * 100 * 2 * math.pi
      )
      z = 0.5 * numpy.sin(
          (array(range(signalSize)) / 44100.0) * 80 * 2 * math.pi
      )
      mix = concatenate([x, y, z])
  
      # tiam = acronym for "Tonic Indian Art Music"
      tiam = TonicIndianArtMusic(
          minTonicFrequency=50, maxTonicFrequency=111
      )
      tonic = tiam(mix)
      # Check that tonic is above minTonicFrequency
      self.assertGreater(tonic, 50)
      # Check that tonic is below highest frequency in signal
      self.assertGreater(124, tonic)
  
      ### Make a (unharmonic) chord
      x = 0.5 * numpy.sin(
          (array(range(signalSize)) / 44100.0) * 124 * 2 * math.pi
      )
      y = 0.5 * numpy.sin(
          (array(range(signalSize)) / 44100.0) * 100 * 2 * math.pi
      )
      z = 0.5 * numpy.sin(
          (array(range(signalSize)) / 44100.0) * 80 * 2 * math.pi
      )
      chord = x + y + z
  
      tiam = TonicIndianArtMusic(
          minTonicFrequency=50, maxTonicFrequency=111
      )
      tonic = tiam(chord)
  
      # Check that tonic is above min frequency in signal
      self.assertGreater(tonic, 80)
      # Check that tonic is below highest frequency in signal
      self.assertGreater(124, tonic)
  
file_path: essentia/test/src/unittests/tonal/test_tonicindianartmusic.py
imports: from essentia_test import *
  from numpy import sin, float32, pi, arange, mean, log2, floor, ceil, math, concatenate
  import numpy
label_desc: Use image node_id 10 for calling the TestTonicIndianArtMusic obj's underlying member method code with example usage: obj.testRegressionSyntheticSignal() without return types