o ±¨fÎã@s(ddlZd dd„Zd dd„Zdd „ZdS) éNçTÀcCs¢t d|d|dd¡}t |d¡}d|d<dddt d¡dt |¡t |d¡t |d ¡d t |d ¡d t |d ¡}t ||¡}|S) Nrééçð?g@ç4@i¢/i„âÜg÷(\Â…z@gà?gìQ¸¥§Æ@g…ëÑà A)ÚnpÚlinspaceÚpowerÚlog10Úmaximum)ÚfsÚn_fftÚmin_dbÚfreqZfreq_sqÚweight©rú'/Users/hung/Desktop/tango2/tools/mix.pyÚa_weights  ÿ þýü rÚ A_weightingc Cs.|dkrd}n|dkrd}ntd |¡ƒ‚|d}g}tdt|ƒ|d|ƒD]U}|d kr;t ||||…d¡}n<|d krptj t |d¡dd …||||…¡} t  | ¡d} | t  d t ||ƒd ¡} t  | ¡}ntd  |¡ƒ‚|  |¡q't |¡}t |t  d |d ¡¡}d t |¡} | S)Ni€>iiD¬iz Invalid fs {}rrrZRMSEréÿÿÿÿé zInvalid mode {})Ú ExceptionÚformatÚrangeÚlenrÚmeanÚfftÚrfftÚhanningÚabsr rÚsumÚappendÚarrayr r ) Úsoundr rÚmoder ÚstrideÚgainÚiÚgÚspecZ power_specZa_weighted_specÚgain_dbrrrÚ compute_gains*.   r+cCszt t||ƒ¡}t t||ƒ¡}ddt d||d¡d||}|||d|t |dd|d¡}|S)Nrrrrr)rÚmaxr+r Úsqrt)Úsound1Úsound2Úrr Zgain1Zgain2Útr#rrrÚmix.s (.r2)r)rr)Únumpyrrr+r2rrrrÚs