Ë
    âQ(hço  ã                   óÜ   — d Z ddlZddlZddlZddlZddlZddlmZ g d¢Z	 G d„ de
«      Z G d„ de«      Zej                  ej                  hZd	„ Zd
„ Z	 dd„Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zy)zÂ
Module to read / write wav files using NumPy arrays

Functions
---------
`read`: Return the sample rate (in samples/sec) and data from a WAV file.

`write`: Write a NumPy array as a WAV file.

é    N)ÚIntEnum)ÚWavFileWarningÚreadÚwritec                   ó   — e Zd Zy)r   N)Ú__name__Ú
__module__Ú__qualname__© ó    úN/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/io/wavfile.pyr   r      s   „ Ør   r   c                   ó|  — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=d;Z>d<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTdRZUdSZVdTZWdUZXdVZYdWZZdXZ[dYZ\dZZ]d[Z^d\Z_d]Z`d^Zad_Zbd`ZcdaZddbZedcZfddZgdeZhdfZidgZjdhZkdiZldjZmdkZndlZodmZpdnZqdoZrdpZsdqZtdrZudsZvdtZwduZxdvZydwZzdxZ{dyZ|dzZ}d{Z~d|Zd}Z€d~Z�dZ‚d€Zƒd�Z„d‚Z…dƒZ†d„Z‡d…Zˆd†Z‰d‡ZŠdˆZ‹d‰ZŒdŠZ�d‹ZŽdŒZ�d�Z�dŽZ‘d�Z’d�Z“d‘Z”d’Z•d“Z–d”Z—d•Z˜d–Z™d—Zšd˜Z›d™ZœdšZ�d›ZždœZŸd�Z džZ¡dŸZ¢d Z£d¡Z¤d¢Z¥d£Z¦d¤Z§d¥Z¨d¦Z©d§Zªd¨Z«d©Z¬dªZ­d«Z®d¬Z¯d­Z°d®Z±d¯Z²d°Z³d±Z´d²Zµd³Z¶d´Z·dµZ¸d¶Z¹d·Zºd¸Z»d¹Z¼dºZ½d»Z¾d¼Z¿d½ZÀd¾ZÁd¿ZÂdÀZÃdÁZÄdÂZÅdÃZÆdÄZÇdÅZÈdÆZÉdÇZÊdÈZËdÉZÌdÊZÍdËZÎdÌZÏdÍZÐdÎZÑdÏZÒdÐZÓdÑZÔdÒZÕdÓZÖdÔZ×dÕZØdÖZÙd×ZÚdØZÛdÙZÜdÚZÝdÛZÞdÜZßdÝZàdÞZádßZâdàZãdáZädâZådãZædäZçdåZèdæZédçZêdèZëdéZìdêZídëZîdìZïdíZðdîZñdïZòdðZódñZôdòZõdóZödôZ÷dõZødöZùd÷ZúdøZûdùZüdúZýdûZþdüZÿdý�Z dþ�Zdÿ�Z�d �Z�d�Z�d�Z�d�Z�d�Z�d�Z�d�Z	�d�Z
�d�Z�d	�Z�d
�Z�d�Z�d�Z�y(  ÚWAVE_FORMATzš
    WAVE form wFormatTag IDs

    Complete list is in mmreg.h in Windows 10 SDK.  ALAC and OPUS are the
    newest additions, in v10.0.14393 2016-07
    r   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é    é!   é"   é#   é$   é%   é&   é'   é(   é0   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é@   éA   éB   éC   éD   éE   éP   éR   éS   éU   éY   é`   éa   éb   éc   éd   ée   éf   ég   éi   ép   éq   ér   és   ét   éu   év   éw   éx   éy   éz   é{   é€   é�   é‚   éƒ   é„   é…   é†   éˆ   é‰   éŠ   é‹   éŒ   é�   é‘   é’   é“   é”   é—   é˜   é™   é    é¡   é¢   é£   é¤   é°   éÿ   é   i  i  i  i   i!  i#  i%  i0  i1  i2  i3  i4  i5  i6  i@  iA  iB  iP  iQ  iU  i`  ia  ib  ic  id  ip  iq  ir  is  it  iu  iv  iw  ix  i€  i�  i   i  i  i  i  i  i   i0  i@  iA  iI  iP  iQ  i`  ip  iq  ir  is  i€  i�  i…  i   iP  iQ  i   i  i  iP  i   i  i€  i�  i®  i   i  i  i  i  i   i  i  i  i  i   i  i   i   i  i  i  i	  i
  i  i  i  iq  iy  i  i  i  iÄ  i    i   i3  iCA  iB  iCB  iLC  iLV  iVW  iOg  iPg  iQg  iog  ipg  iqg  ial  i p  iOp  imp  ias  ibs  ics  i!z  i"z  i ¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i	¡  i
¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i¡  i ¡  i!¡  i"¡  i#¡  i$¡  i¬ñ  iþÿ  iÿÿ  N(  r   r	   r
   Ú__doc__ÚUNKNOWNÚPCMÚADPCMÚ
IEEE_FLOATÚVSELPÚIBM_CVSDÚALAWÚMULAWÚDTSÚDRMÚ	WMAVOICE9Ú
WMAVOICE10Ú	OKI_ADPCMÚ	DVI_ADPCMÚ	IMA_ADPCMÚMEDIASPACE_ADPCMÚSIERRA_ADPCMÚ
G723_ADPCMÚDIGISTDÚDIGIFIXÚDIALOGIC_OKI_ADPCMÚMEDIAVISION_ADPCMÚCU_CODECÚHP_DYN_VOICEÚYAMAHA_ADPCMÚSONARCÚDSPGROUP_TRUESPEECHÚECHOSC1ÚAUDIOFILE_AF36ÚAPTXÚAUDIOFILE_AF10ÚPROSODY_1612ÚLRCÚ	DOLBY_AC2ÚGSM610ÚMSNAUDIOÚANTEX_ADPCMEÚCONTROL_RES_VQLPCÚDIGIREALÚ	DIGIADPCMÚCONTROL_RES_CR10ÚNMS_VBXADPCMÚCS_IMAADPCMÚECHOSC3ÚROCKWELL_ADPCMÚROCKWELL_DIGITALKÚXEBECÚ
G721_ADPCMÚ	G728_CELPÚMSG723ÚINTEL_G723_1Ú
INTEL_G729Ú
SHARP_G726ÚMPEGÚRT24ÚPACÚ
MPEGLAYER3ÚLUCENT_G723ÚCIRRUSÚESPCMÚVOXWAREÚCANOPUS_ATRACÚ
G726_ADPCMÚ
G722_ADPCMÚDSATÚDSAT_DISPLAYÚVOXWARE_BYTE_ALIGNEDÚVOXWARE_AC8ÚVOXWARE_AC10ÚVOXWARE_AC16ÚVOXWARE_AC20ÚVOXWARE_RT24ÚVOXWARE_RT29ÚVOXWARE_RT29HWÚVOXWARE_VR12ÚVOXWARE_VR18ÚVOXWARE_TQ40ÚVOXWARE_SC3ÚVOXWARE_SC3_1Ú	SOFTSOUNDÚVOXWARE_TQ60ÚMSRT24ÚG729AÚMVI_MVI2ÚDF_G726Ú	DF_GSM610ÚISIAUDIOÚONLIVEÚMULTITUDE_FT_SX20ÚINFOCOM_ITS_G721_ADPCMÚCONVEDIA_G729Ú
CONGRUENCYÚSBC24ÚDOLBY_AC3_SPDIFÚMEDIASONIC_G723ÚPROSODY_8KBPSÚZYXEL_ADPCMÚPHILIPS_LPCBBÚPACKEDÚMALDEN_PHONYTALKÚRACAL_RECORDER_GSMÚRACAL_RECORDER_G720_AÚRACAL_RECORDER_G723_1ÚRACAL_RECORDER_TETRA_ACELPÚNEC_AACÚRAW_AAC1ÚRHETOREX_ADPCMÚIRATÚ	VIVO_G723Ú
VIVO_SIRENÚPHILIPS_CELPÚPHILIPS_GRUNDIGÚDIGITAL_G723ÚSANYO_LD_ADPCMÚSIPROLAB_ACEPLNETÚSIPROLAB_ACELP4800ÚSIPROLAB_ACELP8V3ÚSIPROLAB_G729ÚSIPROLAB_G729AÚSIPROLAB_KELVINÚVOICEAGE_AMRÚ	G726ADPCMÚDICTAPHONE_CELP68ÚDICTAPHONE_CELP54ÚQUALCOMM_PUREVOICEÚQUALCOMM_HALFRATEÚTUBGSMÚMSAUDIO1ÚWMAUDIO2ÚWMAUDIO3ÚWMAUDIO_LOSSLESSÚWMASPDIFÚUNISYS_NAP_ADPCMÚUNISYS_NAP_ULAWÚUNISYS_NAP_ALAWÚUNISYS_NAP_16KÚSYCOM_ACM_SYC008ÚSYCOM_ACM_SYC701_G726LÚSYCOM_ACM_SYC701_CELP54ÚSYCOM_ACM_SYC701_CELP68ÚKNOWLEDGE_ADVENTURE_ADPCMÚFRAUNHOFER_IIS_MPEG2_AACÚDTS_DSÚCREATIVE_ADPCMÚCREATIVE_FASTSPEECH8ÚCREATIVE_FASTSPEECH10Ú
UHER_ADPCMÚULEAD_DV_AUDIOÚULEAD_DV_AUDIO_1ÚQUARTERDECKÚILINK_VCÚ	RAW_SPORTÚESST_AC3ÚGENERIC_PASSTHRUÚIPI_HSXÚ	IPI_RPELPÚCS2ÚSONY_SCXÚSONY_SCYÚSONY_ATRAC3ÚSONY_SPCÚTELUM_AUDIOÚTELUM_IA_AUDIOÚNORCOM_VOICE_SYSTEMS_ADPCMÚFM_TOWNS_SNDÚMICRONASÚMICRONAS_CELP833ÚBTV_DIGITALÚINTEL_MUSIC_CODERÚINDEO_AUDIOÚQDESIGN_MUSICÚON2_VP7_AUDIOÚON2_VP6_AUDIOÚ	VME_VMPCMÚTPCÚLIGHTWAVE_LOSSLESSÚOLIGSMÚOLIADPCMÚOLICELPÚOLISBCÚOLIOPRÚLH_CODECÚLH_CODEC_CELPÚLH_CODEC_SBC8ÚLH_CODEC_SBC12ÚLH_CODEC_SBC16ÚNORRISÚ
ISIAUDIO_2ÚSOUNDSPACE_MUSICOMPRESSÚMPEG_ADTS_AACÚMPEG_RAW_AACÚ	MPEG_LOASÚNOKIA_MPEG_ADTS_AACÚNOKIA_MPEG_RAW_AACÚVODAFONE_MPEG_ADTS_AACÚVODAFONE_MPEG_RAW_AACÚ
MPEG_HEAACÚVOXWARE_RT24_SPEECHÚSONICFOUNDRY_LOSSLESSÚINNINGS_TELECOM_ADPCMÚLUCENT_SX8300PÚLUCENT_SX5363SÚCUSEEMEÚNTCSOFT_ALF2CM_ACMÚDVMÚDTS2ÚMAKEAVISÚDIVIO_MPEG4_AACÚNOKIA_ADAPTIVE_MULTIRATEÚ
DIVIO_G726ÚLEAD_SPEECHÚLEAD_VORBISÚWAVPACK_AUDIOÚOGG_VORBIS_MODE_1ÚOGG_VORBIS_MODE_2ÚOGG_VORBIS_MODE_3ÚOGG_VORBIS_MODE_1_PLUSÚOGG_VORBIS_MODE_2_PLUSÚOGG_VORBIS_MODE_3_PLUSÚALACÚ	_3COM_NBXÚOPUSÚFAAD_AACÚAMR_NBÚAMR_WBÚAMR_WPÚGSM_AMR_CBRÚGSM_AMR_VBR_SIDÚCOMVERSE_INFOSYS_G723_1ÚCOMVERSE_INFOSYS_AVQSBCÚCOMVERSE_INFOSYS_SBCÚSYMBOL_G729_AÚVOICEAGE_AMR_WBÚINGENIENT_G726Ú	MPEG4_AACÚENCORE_G726Ú	ZOLL_ASAOÚSPEEX_VOICEÚVIANIX_MASCÚWM9_SPECTRUM_ANALYZERÚWMF_SPECTRUM_ANAYZERÚGSM_610ÚGSM_620ÚGSM_660ÚGSM_690ÚGSM_ADAPTIVE_MULTIRATE_WBÚPOLYCOM_G722ÚPOLYCOM_G728ÚPOLYCOM_G729_AÚPOLYCOM_SIRENÚGLOBAL_IP_ILBCÚRADIOTIME_TIME_SHIFT_RADIOÚNICE_ACAÚ
NICE_ADPCMÚVOCORD_G721ÚVOCORD_G726ÚVOCORD_G722_1ÚVOCORD_G728ÚVOCORD_G729ÚVOCORD_G729_AÚVOCORD_G723_1Ú
VOCORD_LBCÚ	NICE_G728ÚFRACE_TELECOM_G729ÚCODIANÚFLACÚ
EXTENSIBLEÚDEVELOPMENTr   r   r   r   r      sƒ  „ ñð €GØ
€CØ€EØ€JØ€EØ€HØ€DØ€EØ
€CØ
€CØ€IØ€JØ€IØ€IØ€IØÐØ€LØ€JØ€GØ€GØÐØÐØ€HØ€LØ€LØ€FØ ÐØ€GØ€NØ€DØ€NØ€LØ
€CØ€IØ€FØ€HØ€LØÐØ€HØ€IØÐØ€LØ€KØ€GØ€NØÐØ€EØ€JØ€IØ€FØ€LØ€JØ€JØ€DØ€DØ
€CØ€JØ€KØ€FØ€EØ€GØ€MØ€JØ€JØ€DØ€LØ!ÐØ€KØ€LØ€LØ€LØ€LØ€LØ€NØ€LØ€LØ€LØ€KØ€MØ€IØ€LØ€FØ€EØ€HØ€GØ€IØ€HØ€FØÐØ#ÐØ€MØ€JØ€EØ€OØ€OØ€MØ€KØ€MØ€FØÐØÐØ"ÐØ"ÐØ!'ÐØ€GØ€HØ€NØ€DØ€IØ€JØ€LØ€OØ€LØ€NØÐØÐØÐØ€MØ€NØ€OØ€LØ€IØÐØÐØÐØÐØ€FØ€HØ€HØ€HØÐØ€HØÐØ€OØ€OØ€NØÐØ#ÐØ$ÐØ$ÐØ &ÐØ%ÐØ€FØ€NØ!ÐØ"ÐØ€JØ€NØÐØ€KØ€HØ€IØ€HØÐØ€GØ€IØ
€CØ€HØ€HØ€KØ€HØ€KØ€NØ!'ÐØ€LØ€HØÐØ€KØÐØ€KØ€MØ€MØ€MØ€IØ
€CØÐØ€FØ€HØ€GØ€FØ€FØ€HØ€MØ€MØ€NØ€NØ€FØ€JØ$ÐØ€MØ€LØ€IØ ÐØÐØ#ÐØ"ÐØ€JØ ÐØ"ÐØ"ÐØ€NØ€NØ€GØÐØ
€CØ€DØ€HØ€OØ%ÐØ€JØ€KØ€KØ€MØÐØÐØÐØ#ÐØ#ÐØ#ÐØ€DØ€IØ€DØ€HØ€FØ€FØ€FØ€KØ€OØ$ÐØ$ÐØ!ÐØ€MØ€OØ€NØ€IØ€KØ€IØ€KØ€KØ"ÐØ!ÐØ€GØ€GØ€GØ€GØ &ÐØ€LØ€LØ€NØ€MØ€NØ!'ÐØ�HØ�JØ�KÙ�KÙ�MÙ�KÙ�KÙ�MÙ�MÙ�JÙ�IÙÑÙ�FÙ�DÙ�JÙƒKr   r   c                 ó¬   — 	 t        | «      j                  }t        d|› d�dj                  d„ t        D «       «      z   «      ‚# t        $ r | d›}Y Œ;w xY w)Nz#06xzUnknown wave file format: z. Supported formats: z, c              3   ó4   K  — | ]  }|j                   –— Œ y ­w)N)Úname)Ú.0Úxs     r   ú	<genexpr>z$_raise_bad_format.<locals>.<genexpr>=  s   è ø€ ÒB¨!˜qŸv�vÑBùs   ‚)r   rˆ  Ú
ValueErrorÚjoinÚKNOWN_WAVE_FORMATS)Ú
format_tagÚformat_names     r   Ú_raise_bad_formatr‘  6  sm   € ð+Ü! *Ó-×2Ñ2ˆô Ð1°+°ð ?!ð !à—Y‘YÑBÔ/AÔBÓBñCó Dð Døô ò +Ø# DÐ)Šð+ús   ‚A ÁAÁAc                 ó"  — |rd}nd}t        j                  |dz   | j                  d«      «      d   }|dk  rt        d«      ‚t        j                  |dz   | j                  d«      «      }d}|\  }}}}	}
}|t        j
                  k(  r˜|d	k\  r“t        j                  |d
z   | j                  d«      «      d   }|dz  }|dk\  rS| j                  d«      }|dz  }|dd }|rd}nd}|j                  |«      r+t        j                  |dz   |dd «      d   }nt        d«      ‚|t        vrt        |«       ||kD  r| j                  ||z
  «       t        | |«       |t        j                  k(  r|	||
z  k7  rt        d|› d|
› d|	› �«      ‚|||||	|
|fS )a%  
    Returns
    -------
    size : int
        size of format subchunk in bytes (minus 8 for "fmt " and itself)
    format_tag : int
        PCM, float, or compressed format
    channels : int
        number of channels
    fs : int
        sampling frequency in samples per second
    bytes_per_second : int
        overall byte rate for the file
    block_align : int
        bytes per sample, including all channels
    bit_depth : int
        bits per sample

    Notes
    -----
    Assumes file pointer is immediately after the 'fmt ' id
    ú>ú<ÚIr   r   r   z.Binary structure of wave file is not compliantÚHHIIHHr   ÚHr   r!   r   s      €  ª 8›qs      €  ª 8›qNz{WAV header is invalid: nAvgBytesPerSec must equal product of nSamplesPerSec and nBlockAlign, but file has nSamplesPerSec = z, nBlockAlign = z, and nAvgBytesPerSec = )ÚstructÚunpackr   rŒ  r   r„  ÚendswithrŽ  r‘  Ú_handle_pad_byter{   )ÚfidÚis_big_endianÚfmtÚsizeÚresÚ
