
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \-E  ã               @   s–   d dl Z dddddgZG dd„ deƒZdZdZd dlZd dlZd dlZd dl	m
Z
 d dlmZ eddƒZG dd„ dƒZG dd„ dƒZddd„ZeZdS )é    NÚopenÚopenfpÚErrorÚ	Wave_readÚ
Wave_writec               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r
   r
   ú/usr/lib64/python3.6/wave.pyr   N   s   é   ÚbÚhÚi)ÚChunk)Ú
namedtupleÚ_wave_paramsz7nchannels sampwidth framerate nframes comptype compnamec               @   s´   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+S ),r   c             C   s  d | _ d| _t|dd�| _| jjƒ dkr0tdƒ‚| jjdƒdkrHtdƒ‚d| _d | _x�d| _	yt| jdd�}W n t
k
r„   P Y nX |jƒ }|d	kr¨| j|ƒ d| _n2|d
krÚ| js¾tdƒ‚|| _|j| j | _d| _	P |jƒ  qVW | j sø| j �r tdƒ‚d S )Nr   )Z	bigendians   RIFFz file does not start with RIFF idé   s   WAVEznot a WAVE filer   s   fmt s   datazdata chunk before fmt chunkz#fmt chunk and/or data chunk missing)Ú_convertÚ	_soundposr   Ú_fileZgetnamer   ÚreadZ_fmt_chunk_readÚ_data_chunkÚ_data_seek_neededÚEOFErrorÚ_read_fmt_chunkZ	chunksizeÚ
_framesizeÚ_nframesÚskip)ÚselfÚfileÚchunkZ	chunknamer
   r
   r   Úinitfp}   s:    
zWave_read.initfpc          	   C   sR   d | _ t|tƒr"tj|dƒ}|| _ y| j|ƒ W n   | j rF|jƒ  ‚ Y nX d S )NÚrb)Ú_i_opened_the_fileÚ
isinstanceÚstrÚbuiltinsr   r"   Úclose)r   Úfr
   r
   r   Ú__init__œ   s    
zWave_read.__init__c             C   s   | j ƒ  d S )N)r(   )r   r
   r
   r   Ú__del__©   s    zWave_read.__del__c             C   s   | S )Nr
   )r   r
   r
   r   Ú	__enter__¬   s    zWave_read.__enter__c             G   s   | j ƒ  d S )N)r(   )r   Úargsr
   r
   r   Ú__exit__¯   s    zWave_read.__exit__c             C   s   | j S )N)r   )r   r
   r
   r   Úgetfpµ   s    zWave_read.getfpc             C   s   d| _ d| _d S )Nr   r   )r   r   )r   r
   r
   r   Úrewind¸   s    zWave_read.rewindc             C   s"   d | _ | j}|rd | _|jƒ  d S )N)r   r$   r(   )r   r    r
   r
   r   r(   ¼   s
    zWave_read.closec             C   s   | j S )N)r   )r   r
   r
   r   ÚtellÃ   s    zWave_read.tellc             C   s   | j S )N)Ú
_nchannels)r   r
   r
   r   ÚgetnchannelsÆ   s    zWave_read.getnchannelsc             C   s   | j S )N)r   )r   r
   r
   r   Ú
getnframesÉ   s    zWave_read.getnframesc             C   s   | j S )N)Ú
_sampwidth)r   r
   r
   r   ÚgetsampwidthÌ   s    zWave_read.getsampwidthc             C   s   | j S )N)Ú
_framerate)r   r
   r
   r   ÚgetframerateÏ   s    zWave_read.getframeratec             C   s   | j S )N)Ú	_comptype)r   r
   r
   r   ÚgetcomptypeÒ   s    zWave_read.getcomptypec             C   s   | j S )N)Ú	_compname)r   r
   r
   r   ÚgetcompnameÕ   s    zWave_read.getcompnamec             C   s*   t | jƒ | jƒ | jƒ | jƒ | jƒ | jƒ ƒS )N)r   r3   r6   r8   r4   r:   r<   )r   r
   r
   r   Ú	getparamsØ   s    zWave_read.getparamsc             C   s   d S )Nr
   )r   r
   r
   r   Ú
getmarkersÝ   s    zWave_read.getmarkersc             C   s   t dƒ‚d S )Nzno marks)r   )r   Úidr
   r
   r   Úgetmarkà   s    zWave_read.getmarkc             C   s*   |dk s|| j krtdƒ‚|| _d| _d S )Nr   zposition not in ranger   )r   r   r   r   )r   Úposr
   r
   r   Úsetposã   s    zWave_read.setposc             C   s¬   | j r8| jjddƒ | j| j }|r2| jj|dƒ d| _ |dkrDdS | jj|| j ƒ}| jdkrxtjdkrxt	j
