class_docstr: Decodes MIDI notes (& velocities) to f0 (& loudness).
class_docstr_tok: ["Decodes","MIDI","notes","(","&","velocities",")","to","f0","(","&","loudness",")","."]
docstr: Forward pass for the MIDI decoder.
  
  Args:
    z_pitch: Tensor containing encoded pitch in MIDI scale. [batch, time, 1].
    z_vel: Tensor containing encoded velocity in MIDI scale. [batch, time, 1].
    z: Additional non-MIDI latent tensor. [batch, time, n_z]
  
  Returns:
    f0_midi, loudness: Reconstructed f0 and loudness.
docstr_tok: ["Forward","pass","for","the","MIDI","decoder",".","Args",":","z_pitch",":","Tensor","containing","encoded","pitch","in","MIDI","scale",".","[","batch",",","time",",","1","]",".","z_vel",":","Tensor","containing","encoded","velocity","in","MIDI","scale",".","[","batch",",","time",",","1","]",".","z",":","Additional","non-MIDI","latent","tensor",".","[","batch",",","time",",","n_z","]","Returns",":","f0_midi",",","loudness",":","Reconstructed","f0","and","loudness","."]
code: def call(
      self, z_pitch, z_vel=None, z=None
  ) -> ["f0_midi", "loudness"]:
      """Forward pass for the MIDI decoder.
  
      Args:
        z_pitch: Tensor containing encoded pitch in MIDI scale. [batch, time, 1].
        z_vel: Tensor containing encoded velocity in MIDI scale. [batch, time, 1].
        z: Additional non-MIDI latent tensor. [batch, time, n_z]
  
      Returns:
        f0_midi, loudness: Reconstructed f0 and loudness.
      """
      # pylint: disable=unused-argument
      # x = tf.concat([z_pitch, z_vel], axis=-1)  # TODO(jesse): Allow velocity.
      x = z_pitch
      x = self.net(x) if z is None else self.net([x, z])
  
      if self.norm is not None:
          x = self.norm(x)
  
      x = self.dense_out(x)
  
      f0_midi = x[..., 0:1]
      loudness = x[..., 1:2]
  
      if self.f0_residual:
          f0_midi += z_pitch
  
      if self.center_loudness:
          loudness = loudness * 30.0 - 70.0
  
      return f0_midi, loudness
  
imports: from ddsp import core
  from ddsp.training import nn
  import gin
  import tensorflow
label_desc: Use image node_id 2 for calling the MidiDecoder obj's underlying member method code with example usage: obj.call(z_pitch, z_vel, z) and returns: f0_midi,  loudness