bytes_readr�  ÚchannelsÚfsÚbytes_per_secondÚblock_alignÚ	bit_depthÚext_chunk_sizeÚextensible_chunk_dataÚraw_guidÚtails                   r   Ú_read_fmt_chunkr«  @  sÍ  € ñ. Ø‰àˆä�=‰=˜˜S™ #§(¡(¨1£+Ó.¨qÑ1€Dàˆb‚yÜÐIÓJÐJä
�-‰-˜˜H™ c§h¡h¨r£lÓ
3€CØ€JàILÑF€J�˜"Ð.°¸Yà”[×+Ñ+Ò+°¸²ÜŸ™ s¨3¡w°·±¸³Ó<¸QÑ?ˆØ�a‰ˆ
Ø˜RÒØ$'§H¡H¨R£LÐ!Ø˜"ÑˆJØ,¨S°Ð8ˆHñ ØJ‘àJ�Ø× Ñ  Ô&Ü#Ÿ]™]¨3¨s©7°H¸R¸a°LÓAÀ!ÑD‘
äÐMÓNÐNàÔ+Ñ+Ü˜*Ô%ð ˆjÒØ�‰�˜
Ñ"Ô#ô �S˜$Ôà”[—_‘_Ò$Ø˜r KÑ/Ò/Üð !ð "$ Ð$4°[°Mð B3Ø3CÐ2Dð	Fó Gð Gð �*˜h¨Ð,<¸kØðð r   c                 óÔ  — |rd}nd}|s,t        j                  |dz   | j                  d«      «      d   }	nk| j                  «       }
| j	                  d«       t        j                  d| j                  d«      «      d   }	| j	                  |
«       | j                  d«       ||z  }|	|z  }|t
        j                  k(  r4d	|cxk  rdk  rn nd
}n\|dv rd}nU|dk  r|› d|› �}nHt        d|› d�«      ‚|t
        j                  k(  r|dv r|› d|› �}nt        d|› d�«      ‚t        |«       | j                  «       }|sã	 dk(  r|	n|}t        j                  | ||¬«      }|dk(  �r|dk(  r|› d�n|› d�}t        j                  t!        |«      |z  t        j"                  |«      j$                  fd¬«      }|r|j'                  d|f«      |dd…d|…f<   n|j'                  d|f«      |dd…| d…f<   |j)                  |«      j'                  |j*                  dd «      }nS|dv r@| j                  «       }t        j,                  | d||f¬«      }| j	                  ||	z   «       nt        d|› d�«      ‚t/        | |	«       |d	kD  r|j'                  d|«      }|S # t        j                  $ r< | j	                  |d«       t        j                  | j                  |	«      ¬«      }Y �Œ‡w xY w) a  
    Notes
    -----
    Assumes file pointer is immediately after the 'data' id

    It's possible to not use all available bits in a container, or to store
    samples in a container bigger than necessary, so bytes_per_sample uses
    the actual reported container size (nBlockAlign / nChannels).  Real-world
    examples:

    Adobe Audition's "24-bit packed int (type 1, 20-bit)"

        nChannels = 2, nBlockAlign = 6, wBitsPerSample = 20

    http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples/AFsp/M1F1-int12-AFsp.wav
    is:

        nChannels = 2, nBlockAlign = 4, wBitsPerSample = 12

    http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/multichaudP.pdf
    gives an example of:

        nChannels = 2, nBlockAlign = 8, wBitsPerSample = 20
    r“  r”  r•  r   r   é   ú<Qr   r   Úu1>   r   r   r   r   ÚV1r=   Úiz(Unsupported bit depth: the WAV file has z-bit integer data.>   r&   r=   Úfz-bit floating-point data.)ÚdtypeÚcount)r³  r   Úi4Úi8éÿÿÿÿN>   r   r   r   r   Úc)r³  ÚmodeÚoffsetÚshapezmmap=True not compatible with z-byte container size.)r˜  r™  r   ÚtellÚseekr   r{   rŒ  r}   r‘  ÚnpÚfromfileÚioÚUnsupportedOperationÚ
