class_docstr: Convolutional (FIR) reverb.
class_docstr_tok: ["Convolutional","(","FIR",")","reverb","."]
docstr: Convert decoder outputs into ir response.
  
  Args:
    audio: Dry audio. 2-D Tensor of shape [batch, n_samples].
    ir: 3-D Tensor of shape [batch, ir_size, 1] or 2D Tensor of shape
      [batch, ir_size].
  
  Returns:
    controls: Dictionary of effect controls.
  
  Raises:
    ValueError: If trainable=False and ir is not provided.
docstr_tok: ["Convert","decoder","outputs","into","ir","response",".","Args",":","audio",":","Dry","audio",".","2-D","Tensor","of","shape","[","batch",",","n_samples","]",".","ir",":","3-D","Tensor","of","shape","[","batch",",","ir_size",",","1","]","or","2D","Tensor","of","shape","[","batch",",","ir_size","]",".","Returns",":","controls",":","Dictionary","of","effect","controls",".","Raises",":","ValueError",":","If","trainable=False","and","ir","is","not","provided","."]
code: def get_controls(self, audio, ir=None):
      """Convert decoder outputs into ir response.
  
      Args:
        audio: Dry audio. 2-D Tensor of shape [batch, n_samples].
        ir: 3-D Tensor of shape [batch, ir_size, 1] or 2D Tensor of shape
          [batch, ir_size].
  
      Returns:
        controls: Dictionary of effect controls.
  
      Raises:
        ValueError: If trainable=False and ir is not provided.
      """
      if self.trainable:
          ir = self._match_dimensions(audio, self._ir)
      else:
          if ir is None:
              raise ValueError(
                  'Must provide "ir" tensor if Reverb trainable=False.'
              )
  
      return {"audio": audio, "ir": ir}
  
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 5 for calling the Reverb obj's underlying member method code with example usage: obj.get_controls(audio, ir) and returns: dict