
    -i                     v    d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ e G d de	                      ZdS )	    )	dataclassN)Clip)audio_video_effect)Effect)convert_to_secondsc                   P    e Zd ZU dZeed<   d Zd Zd Ze	de
de
fd            Zd	S )
AudioFadeOuta  Return a sound clip where the sound fades out progressively
    over ``duration`` seconds at the end of the clip.

    Parameters
    ----------

    duration : float
      How long does it take for the sound to reach the zero level at the end
      of the clip.

    Examples
    --------

    .. code:: python

        clip = VideoFileClip("media/chaplin.mp4")
        clip.with_effects([afx.AudioFadeOut("00:00:06")])
    durationc                 8    t          | j                  | _        d S N)r   r
   )selfs    [/var/www/html/speakWrite/venv/lib/python3.11/site-packages/moviepy/audio/fx/AudioFadeOut.py__post_init__zAudioFadeOut.__post_init__"   s    *4=99    c                     fdS )Nc                 @    t          j        d| z
  z  |z  d          S )N      ?   )npminimum)tr
   clip_durations     r   <lambda>z2AudioFadeOut._mono_factor_getter.<locals>.<lambda>&   s#    2:c]Q5F.G(.RTU#V#V r    )r   r   s    `r   _mono_factor_getterz AudioFadeOut._mono_factor_getter%   s    VVVVVr   c                     fd}|S )Nc                     t          j        d| z
  z  |z  d          t          j        fdt                    D                       j        S )Nr   r   c                     g | ]}S r   r   ).0_factors     r   
<listcomp>zFAudioFadeOut._stereo_factor_getter.<locals>.getter.<locals>.<listcomp>+   s    >>>V>>>r   )r   r   arrayrangeT)r   r
   r!   r   	nchannelss     @r   getterz2AudioFadeOut._stereo_factor_getter.<locals>.getter)   sT    Z}q'8 9H DaHHF8>>>>U9-=-=>>>??AAr   r   )r   r   r&   r'   s    `` r   _stereo_factor_getterz"AudioFadeOut._stereo_factor_getter(   s/    	B 	B 	B 	B 	B 	B r   clipreturnc                      |j         t          d          |j        dk    r                     |j                   n                     |j         |j                  |                     fdd          S )zApply the effect to the clip.NzAttribute 'duration' not setr   c                 >     |j                    | |          z  S r   )r
   )	get_framer   
get_factorr   s     r   r   z$AudioFadeOut.apply.<locals>.<lambda><   s"    At}!=!=		!!L r   T)keep_duration)r
   
ValueErrorr&   r   r(   	transform)r   r)   r.   s   ` @r   applyzAudioFadeOut.apply/   s     = ;<<< ~"" $$T]333++DM4>JJ 	 ~~LLLLL  
 
 	
r   N)__name__
__module____qualname____doc__float__annotations__r   r   r(   r   r   r2   r   r   r   r	   r	      s          & OOO: : :W W W   
$ 
4 
 
 
 
 
 
r   r	   )dataclassesr   numpyr   moviepy.Clipr   moviepy.decoratorsr   moviepy.Effectr   moviepy.toolsr   r	   r   r   r   <module>r?      s    ! ! ! ! ! !           1 1 1 1 1 1 ! ! ! ! ! ! , , , , , , 2
 2
 2
 2
 2
6 2
 2
 2
 2
 2
r   