frombufferÚzerosÚlenr³  ÚitemsizeÚreshapeÚviewr»  Úmemmapr›  )rœ  r�  r¢  r¦  r�  Úis_rf64r¥  Úmmaprž  rŸ  ÚposÚbytes_per_sampleÚ	n_samplesr³  Ústartr´  ÚdataÚdtÚas                      r   Ú_read_data_chunkrÒ  �  s
  € ñ4 Ø‰àˆñ Ü�}‰}˜S ™W c§h¡h¨q£kÓ2°1Ñ5‰à�h‰h‹jˆà�‰�ŒÜ�}‰}˜T 3§8¡8¨A£;Ó/°Ñ2ˆØ�‰�Œà�‰�Œð # hÑ.ÐØÐ(Ñ(€Ià”[—_‘_Ò$Ø�	Ô˜QÕØ‰EØ Ñ-à‰EØ˜"Š_à�e˜1Ð-Ð.Ð/‰Eäð $Ø$- ;Ð.@ðBó Cð Cà	”{×-Ñ-Ò	-Ø˜Ñ Ø�e˜1Ð-Ð.Ð/‰Eäð $Ø$- ;Ð.GðIó Jð Jô 	˜*Ô%à�H‰H‹J€EÙð	>Ø! TšM‘D¨yˆEÜ—;‘;˜s¨%°uÔ=ˆDð
 �D‹=à/°1Ò4�C�5˜‘¸S¸EÀ¸*ˆBÜ—‘œ#˜d›)Ð'7Ñ7¼¿¹À"»×9NÑ9NÐOØ"&ô(ˆAáØ*.¯,©,¸Ð<LÐ7MÓ*N�’!Ð&Ð&Ð&Ð&Ò'à+/¯<©<¸Ð=MÐ8NÓ+O�’!Ð&Ð&Ñ'Ð'Ñ(Ø—6‘6˜"“:×%Ñ% a§g¡g¨c¨r lÓ3‰Dà˜|Ñ+Ø—H‘H“JˆEÜ—9‘9˜S¨°CÀØ'0 lô4ˆDà�H‰H�U˜T‘\Õ"äÐ=Ø 0Ð1Ð1FðHó Ið Iô �S˜$Ôà�!‚|Ø�|‰|˜B Ó)ˆØ€Køô9 ×&Ñ&ò 	>Ø�H‰H�U˜AÔÜ—=‘= §¡¨$£°uÔ=‹Dð	>ús   Ä>!J ÊAK'Ë&K'c                 ó¨   — |rd}nd}| j                  d«      }|r8t        j                  ||«      d   }| j                  |d«       t	        | |«       y y )Nú>Iú<Ir   r   r   )r   r˜  r™  r½  r›  )rœ  r�  rž  rÏ  rŸ  s        r   Ú_skip_unknown_chunkrÖ  ÷  sS   € ÙØ‰àˆà�8‰8�A‹;€Dñ
 Ü�}‰}˜S $Ó'¨Ñ*ˆØ�‰��qÔÜ˜˜dÕ#ð r   c                 ó´  — | j                  d«      }|dk(  rd}d}d}n0|dk(  rd}d}d}n$|dk(  rd}d}d	}nt        d
