
    i                    P    d dl mZ d dlZdZd	dZd
dZd ZddZ	 d	 	 	 	 	 ddZ	y)    )annotationsNz0.30.3c                 D    	 dd l } t        | dd       S # t        $ r Y y w xY w)Nr   __version__)mlxImportErrorgetattr)r   s    k/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/demucs_mlx/mlx_backend.py_get_mlx_versionr
      s/     3t,,  s    	c                 ^    t               } | y | t        k  rt        d|  dt         d       y y )NzWarning: MLX version z is older than recommended .)r
   MIN_MLX_VERSIONprint)versions    r	   ensure_mlx_versionr      s:     G %gY.I/IZZ[\] !    c                 N    	 dd l m}  | S # t        $ r}t        d      |d }~ww xY w)Nr   z$mlx is required for the MLX backend.)mlx.corecorer   RuntimeError)mxexcs     r	   _require_mlxr      s4    L I  LABKLs   
 	$$c                Z    	 dd l m} t        | |j                        S # t        $ r Y yw xY w)Nr   F)r   r   
isinstancearrayr   )xr   s     r	   is_mx_arrayr      s-    !RXX&& s    	**c                   ddl }t               }||k(  r| S | j                  }t        |      dk(  rL|d   }g }t	        |      D ]$  }	t        | |	   |||      }
|j                  |
       & |j                  |d      S t        |      dk(  rnt        d|       |j                  |j                  | d      |||      }
|j                  |
d      S )	a  
    Resample MLX array using mlx-audio-io's native resampling.

    Args:
        x: Input MLX array with shape (channels, frames) or (batch, channels, frames)
        orig_freq: Original sample rate
        new_freq: Target sample rate
        quality: Resampling quality ("fastest", "low", "medium", "high", "best", "default")

    Returns:
        Resampled MLX array with same shape layout
    r   N   )axis   z#Expected 2D or 3D array, got shape )   r   )quality)mlx_audio_ior   shapelenrangeresample_mxappendstack
ValueErrorresample	transpose)r   	orig_freqnew_freqr#   macr   original_shape
batch_sizeoutputsi	resampleds              r	   r(   r(   #   s    $ 	BHWWN >a#A&
z"A#AaD)XwGINN9% # xxax((	^		!>~>NOPP R\\!V4iSZ[I<<	6**r   )returnztp.Optional[str])r6   None)r   ztp.Anyr6   bool)high)r.   intr/   r:   r#   str)

__future__r   typingtpr   r
   r   r   r   r(    r   r	   <module>r@      sK    " -^ 	*+*+ *+ 	*+r   