def METHOD_NAME(self, magnitude: torch.Tensor, phase) -> torch.Tensor:
    x = torch.cat(
        [magnitude * torch.cos(phase), magnitude * torch.sin(phase)],
        dim=1
    )
    x = F.conv_transpose1d(x, self.basis, stride=self.hop_length)
    win_sum_sq = self.get_window_sum_square(
        magnitude.shape[-1], hop_length=self.hop_length,
        win_length=self.win_length, n_fft=self.n_fft
    ).to(magnitude.device)
    # remove modulation effects
    approx_nonzero_indices = win_sum_sq > self.tiny
    x[:, :, approx_nonzero_indices] /= win_sum_sq[approx_nonzero_indices]
    x *= self.n_fft / self.hop_length
    x = x[:, :, self.n_fft // 2:]
    x = x[:, :, :-self.n_fft // 2:]
    return x