
    =Og:U                         	 d dl mZ d dlZd dlZd dlZg dZ G d de          ZdZdZ	 edd	          Z
d
 Z G d d          Z G d d          Z G d d          ZddZdS )    )
namedtupleN)openError	Wave_read
Wave_writec                       e Zd ZdS )r   N)__name__
__module____qualname__     /usr/lib64/python3.11/wave.pyr   r   R   s        Dr   r      )NbhNi_wave_paramsz7nchannels sampwidth framerate nframes comptype compnamec                     t          t          |                     }t          dt          |           |          D ]+}t          |          D ]}| ||z            |||z   dz
  |z
  <   ,t          |          S )Nr   r   )	bytearraylenrangebytes)datawidthswapped_datar   js        r   	_byteswapr   ]   s    SYY''L1c$ii'' : :u 	: 	:A.21q5kLUQ*++	: r   c                   >    e Zd ZddZd Zd ZddZd Zdd
Zd Z	dS )_ChunkTFc                    d| _         || _        |rd}nd}|| _        |                    d          | _        t          | j                  dk     rt          	 t          j        |dz   |                    d                    d         | _	        n# t          j
        $ r	 t          d w xY w|r| j	        dz
  | _	        d| _        	 | j                                        | _        d| _        d S # t          t           f$ r d| _        Y d S w xY w)	NF><   Lr      T)closedalignfileread	chunknamer   EOFErrorstructunpack_from	chunksizeerror	size_readtelloffsetseekableAttributeErrorOSError)selfr(   r'   	bigendian
inclheaderstrflags         r   __init__z_Chunk.__init__h   s   
 	GGG	1t~""N	%#/TYYq\\JJ1MDNN| 	% 	% 	%$	% 	0!^a/DN	!)..**DK !DMMM ( 	" 	" 	"!DMMMM	"s   6B B&C) )DDc                     	 | j         S N)r*   r6   s    r   getnamez_Chunk.getname   s    8~r   c                 h    | j         s*	 |                                  d| _         d S # d| _         w xY wd S )NT)r&   skipr=   s    r   closez_Chunk.close   sF    { 	##		"d""""		# 	#s   & 	/r   c                 &   	 | j         rt          d          | j        st          d          |dk    r|| j        z   }n|dk    r
|| j        z   }|dk     s|| j        k    rt          | j                            | j	        |z   d           || _        d S )NI/O operation on closed filezcannot seekr      r   )
r&   
ValueErrorr3   r5   r0   r.   RuntimeErrorr(   seekr2   )r6   poswhences      r   rG   z_Chunk.seek   s    	
 ; 	=;<<<} 	)-(((Q;;&CCq[[&C77cDN**	t{S(!,,,r   c                 <    | j         rt          d          | j        S )NrC   )r&   rE   r0   r=   s    r   r1   z_Chunk.tell   s#    ; 	=;<<<~r   c                    	 | j         rt          d          | j        | j        k    rdS |dk     r| j        | j        z
  }|| j        | j        z
  k    r| j        | j        z
  }| j                            |          }| j        t          |          z   | _        | j        | j        k    rG| j        r@| j        dz  r6| j                            d          }| j        t          |          z   | _        |S )NrC   r   r   r   )r&   rE   r0   r.   r(   r)   r   r'   )r6   sizer   dummys       r   r)   z_Chunk.read   s    	
 ; 	=;<<<>T^++3!88>DN2D$.4>111>DN2Dy~~d###d))3>T^++: ,NQ , INN1%%E!^c%jj8DNr   c                    	 | j         rt          d          | j        rb	 | j        | j        z
  }| j        r| j        dz  r|dz   }| j                            |d           | j        |z   | _        d S # t          $ r Y nw xY w| j        | j        k     rMt          d| j        | j        z
            }| 
                    |          }|st          | j        | j        k     Kd S d S )NrC   r   i    )r&   rE   r3   r.   r0   r'   r(   rG   r5   minr)   r+   )r6   nrN   s      r   r@   z_Chunk.skip   s	   	 ; 	=;<<<= 
		NT^3: 4>A#5 AA	q!$$$!%!!3   nt~--D$.4>9::AIIaLLE 	 nt~------s   AA1 1
A>=A>N)TTF)r   )rK   )
r	   r
   r   r:   r>   rA   rG   r1   r)   r@   r   r   r   r   r   g   s        ! ! ! !2  # # #   &  
   .    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S )r   c                    d | _         d| _        t          |d          | _        | j                                        dk    rt          d          | j                            d          dk    rt          d          d| _        d | _        	 d| _	        	 t          | j        d          }n# t          $ r Y nw xY w|                                }|d	k    r|                     |           d| _        n?|d
