code: def test_extend_pitch(self):
      num_frames = 5
      input = torch.ones(
          (num_frames, 1), device=self.device, dtype=self.dtype
      )
  
      num_pitches = 7
      pattern = [i + 1 for i in range(num_pitches)]
      expected = torch.tensor([pattern] * num_frames).to(
          dtype=self.dtype, device=self.device
      )
  
      # passing int will append harmonic tones
      output = F.extend_pitch(input, num_pitches)
      self.assertEqual(output, expected)
  
      # Same can be done with passing the list of multipliers
      output = F.extend_pitch(input, pattern)
      self.assertEqual(output, expected)
  
      # or with tensor
      pat = torch.tensor(pattern).to(
          dtype=self.dtype, device=self.device
      )
      output = F.extend_pitch(input, pat)
      self.assertEqual(output, expected)
  
imports: import torch
  import torchaudio.prototype.functional
  from parameterized import param, parameterized
  from torchaudio_unittest.common_utils import nested_params, TestBaseMixin
  from .dsp_utils import exp_sigmoid, freq_ir, oscillator_bank, sinc_ir
label_desc: Use image node_id 4 for calling the FunctionalTestImpl obj's underlying member method code with example usage: obj.test_extend_pitch() without return types