|| jƒ}| jrŒ|rŒ| j|ƒ}| jt|ƒ| j| j   | _|S )Nr   ó    r   Úbig)r   r   Úseekr   r   r   r5   ÚsysÚ	byteorderÚaudioopÚbyteswapr   Úlenr2   )r   ÚnframesrA   Údatar
   r
   r   Ú
readframesé   s    

zWave_read.readframesc             C   sz   t jd|jdƒƒ\}| _| _}}|tkrNt jd|jdƒƒd }|d d | _ntd|f ƒ‚| j| j | _d	| _	d
| _
d S )Nz<HHLLHé   z<Hé   r   é   é   zunknown format: %rÚNONEznot compressed)ÚstructZunpack_fromr   r2   r7   ÚWAVE_FORMAT_PCMr5   r   r   r9   r;   )r   r!   Z
wFormatTagZdwAvgBytesPerSecZwBlockAlignÚ	sampwidthr
   r
   r   r   þ   s     zWave_read._read_fmt_chunkN)r   r   r	   r"   r*   r+   r,   r.   r/   r0   r(   r1   r3   r4   r6   r8   r:   r<   r=   r>   r@   rB   rM   r   r
   r
   r
   r   r   ^   s*   c               @   sì   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9S ):r   c          	   C   sR   d | _ t|tƒr"tj|dƒ}|| _ y| j|ƒ W n   | j rF|jƒ  ‚ Y nX d S )NÚwb)r$   r%   r&   r'   r   r"   r(   )r   r)   r
   r
   r   r*   #  s    
zWave_write.__init__c             C   s@   || _ d | _d| _d| _d| _d| _d| _d| _d| _d| _	d S )Nr   F)
r   r   r2   r5   r7   r   Ú_nframeswrittenÚ_datawrittenÚ_datalengthÚ_headerwritten)r   r    r
   r
   r   r"   /  s    zWave_write.initfpc             C   s   | j ƒ  d S )N)r(   )r   r
   r
   r   r+   ;  s    zWave_write.__del__c             C   s   | S )Nr
   )r   r
   r
   r   r,   >  s    zWave_write.__enter__c             G   s   | j ƒ  d S )N)r(   )r   r-   r
   r
   r   r.   A  s    zWave_write.__exit__c             C   s(   | j rtdƒ‚|dk rtdƒ‚|| _d S )Nz0cannot change parameters after starting to writer   zbad # of channels)rX   r   r2   )r   Ú	nchannelsr
   r
   r   ÚsetnchannelsG  s
    zWave_write.setnchannelsc             C   s   | j stdƒ‚| j S )Nznumber of channels not set)r2   r   )r   r
   r
   r   r3   N  s    zWave_write.getnchannelsc             C   s0   | j rtdƒ‚|dk s|dkr&tdƒ‚|| _d S )Nz0cannot change parameters after starting to writer   r   zbad sample width)rX   r   r5   )r   rU   r
   r
   r   ÚsetsampwidthS  s
    zWave_write.setsampwidthc             C   s   | j stdƒ‚| j S )Nzsample width not set)r5   r   )r   r
   r
   r   r6   Z  s    zWave_write.getsampwidthc             C   s0   | j rtdƒ‚|dkrtdƒ‚tt|ƒƒ| _d S )Nz0cannot change parameters after starting to writer   zbad frame rate)rX   r   ÚintÚroundr7   )r   Ú	framerater
   r
   r   Úsetframerate_  s
    zWave_write.setframeratec             C   s   | j stdƒ‚| j S )Nzframe rate not set)r7   r   )r   r
   r
   r   r8   f  s    zWave_write.getframeratec             C   s   | j rtdƒ‚|| _d S )Nz0cannot change parameters after starting to write)rX   r   r   )r   rK   r
   r
   r   Ú
