class_docstr: Modulated delay times used in chorus, flanger, and vibrato effects.
class_docstr_tok: ["Modulated","delay","times","used","in","chorus",",","flanger",",","and","vibrato","effects","."]
docstr: Filter audio with LTV-FIR filter.
  
  Args:
    audio: Dry audio. 2-D Tensor of shape [batch, n_samples].
    gain: Amplitude of modulated signal. Shape [batch_size, n_samples, 1].
    phase: The normlaized instantaneous length of the delay, in the range of
      [center_ms - depth_ms, center_ms + depth_ms] from 0 to 1.0. Shape
      [batch_size, n_samples, 1].
  
  Returns:
    signal: Modulated audio of shape [batch, n_samples].
docstr_tok: ["Filter","audio","with","LTV-FIR","filter",".","Args",":","audio",":","Dry","audio",".","2-D","Tensor","of","shape","[","batch",",","n_samples","]",".","gain",":","Amplitude","of","modulated","signal",".","Shape","[","batch_size",",","n_samples",",","1","]",".","phase",":","The","normlaized","instantaneous","length","of","the","delay",",","in","the","range","of","[","center_ms","-","depth_ms",",","center_ms","+","depth_ms","]","from","0","to","1.0",".","Shape","[","batch_size",",","n_samples",",","1","]",".","Returns",":","signal",":","Modulated","audio","of","shape","[","batch",",","n_samples","]","."]
code: def get_signal(self, audio, gain, phase):
      """Filter audio with LTV-FIR filter.
  
      Args:
        audio: Dry audio. 2-D Tensor of shape [batch, n_samples].
        gain: Amplitude of modulated signal. Shape [batch_size, n_samples, 1].
        phase: The normlaized instantaneous length of the delay, in the range of
          [center_ms - depth_ms, center_ms + depth_ms] from 0 to 1.0. Shape
          [batch_size, n_samples, 1].
  
      Returns:
        signal: Modulated audio of shape [batch, n_samples].
      """
      max_delay_ms = self.center_ms + self.depth_ms
      max_length_samples = int(self.sample_rate / 1000.0 * max_delay_ms)
  
      depth_phase = self.depth_ms / max_delay_ms
      center_phase = self.center_ms / max_delay_ms
      phase = phase * depth_phase + center_phase
      wet_audio = core.variable_length_delay(
          audio=audio, phase=phase, max_length=max_length_samples
      )
      # Remove channel dimension.
      if len(gain.shape) == 3:
          gain = gain[..., 0]
  
      wet_audio *= gain
      return (wet_audio + audio) if self.add_dry else wet_audio
  
imports: from ddsp import core
  from ddsp import processors
  from ddsp import synths
  import gin
  import tensorflow.compat.v2
label_desc: Use image node_id 3 for calling the ModDelay obj's underlying member method code with example usage: obj.get_signal(audio, gain, phase) and returns: unknown