t        |«      › d�«      ‚|s=t        j                  || j                  d«      «      d   dz   }| j                  d«      }n«| j                  d«       | j                  d«      }| j                  d«      }|dk7  rt        d«      ‚t        j                  d| j                  d«      «      d   }t        j                  || j                  d«      «      d   dz   }| j                  |dz
  d«       |dk7  rt        dt        |«      › d�«      ‚|||fS )Nr   ó   RIFFFrÕ  s   RIFXTrÔ  ó   RF64r®  zFile format z; not understood. Only 'RIFF', 'RIFX', and 'RF64' supported.r   r   ó   ds64z(Invalid RF64 file: ds64 chunk not found.r   ó   WAVEz"Not a WAV file. RIFF form type is ú.)r   rŒ  Úreprr˜  r™  r½  )	rœ  Ústr1rÉ  r�  rž  Ú	file_sizeÚstr2Ústr3Ú	ds64_sizes	            r   Ú_read_riff_chunkrã    sf  € Ø�8‰8�A‹;€DØˆw‚ØˆØˆØ‰Ø	�ŠØˆØˆØ‰Ø	�ŠØˆØˆØ‰ô ˜<¬¨T«
 |ð 4Að Aó Bð 	Bñ Ü—M‘M # s§x¡x°£{Ó3°AÑ6¸Ñ:ˆ	Ø�x‰x˜‹{‰ð 	�‰�ŒØ�x‰x˜‹{ˆØ�x‰x˜‹{ˆØ�7Š?ÜÐGÓHÐHÜ—M‘M $¨¯©°«Ó4°QÑ7ˆ	Ü—M‘M # s§x¡x°£{Ó3°AÑ6¸Ñ:ˆ	ð 	�‰�˜Q‘ Ô"àˆw‚ÜÐ=¼dÀ4»j¸\ÈÐKÓLÐLà�m WÐ,Ð,r   c                 ó4   — |dz  r| j                  dd«       y y )Nr   r   )r½  )rœ  rŸ  s     r   r›  r›  1  s   € ð ˆa‚xØ�‰��A�ð r   c           
      ó  — t        | d«      r| }d}nt        | d«      }	 t        |«      \  }}}d}d}|j                  «       |k  �r`|j	                  d«      }|sB|r5t        j                  d|j                  «       d›d|d›d�t        d	¬
«       �nt        d«      ‚t        |«      dk  r=dt        |«      › �}	|r"|r t        j                  |	dz   t        d	¬
«       nt        |	«      ‚|dk(  r"d}t        ||«      }
|
dd \  }}}|
d   }|
d   }n„|dk(  rt        ||«       nr|dk(  r"d}|st        d«      ‚t        ||||«      }nK|dk(  rt        ||«       n9|dv rt        ||«       n(t        j                  dt        d	¬
«       t        ||«       |j                  «       |k  r�Œ`t        | d«      s|j                  «        fS |j                  d«       fS # t        | d«      s|j                  «        w |j                  d«       w xY w)a  
    Open a WAV file.

    Return the sample rate (in samples/sec) and data from an LPCM WAV file.

    Parameters
    ----------
    filename : string or open file handle
        Input WAV file.
    mmap : bool, optional
        Whether to read data as memory-mapped (default: False).  Not compatible
        with some bit depths; see Notes.  Only to be used on real files.

        .. versionadded:: 0.12.0

    Returns
    -------
    rate : int
        Sample rate of WAV file.
    data : numpy array
        Data read from WAV file. Data-type is determined from the file;
        see Notes.  Data is 1-D for 1-channel WAV, or 2-D of shape
        (Nsamples, Nchannels) otherwise. If a file-like input without a
        C-like file descriptor (e.g., :class:`python:io.BytesIO`) is
        passed, this will not be writeable.

    Notes
    -----
    Common data types: [1]_

    =====================  ===========  ===========  =============
         WAV format            Min          Max       NumPy dtype
    =====================  ===========  ===========  =============
    32-bit floating-point  -1.0         +1.0         float32
    32-bit integer PCM     -2147483648  +2147483647  int32
    24-bit integer PCM     -2147483648  +2147483392  int32
    16-bit integer PCM     -32768       +32767       int16
    8-bit integer PCM      0            255          uint8
    =====================  ===========  ===========  =============

    WAV files can specify arbitrary bit depth, and this function supports
    reading any integer PCM depth from 1 to 64 bits.  Data is returned in the
    smallest compatible numpy int type, in left-justified format.  8-bit and
    lower is unsigned, while 9-bit and higher is signed.

    For example, 24-bit data will be stored as int32, with the MSB of the
    24-bit data stored at the MSB of the int32, and typically the least
    significant byte is 0x00.  (However, if a file actually contains data past
    its specified bit depth, those bits will be read and output, too. [2]_)

    This bit justification and sign matches WAV's native internal format, which
    allows memory mapping of WAV files that use 1, 2, 4, or 8 bytes per sample
    (so 24-bit files cannot be memory-mapped, but 32-bit can).

    IEEE float PCM in 32- or 64-bit format is supported, with or without mmap.
    Values exceeding [-1, +1] are not clipped.

    Non-linear PCM (mu-law, A-law) is not supported.

    References
    ----------
    .. [1] IBM Corporation and Microsoft Corporation, "Multimedia Programming
       Interface and Data Specifications 1.0", section "Data Format of the
       Samples", August 1991
       http://www.tactilemedia.com/info/MCI_Control_Info.html
    .. [2] Adobe Systems Incorporated, "Adobe Audition 3 User Guide", section
       "Audio file formats: 24-bit Packed Int (type 1, 20-bit)", 2007

    Examples
    --------
    >>> from os.path import dirname, join as pjoin
    >>> from scipy.io import wavfile
    >>> import scipy.io

    Get the filename for an example .wav file from the tests/data directory.

    >>> data_dir = pjoin(dirname(scipy.io.__file__), 'tests', 'data')
    >>> wav_fname = pjoin(data_dir, 'test-44100Hz-2ch-32bit-float-be.wav')

    Load the .wav file contents.

    >>> samplerate, data = wavfile.read(wav_fname)
    >>> print(f"number of channels = {data.shape[1]}")
    number of channels = 2
    >>> length = data.shape[0] / samplerate
    >>> print(f"length = {length}s")
    length = 0.01s

    Plot the waveform.

    >>> import matplotlib.pyplot as plt
    >>> import numpy as np
    >>> time = np.linspace(0., length, data.shape[0])
    >>> plt.plot(time, data[:, 0], label="Left channel")
    >>> plt.plot(time, data[:, 1], label="Right channel")
    >>> plt.legend()
    >>> plt.xlabel("Time [s]")
    >>> plt.ylabel("Amplitude")
    >>> plt.show()

    r   FÚrbr   z%Reached EOF prematurely; finished at Údz bytes, expected z bytes from header.r   )Ú
