code: def make_signal(
      sr,
      duration,
      fmin: Optional[str] = "C1",
      fmax: Optional[str] = "C8",
  ):
      """Generates a linear sine sweep"""
  
      if fmin is None:
          fmin_normfreq = 0.01
      else:
          fmin_normfreq = librosa.note_to_hz(fmin) / sr
  
      if fmax is None:
          fmax_normfreq = 0.5
      else:
          fmax_normfreq = librosa.note_to_hz(fmax) / sr
  
      return np.sin(
          np.cumsum(
              2
              * np.pi
              * np.logspace(
                  np.log10(fmin_normfreq),
                  np.log10(fmax_normfreq),
                  num=int(duration * sr),
              )
          )
      )
  
imports: from __future__ import division
  import warnings
  import os
  from typing import Optional
  import librosa
  import numpy
  import scipy.stats
  import pytest
  from test_core import srand
label_desc: Use image node_id 2 for calling a global function with example usage: make_signal(sr, duration, fmin, fmax) and returns: np