k    r9| j        st          d          || _        |j        | j        z  | _        d| _	        n|                                 | j        r| j        st          d          d S )Nr   )r7      RIFFz file does not start with RIFF idr#      WAVEznot a WAVE filer      fmt    datazdata chunk before fmt chunkz#fmt chunk and/or data chunk missing)_convert	_soundposr   _filer>   r   r)   _fmt_chunk_read_data_chunk_data_seek_neededr+   _read_fmt_chunkr.   
_framesize_nframesr@   )r6   r(   chunkr*   s       r   initfpzWave_read.initfp   s   Da000
:7**:;;;:??1(()*** 	%&D"tzq999   IG##$$U+++'($$g%%+ ? =>>>#(  %4? B)*&JJLLL#	$ # 	?4+; 	?=>>>	? 	?s   B, ,
B98B9c                     d | _         t          |t                    rt          j        |d          }|| _         	 |                     |           d S #  | j         r|                                  xY w)Nrb_i_opened_the_file
isinstancestrbuiltinsr   rb   rA   r6   fs     r   r:   zWave_read.__init__  sq    "&a 	(a&&A&'D#	KKNNNNN	& 			   A A/c                 .    |                                   d S r<   rA   r=   s    r   __del__zWave_read.__del__!      

r   c                     | S r<   r   r=   s    r   	__enter__zWave_read.__enter__$      r   c                 .    |                                   d S r<   rn   r6   argss     r   __exit__zWave_read.__exit__'  rp   r   c                     | j         S r<   )rZ   r=   s    r   getfpzWave_read.getfp-  s
    zr   c                 "    d| _         d| _        d S )Nr   r   )r]   rY   r=   s    r   rewindzWave_read.rewind0  s    !"r   c                 `    d | _         | j        }|rd | _        |                                 d S d S r<   )rZ   rf   rA   r6   r(   s     r   rA   zWave_read.close4  s<    
& 	&*D#JJLLLLL	 	r   c                     | j         S r<   )rY   r=   s    r   r1   zWave_read.tell;  
    ~r   c                     | j         S r<   )
_nchannelsr=   s    r   getnchannelszWave_read.getnchannels>  
    r   c                     | j         S r<   )r`   r=   s    r   
getnframeszWave_read.getnframesA  s
    }r   c                     | j         S r<   )
