code: def get_early_downsample_params(
      sr, hop_length, fmax_t, Q, n_octaves, verbose
  ):
      """Used in CQT2010 and CQT2010v2"""
  
      window_bandwidth = 1.5  # for hann window
      filter_cutoff = fmax_t * (1 + 0.5 * window_bandwidth / Q)
      sr, hop_length, downsample_factor = early_downsample(
          sr, hop_length, n_octaves, sr // 2, filter_cutoff
      )
      if downsample_factor != 1:
          if verbose == True:
              print(
                  "Can do early downsample, factor = ",
                  downsample_factor,
              )
          earlydownsample = True
          # print("new sr = ", sr)
          # print("new hop_length = ", hop_length)
          early_downsample_filter = create_lowpass_filter(
              band_center=1 / downsample_factor,
              kernelLength=256,
              transitionBandwidth=0.03,
          )
          early_downsample_filter = torch.tensor(
              early_downsample_filter
          )[None, None, :]
  
      else:
          if verbose == True:
              print(
                  "No early downsampling is required, downsample_factor = ",
                  downsample_factor,
              )
          early_downsample_filter = None
          earlydownsample = False
  
      return (
          sr,
          hop_length,
          downsample_factor,
          early_downsample_filter,
          earlydownsample,
      )
  
imports: import sys
  import torch
  from torch.nn.functional import conv1d, fold
  import numpy
  from time import time
  import math
  from scipy.signal import get_window
  from scipy import signal
  from scipy.fftpack import fft
  import warnings
  from nnAudio.librosa_functions import *
label_desc: Use image node_id 19 for calling a global function with example usage: get_early_downsample_params(sr, hop_length, fmax_t, Q, n_octaves, verbose) and returns: sr,  hop_length,  downsample_factor,  early_downsample_filter,  earlydownsample