stacklevelzUnexpected end of file.zIncomplete chunk ID: z, ignoring it.ó   fmt Tr   r   r   ó   factó   datazNo fmt chunk before datas   LIST>   ó   Fakeó   JUNKz-Chunk (non-data) not understood, skipping it.r   )ÚhasattrÚopenrã  r¼  r   ÚwarningsÚwarnr   rŒ  rÄ  rÝ  r«  rÖ  rÒ  Úcloser½  )ÚfilenamerÊ  rœ  rß  r�  rÉ  Úfmt_chunk_receivedÚdata_chunk_receivedÚchunk_idÚmsgÚ	fmt_chunkr�  r¢  r£  r¦  r¥  rÏ  s                    r   r   r   8  s-  € ôL ˆx˜Ô ØˆØ‰ä�8˜TÓ"ˆð7Ü,<¸SÓ,AÑ)ˆ	�= 'Ø"ÐØ#ÐØ�h‰h‹j˜9Ó$à—x‘x “{ˆHáÙ&ä—M‘MØ?ÀÇÁÃ
È1¸~ð N$Ø$-¨a =Ð0CðEä&°1õ6ñ ä$Ð%>Ó?Ð?Ü�X“ Ò"Ø-¬d°8«nÐ-=Ð>�á%Ñ*=Ü—M‘M #Ð(8Ñ"8¼.Ø-.ö0ô % S›/Ð)à˜7Ò"Ø%)Ð"Ü+¨C°Ó?�	Ø+4°Q°q¨>Ñ(�
˜H bØ% a™L�	Ø'¨™l‘Ø˜WÒ$Ü# C¨Õ7Ø˜WÒ$Ø&*Ð#Ù)Ü$Ð%?Ó@Ð@Ü'¨¨Z¸À9Ø(5°wÀÈTóS‘à˜WÒ$ä# C¨Õ7ØÐ/Ñ/ä# C¨Õ7ä—‘ÐMÜ,¸õ<ä# C¨Ô7ð] �h‰h‹j˜9Ô$ô` �x Ô(Ø�I‰IŒKð ˆtˆ8€Oð �H‰H�QŒKàˆtˆ8€Oøô �x Ô(Ø�I‰I�Kà�H‰H�Q�Kús   ŸFG Ç0Hc           	      ó6  — t        | d«      r| }nt        | d«      }|}	 |j                  j                  }g d¢}|j                  j                  |vrt        d|j                  › d�«      ‚d}|dz  }|dz  }|d	z  }|d
z  }|dk(  rt        j                  }nt        j                  }|j                  dk(  rd}	n|j                  d   }	|j                  j                  dz  }
||
dz  z  |	z  }|	|
dz  z  }t        j                  d||	||||
«      }|dk(  s
|dk(  s|dz  }|t        j                  dt        |«      «      z  }||z  }t        |«      dz   dz   |j                  z   }|dz
  dkD  }|rÖd}|dz  }|dz  }|d	z  }|dz  }|t        j                  dd«      z  }|t        j                  dd«      z  }|t        j                  d|j                  «      z  }|t        j                  d|j                  d   «      z  }|t        j                  dd«      z  }|d