_sampwidthr=   s    r   getsampwidthzWave_read.getsampwidthD  r   r   c                     | j         S r<   )
_framerater=   s    r   getframeratezWave_read.getframerateG  r   r   c                     | j         S r<   	_comptyper=   s    r   getcomptypezWave_read.getcomptypeJ  r   r   c                     | j         S r<   	_compnamer=   s    r   getcompnamezWave_read.getcompnameM  r   r   c           	         t          |                                 |                                 |                                 |                                 |                                 |                                           S r<   )r   r   r   r   r   r   r   r=   s    r   	getparamszWave_read.getparamsP  sh    D--//1B1B1D1D((**DOO,=,=''))4+;+;+=+=? ? 	?r   c                     d S r<   r   r=   s    r   
getmarkerszWave_read.getmarkersU      tr   c                      t          d          Nzno marksr   r6   ids     r   getmarkzWave_read.getmarkX      Jr   c                 b    |dk     s|| j         k    rt          d          || _        d| _        d S )Nr   zposition not in ranger   )r`   r   rY   r]   )r6   rH   s     r   setposzWave_read.setpos[  s;    77cDM))/000!"r   c                    | j         rN| j                            dd           | j        | j        z  }|r| j                            |d           d| _         |dk    rdS | j                            || j        z            }| j        dk    r%t          j        dk    rt          || j                  }| j
        r|r| 
                    |          }| j        t          |          | j        | j        z  z  z   | _        |S )Nr   r   r   big)r]   r\   rG   rY   r_   r)   r   sys	byteorderr   rX   r   r   )r6   nframesrH   r   s       r   
readframeszWave_read.readframesa  s    ! 	'!!!Q'''.4?2C . %%c1---%&D"a<<3$$Wt%>???aCMU$:$:T4?33D= 	'T 	'==&&D#d))$/8Y*ZZr   c                 8   	 t          j        d|                    d                    \  }| _        | _        }}n# t           j        $ r	 t          d w xY w|t          k    ro	 t          j        d|                    d                    d         }n# t           j        $ r	 t          d w xY w|dz   dz  | _        | j        st          d          nt          d	|          | j        st          d
          | j        | j        z  | _
        d| _        d| _        d S )Nz<HHLLH   z<HrD   r      r%   bad sample widthzunknown format: bad # of channelsNONEznot compressed)r,   r-   r)   r   r   r/   r+   WAVE_FORMAT_PCMr   r   r_   r   r   )r6   ra   
wFormatTagdwAvgBytesPerSecwBlockAlign	sampwidths         r   r^   zWave_read._read_fmt_chunkv  sU   	%Z`Zlmuw|  xB  xB  CE  xF  xF  [G  [GWJ:JKK| 	% 	% 	%$	%(()".tUZZ]]CCAF		< ) ) )D()(1}2DO? 0.///0 %

<=== 	-+,,,/DO;)s   8; A".B B)N)r	   r
   r   rb   r:   ro   rr   rw   ry   r{   rA   r1   r   r   r   r   r   r   r   r   r   r   r   r^   r   r   r   r   r      sT       <? ? ?>                            ? ? ?
       # # #  ** * * * *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S )r   c                     d | _         t          |t                    rt          j        |d          }|| _         	 |                     |           d S #  | j         r|                                  xY w)Nwbre   rj   s     r   r:   zWave_write.__init__  sq    "&a 	(a&&A&'D#	KKNNNNN	& 			rl   c                     || _         d | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d S )Nr   F)
rZ   rX   r   r   r   r`   _nframeswritten_datawritten_datalength_headerwrittenr}   s     r   rb   zWave_write.initfp  sR    
 #r   c                 .    |                                   d S r<   rn   r=   s    r   ro   zWave_write.__del__  rp   r   c                     | S r<   r   r=   s    r   rr   zWave_write.__enter__  rs   r   c                 .    |                                   d S r<   rn   ru   s     r   rw   zWave_write.__exit__  rp   r   c                 j    | j         rt          d          |dk     rt          d          || _        d S )N0cannot change parameters after starting to writer   r   )r   r   r   )r6   	nchannelss     r   setnchannelszWave_write.setnchannels  s@     	LJKKKq==+,,,#r   c                 <    | j         st          d          | j         S )Nznumber of channels not set)r   r   r=   s    r   r   zWave_write.getnchannels  s#     	64555r   c                 v    | j         rt          d          |dk     s|dk    rt          d          || _        d S )Nr   r   r#   r   )r   r   r   )r6   r   s     r   setsampwidthzWave_write.setsampwidth  sH     	LJKKKq==IMM*+++#r   c                 <    | j         st          d          | j         S )Nzsample width not set)r   r   r=   s    r   r   zWave_write.getsampwidth  s#     	0.///r   c                     | j         rt          d          |dk    rt          d          t          t          |                    | _        d S )Nr   r   zbad frame rate)r   r   introundr   )r6   	framerates     r   setframeratezWave_write.setframerate  sP     	LJKKK>>()))eI..//r   c                 <    | j         st          d          | j         S )Nzframe rate not set)r   r   r=   s    r   r   zWave_write.getframerate  s#     	.,---r   c                 @    | j         rt          d          || _        d S Nr   )r   r   r`   )r6   r   s     r   
setnframeszWave_write.setnframes  s(     	LJKKKr   c                     | j         S r<   r   r=   s    r   r   zWave_write.getnframes      ##r   c                 t    | j         rt          d          |dvrt          d          || _        || _        d S )Nr   )r   zunsupported compression type)r   r   r   r   )r6   comptypecompnames      r   setcomptypezWave_write.setcomptype  sI     	LJKKK9$$6777!!r   c                     | j         S r<   r   r=   s    r   r   zWave_write.getcomptype  r   r   c                     | j         S r<   r   r=   s    r   r   zWave_write.getcompname  r   r   c                    |\  }}}}}}| j         rt          d          |                     |           |                     |           |                     |           |                     |           |                     ||           d S r   )r   r   r   r   r   r   r   )r6   paramsr   r   r   r   r   r   s           r   	setparamszWave_write.setparams  s    GMD	9i(H 	LJKKK)$$$)$$$)$$$   8,,,,,r   c                     | j         r| j        r| j        st          d          t	          | j         | j        | j        | j        | j        | j                  S )Nznot all parameters set)r   r   r   r   r   r`   r   r   r=   s    r   r   zWave_write.getparams  sX     	2do 	2T_ 	20111DOT_domT^T^= = 	=r   c                      t          d          )Nzsetmark() not supportedr   )r6   r   rH   names       r   setmarkzWave_write.setmark  s    -...r   c                      t          d          r   r   r   s     r   r   zWave_write.getmark  r   r   c                     d S r<   r   r=   s    r   r   zWave_write.getmarkers  r   r   c                     | j         S r<   r   r=   s    r   r1   zWave_write.tell  r   r   c                 (   t          |t          t          f          s"t          |                              d          }|                     t          |                     t          |          | j        | j        z  z  }| j	        r| 	                    |          }| j        dk    r%t          j        dk    rt          || j                  }| j                            |           | xj        t          |          z  c_        | j        |z   | _        d S )NBr   r   )rg   r   r   
memoryviewcast_ensure_header_writtenr   r   r   rX   r   r   r   rZ   writer   r   )r6   r   r   s      r   writeframesrawzWave_write.writeframesraw   s    $	 233 	.d##((--D##CII...d))$/ AB= 	'==&&D?aCMU$:$:T4?33D
SYY&#3g=r   c                 |    |                      |           | j        | j        k    r|                                  d S d S r<   )r   r   r   _patchheader)r6   r   s     r   writeframeszWave_write.writeframes-  sG    D!!!t000 10r   c                 v   	 | j         rR|                     d           | j        | j        k    r|                                  | j                                          d | _         | j        }|rd | _        |                                 d S d S # d | _         | j        }|rd | _        |                                 w w xY w)Nr   )rZ   r   r   r   r   flushrf   rA   r}   s     r   rA   zWave_write.close2  s    	z #++A...#t'888%%'''
  """DJ*D *.'

  DJ*D *.'

s   AB
 
.B8c                     | j         sY| j        st          d          | j        st          d          | j        st          d          |                     |           d S d S )Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)r   r   r   r   r   _write_header)r6   datasizes     r   r   z!Wave_write._ensure_header_writtenD  s|    " 	)? 86777? :8999? ;9:::x(((((	) 	)r   c                    | j                             d           | j        s|| j        | j        z  z  | _        | j        | j        z  | j        z  | _        	 | j                                         | _        n# t          t          f$ r
 d | _        Y nw xY w| j                             t          j        dd| j        z   dddt          | j        | j        | j        | j        z  | j        z  | j        | j        z  | j        dz  d                     | j        | j                                         | _        | j                             t          j        d	| j                             d
| _        d S )NrT   z<L4s4sLHHLLHH4s$   rU   rV      r%   rW   <LT)rZ   r   r`   r   r   r   r1   _form_length_posr4   r5   r,   packr   r   _data_length_posr   )r6   
initlengths     r   r   zWave_write._write_headerN  s^   
!!!} 	N&4?T_+LMDM=4?:T_L	)$(JOO$5$5D!!( 	) 	) 	)$(D!!!	)
%6!!7GRT_doOdo-?Odo-Oa* * 	+ 	+ 	+  ,$(JOO$5$5D!
T4+;<<==="s   A5 5BBc                    | j         | j        k    rd S | j                                        }| j                            | j        d           | j                            t          j        dd| j         z                        | j                            | j	        d           | j                            t          j        d| j                              | j                            |d           | j         | _        d S )Nr   r   r   )
r   r   rZ   r1   rG   r   r   r,   r   r   )r6   curposs     r   r   zWave_write._patchheaderc  s     000F""
-q111
T20A+ABBCCC
-q111
T4+<==>>>
""",r   N)r	   r
   r   r:   rb   ro   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r   r   rA   r   r   r   r   r   r   r   r     s       2
 
 

$ 
$ 
$      $ $ $  
$ $ $  
0 0 0  
     
$ $ $" " "    - - -= = =/ / /       $ $ $> > >     
  $) ) )# # #*
- 
- 
- 
- 
-r   r   c                     |t          | d          r| j        }nd}|dv rt          |           S |dv rt          |           S t	          d          )Nmoderd   )rrd   )wr   z$mode must be 'r', 'rb', 'w', or 'wb')hasattrr   r   r   r   )rk   r   s     r   r   r   p  sd    |1f 	6DDD{||			!}}:;;;r   r<   )collectionsr   ri   r,   r   __all__	Exceptionr   r   _array_fmtsr   r   r   r   r   r   r   r   r   <module>r     sV  GR # " " " " "   



 7
6
6	 	 	 	 	I 	 	 	 'z.NP P  l l l l l l l l^s* s* s* s* s* s* s* s*la- a- a- a- a- a- a- a-H< < < < < <r   