setnframesk  s    zWave_write.setnframesc             C   s   | j S )N)rW   )r   r
   r
   r   r4   p  s    zWave_write.getnframesc             C   s.   | j rtdƒ‚|dkrtdƒ‚|| _|| _d S )Nz0cannot change parameters after starting to writerR   zunsupported compression type)rR   )rX   r   r9   r;   )r   ÚcomptypeÚcompnamer
   r
   r   Úsetcomptypes  s    zWave_write.setcomptypec             C   s   | j S )N)r9   )r   r
   r
   r   r:   {  s    zWave_write.getcomptypec             C   s   | j S )N)r;   )r   r
   r
   r   r<   ~  s    zWave_write.getcompnamec             C   sV   |\}}}}}}| j rtdƒ‚| j|ƒ | j|ƒ | j|ƒ | j|ƒ | j||ƒ d S )Nz0cannot change parameters after starting to write)rX   r   r\   r]   ra   rb   re   )r   Zparamsr[   rU   r`   rK   rc   rd   r
   r
   r   Ú	setparams�  s    



zWave_write.setparamsc             C   s>   | j  s| j s| j r tdƒ‚t| j | j| j| j| j| jƒS )Nznot all parameters set)r2   r5   r7   r   r   r   r9   r;   )r   r
   r
   r   r=   ‹  s    zWave_write.getparamsc             C   s   t dƒ‚d S )Nzsetmark() not supported)r   )r   r?   rA   Únamer
   r
   r   Úsetmark‘  s    zWave_write.setmarkc             C   s   t dƒ‚d S )Nzno marks)r   )r   r?   r
   r
   r   r@   ”  s    zWave_write.getmarkc             C   s   d S )Nr
   )r   r
   r
   r   r>   —  s    zWave_write.getmarkersc             C   s   | j S )N)rW   )r   r
   r
   r   r1   š  s    zWave_write.tellc             C   sž   t |ttfƒst|ƒjdƒ}| jt|ƒƒ t|ƒ| j| j  }| j	rN| j	|ƒ}| jdkrpt
jdkrptj|| jƒ}| jj|ƒ |  jt|ƒ7  _| j| | _d S )NÚBr   rD   )r%   ÚbytesÚ	bytearrayÚ
memoryviewÚcastÚ_ensure_header_writtenrJ   r5   r2   r   rF   rG   rH   rI   r   ÚwriterX   rW   )r   rL   rK   r
   r
   r   Úwriteframesraw�  s    
zWave_write.writeframesrawc             C   s"   | j |ƒ | j| jkr| jƒ  d S )N)rp   rY   rX   Ú_patchheader)r   rL   r
   r
   r   Úwriteframesª  s    
zWave_write.writeframesc             C   sX   z2| j r0| jdƒ | j| jkr&| jƒ  | j jƒ  W d d | _ | j}|rRd | _|jƒ  X d S )Nr   )r   rn   rY   rX   rq   Úflushr$   r(   )r   r    r
   r
   r   r(   ¯  s    
zWave_write.closec             C   s>   | j s:| jstdƒ‚| js"tdƒ‚| js0tdƒ‚| j|ƒ d S )Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)rZ   r2   r   r5   r7   Ú_write_header)r   Zdatasizer
   r
   r   rn   Á  s    z!Wave_write._ensure_header_writtenc             C   sì   | j jdƒ | js$|| j| j  | _| j| j | j | _y| j jƒ | _W n tt	fk
rf   d | _Y nX | j jt
jdd| j dddt| j| j| j| j | j | j| j | jd dƒƒ | jd k	rÌ| j jƒ | _| j jt
jd	| jƒƒ d
| _d S )Ns   RIFFz<L4s4sLHHLLHH4sé$   s   WAVEs   fmt é   rQ   s   dataz<LT)r   ro   r   r2   r5   rY   r1   Ú_form_length_posÚAttributeErrorÚOSErrorrS   ÚpackrT   r7   Ú_data_length_posrZ   )r   Z
initlengthr
   r
   r   rt   Ë  s$    


zWave_write._write_headerc             C   s„   | j | jkrd S | jjƒ }| jj| jdƒ | jjtjdd| j  ƒƒ | jj| j	dƒ | jjtjd| j ƒƒ | jj|dƒ | j | _d S )Nr   z<Lru   )
rX   rY   r   r1   rE   rw   ro   rS   rz   r{   )r   Zcurposr
   r
   r   rq   à  s    
zWave_write._patchheaderN)r   r   r	   r*   r"   r+   r,   r.   r\   r3   r]   r6   ra   r8   rb   r4   re   r:   r<   rf   r=   rh   r@   r>   r1   rp   rr   r(   rn   rt   rq   r
   r
   r
   r   r   	  s8   

c             C   sJ   |d krt | dƒr| j}nd}|dkr.t| ƒS |dkr>t| ƒS tdƒ‚d S )	NÚmoder#   ÚrÚwrV   z$mode must be 'r', 'rb', 'w', or 'wb')r}   r#   )r~   rV   )Úhasattrr|   r   r   r   )r)   r|   r
   r
   r   r   ì  s    
)Nr   r   Nr   )N)r'   Ú__all__Ú	Exceptionr   rT   Z_array_fmtsrH   rS   rF   r!   r   Úcollectionsr   r   r   r   r   r   r
   r
   r
   r   Ú<module>J   s"    , d