z  }|t        j                  dt        |«      «      z  }||z  }|dk(  s1|dk(  s,|dz  }|t        j                  dd|j                  d   «      z  }|j!                  |«       |j!                  d«       |j!                  t        j                  dt#        |j                  d«      «      «       |j                  j$                  dk(  s,|j                  j$                  dk(  r#t&        j$                  d k(  r|j)                  «       }t+        ||«       |j-                  «       }|s:|j/                  d«       |j!                  t        j                  d|dz
  «      «       n9|j/                  d!«       |j!                  t        j                  d|dz
  «      «       t        | d«      s|j1                  «        y"|j/                  d«       y"# t        | d«      s|j1                  «        w |j/                  d«       w xY w)#aÿ  
    Write a NumPy array as a WAV file.

    Parameters
    ----------
    filename : string or open file handle
        Output wav file.
    rate : int
        The sample rate (in samples/sec).
    data : ndarray
        A 1-D or 2-D NumPy array of either integer or float data-type.

    Notes
    -----
    * Writes a simple uncompressed WAV file.
    * To write multiple-channels, use a 2-D array of shape
      (Nsamples, Nchannels).
    * The bits-per-sample and PCM/float will be determined by the data-type.

    Common data types: [1]_

    =====================  ===========  ===========  =============
         WAV format            Min          Max       NumPy dtype
    =====================  ===========  ===========  =============
    32-bit floating-point  -1.0         +1.0         float32
    32-bit PCM             -2147483648  +2147483647  int32
    16-bit PCM             -32768       +32767       int16
    8-bit PCM              0            255          uint8
    =====================  ===========  ===========  =============

    Note that 8-bit PCM is unsigned.

    References
    ----------
    .. [1] IBM Corporation and Microsoft Corporation, "Multimedia Programming
       Interface and Data Specifications 1.0", section "Data Format of the
       Samples", August 1991
       http://www.tactilemedia.com/info/MCI_Control_Info.html

    Examples
    --------
    Create a 100Hz sine wave, sampled at 44100Hz.
    Write to 16-bit PCM, Mono.

    >>> from scipy.io.wavfile import write
    >>> import numpy as np
    >>> samplerate = 44100; fs = 100
    >>> t = np.linspace(0., 1., samplerate)
    >>> amplitude = np.iinfo(np.int16).max
    >>> data = amplitude * np.sin(2. * np.pi * fs * t)
    >>> write("example.wav", samplerate, data.astype(np.int16))

    r   Úwb)Úfloat32Úfloat64Úuint8Úint16Úint32Úint64zUnsupported data type 'ú'r   rØ  s       rÛ  ré  r²  r   r   z<HHIIHHr±  Úus     rÕ  r   l   ÿÿ rÙ  s   ÿÿÿÿrÚ  r­  r®  r   rê  z<IIrë  r“  ú=Úbigr   N)rî  rï  r³  Úkindrˆ  rŒ  r   r}   r{   Úndimr»  rÅ  r˜  ÚpackrÄ  Únbytesr   ÚminÚ	byteorderÚsysÚbyteswapÚ_array_tofiler¼  r½  rò  )ró  ÚraterÏ  rœ  r£  ÚdkindÚallowed_dtypesÚheader_datar�  r¢  r¦  r¤  r¥  Úfmt_chunk_dataÚresulting_file_sizerÉ  rŸ  s                    r   r   r   à  s¸  € ôl ˆx˜Ô!Ø‰ä�8˜TÓ"ˆà	€BðYØ—
