o
    YiL                     @   s8   d dl Zd dlmZmZ ddlmZ G dd deZdS )    N)buttersosfilt   )BaseProcessorModulec                   @   s   e Zd ZdZdejdejfddZdejdedejfddZddejd
edejfddZ	ddejdedejfddZ
ddejdejfddZdS )ImagingModulezStereo Imaging Module.audioreturnc                 K   s   |S )N )selfr   kwargsr	   r	   H/home/user/Projects/AutoRemaster/tools/automaster_app/modules/imaging.pyprocess   s   zImagingModule.process
balance_dbc                 C   s|   |j dkr|S t|dk r|S d| d d  }d|d d  }| }|dddf  |9  < |dddf  |9  < |S )z"Surgically correct stereo leaning.r   g?
         Nr   )ndimabscopy)r
   r   r   Zl_multZr_multoutr	   r	   r   apply_balancing   s   zImagingModule.apply_balancing        amountc           	      C   s   |j dks	|dkr|S | j}tddd|dd}t||dd}t|d	 }t|d
d
df |}| }|d
d
df d|  ||  |d
d
df< |S )z<Synthesize stereo width using the Haas effect (Micro-delay).r   r      i  hpsosfsoutput)axisgQ?N      ?)r   sample_rater   r   intnprollr   )	r
   r   r   srZsos_hpZhp_audioZdelay_samplesZ	delayed_rr   r	   r	   r   apply_haas_widening   s   ,z!ImagingModule.apply_haas_widening      ^@freqc           
      C   s   |j dkr|S | j}|d d df |d d df  d }|d d df |d d df  d }td|d|dd}t||}|| }|| }	t||	fS )Nr   r   r   r   r   r   r   )r   r!   r   r   r#   column_stack)
r
   r   r(   r%   midsider   Z	side_highleftrightr	   r	   r   make_mono_bass2   s   $$
zImagingModule.make_mono_bassr    c                    s    j dkr S | j}tddd|dd}tdddgd|dd}tddd	|dd} fd
d}	|	||}
|
|	||7 }
|
|	||7 }
|
S )Nr   r      lpr   r   i  bpr   c                    sb   t |  d d df }t |  d d df }|| d }|| d }||9 }t|| || fS )Nr   r   r   )r   r#   r)   )r   widthlrmsr   r	   r   process_bandI   s   z/ImagingModule.apply_width.<locals>.process_band)r   r!   r   )r
   r   Zlow_wZmid_wZhigh_wr%   sos_lowZsos_midZsos_highr8   r   r	   r7   r   apply_width@   s   
zImagingModule.apply_widthN)r   )r'   )r    r    r    )__name__
__module____qualname____doc__r#   ndarrayr   floatr   r&   r.   r:   r	   r	   r	   r   r      s    r   )numpyr#   scipy.signalr   r   baser   r   r	   r	   r	   r   <module>   s    