o
    Ii                     @   sl   d dl Zd dlm  mZ d dlZd dlZd dl	m
Z
 d dlmZ G dd dejZedkr4e  dS dS )    N)AudioEngine)signalc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestMultibandc                 C   s   t  | _d| j_d S )ND  )r   enginesample_rate)self r	   8/home/user/Projects/AutoRemaster/tests/test_multiband.pysetUp   s   zTestMultiband.setUpc                 C   s   d}t jd t jdd|}ddiddii d}d	d
dd	d
dd	d
dg}| jj||d}t t |d }t t |d }td|d td|d | j	||dd dS )z^Test that splitting and recombining without processing yields original signal (approximately).r   *   r         ?freq   i  )lowmidhigh              ?)threshold_dbratioband_settings   zOriginal RMS: z.4fzProcessed RMS: g{Gz?deltaN)
nprandomseednormalr   apply_multiband_compressionsqrtmeanprintassertAlmostEqual)r   sraudiobandsr   	processedrms_origrms_procr	   r	   r
   test_crossover_reconstruction   s(   z+TestMultiband.test_crossover_reconstructionc                    s  d t jdd dd}t dt j d | d }t dt j d	 | d }|| }d
dddddddddddg}| jj||d} fdd}||d}||d	}	||d}
||d	}td|dd|
d td|	dd|d | |
|d  | j||	|	d d dS )zGTest that compression on low band affects low frequencies but not high.r   r   r   F)endpointr   d   r   i'  g      4g       @r   )r   r   	makeup_dbr   c                    sD   t j| }t jt| d  }t t || }t || S )N   )r   fftrfftrfftfreqlenargminabs)sigr   r0   freqsidxr%   r	   r
   get_freq_magO   s   z=TestMultiband.test_low_band_compression.<locals>.get_freq_magz	Low Mag: z.2fz -> z
High Mag: g?g?r   N)	r   linspacesinpir   r    r#   
assertLessr$   )r   tZlow_toneZ	high_toneZmixr   r(   r:   Zorig_low_magZorig_high_magZproc_low_magZproc_high_magr	   r9   r
   test_low_band_compression8   s,   






z'TestMultiband.test_low_band_compressionN)__name__
__module____qualname__r   r+   r@   r	   r	   r	   r
   r      s    ,r   __main__)builtins@py_builtins_pytest.assertion.rewrite	assertionrewrite
@pytest_arunittestnumpyr   engine.processorr   scipyr   TestCaser   rA   mainr	   r	   r	   r
   <module>   s   "]