‘
—‘ˆò>ˆà�:‰:�?‰? .Ñ0ÜÐ6°t·z±z°lÀ!ÐDÓEÐEàˆà�wÑˆØÐ*Ñ*ˆØ�wÑˆð 	�wÑˆØ�CŠ<Ü$×/Ñ/‰Jä$Ÿ™ˆJØ�9‰9˜Š>Ø‰Hà—z‘z !‘}ˆHØ—J‘J×'Ñ'¨!Ñ+ˆ	Ø˜y¨A™~Ñ.¨xÑ7ÐØ )¨q¡.Ñ1ˆäŸ™ Y°
¸HÀbØ%5°{ÀIóOˆà˜’ ¨¢à˜kÑ)ˆNà”v—{‘{ 4¬¨^Ó)<Ó=Ñ=ˆØ�~Ñ%ˆô " +Ó.°Ñ2°QÑ6¸¿¹ÑDÐØ&¨Ñ*¨jÑ8ˆÙØˆKØ˜7Ñ"ˆKØÐ.Ñ.ˆKØ˜7Ñ"ˆKØ˜7Ñ"ˆKàœ6Ÿ;™; t¨RÓ0Ñ0ˆKàœ6Ÿ;™; t¨QÓ/Ñ/ˆKØœ6Ÿ;™; t¨T¯[©[Ó9Ñ9ˆKØœ6Ÿ;™; t¨T¯Z©Z¸©]Ó;Ñ;ˆKàœ6Ÿ;™; t¨QÓ/Ñ/ˆKØ˜7Ñ"ˆKØœ6Ÿ;™; t¬S°Ó-@ÓAÑAˆKØ˜>Ñ)ˆKð ˜’ ¨¢Ø˜7Ñ"ˆKØœ6Ÿ;™; u¨a°·±¸A±Ó?Ñ?ˆKà�	‰	�+Ôð 	�	‰	�'Ôà�	‰	”&—+‘+˜d¤C¨¯©°ZÓ$@ÓAÔBà�:‰:×Ñ 3Ò&¨4¯:©:×+?Ñ+?À3Ò+FÜ+.¯=©=¸EÒ+AØ—=‘=“?ˆDÜ�c˜4Ô ð �x‰x‹zˆÙØ�H‰H�QŒKØ�I‰I”f—k‘k $¨¨Q©Ó/Õ0à�H‰H�RŒLØ�I‰I”f—k‘k $¨¨Q©Ó/Ô0ô �x Ô)Ø�I‰I�Kà�H‰H�Q�Køô �x Ô)Ø�I‰I�Kà�H‰H�Q�Kús   ŸNO( Ï(0Pc                 ót   — | j                  |j                  «       j                  d«      j                  «       y )NÚb)r   ÚravelrÇ  rÏ  )rœ  rÏ  s     r   r  r  y  s%   € à‡I�Iˆd�j‰j‹l×Ñ Ó$×)Ñ)Õ*r   )F)ry   rÀ  r  Únumpyr¾  r˜  rð  Úenumr   Ú__all__ÚUserWarningr   r   r{   r}   rŽ  r‘  r«  rÒ  rÖ  rã  r›  r   r   r  r   r   r   ú<module>r     s“   ðñ	ó 
Û 
Û Û Û Ý ò€ô	�[ô 	ôR�'ô Rðj "—o‘o {×'=Ñ'=Ð>Ð òDòLð` (-óeòP$ò"&-òRóeòPVór+r   