def apply(self, clip: Clip) -> Clip:
        """Apply the effect to the clip."""
        if clip.duration is None:
            raise ValueError("Attribute 'duration' not set")

        get_factor = (
            self._mono_factor_getter()
            if clip.nchannels == 1
            else self._stereo_factor_getter(clip.nchannels)
        )

        return clip.transform(
            lambda get_frame, t: get_factor(t, self.duration) * get_frame(t),
        )
Apply the effect to the clip.
moviepy/audio/fx/AudioFadeIn.py