<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?hTF                     @   s   d dl mZ d dlmZ d dlZd dlZd dlZd dlZg dZG dd de	Z
dZdZed	d
ZG dd dZG dd dZdddZdS )    )Chunk)
namedtupleN)openError	Wave_read
Wave_writec                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   )/opt/alt/python39/lib64/python3.9/wave.pyr   T   s   r      )NbhNi_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 dkr0td| jddkrHtdd| _d | _d| _	zt| jdd}W n t
y   Y qY n0 | }|d	kr| | d| _n2|d
kr| jstd|| _|j| j | _d| _	q|  qT| jr| jstdd S )Nr   )Z	bigendian   RIFFz file does not start with RIFF id      WAVEznot a WAVE filer      fmt    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}   s8    


zWave_read.initfpc                 C   sR   d | _ t|tr"t|d}|| _ z| | W n   | j rF|   Y n0 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   |    d S Nr,   r"   r   r   r   __del__   s    zWave_read.__del__c                 C   s   | S r0   r   r2   r   r   r   	__enter__   s    zWave_read.__enter__c                 G   s   |    d S r0   r1   r"   argsr   r   r   __exit__   s    zWave_read.__exit__c                 C   s   | j S r0   )r   r2   r   r   r   getfp   s    zWave_read.getfpc                 C   s   d| _ d| _d S )Nr   r   )r   r   r2   r   r   r   rewind   s    zWave_read.rewindc                 C   s"   d | _ | j}|rd | _|  d S r0   )r   r(   r,   r"   r#   r   r   r   r,      s
    zWave_read.closec                 C   s   | j S r0   )r   r2   r   r   r   tell   s    zWave_read.tellc                 C   s   | j S r0   )
_nchannelsr2   r   r   r   getnchannels   s    zWave_read.getnchannelsc                 C   s   | j S r0   )r    r2   r   r   r   
getnframes   s    zWave_read.getnframesc                 C   s   | j S r0   )
_sampwidthr2   r   r   r   getsampwidth   s    zWave_read.getsampwidthc                 C   s   | j S r0   )
_framerater2   r   r   r   getframerate   s    zWave_read.getframeratec                 C   s   | j S r0   	_comptyper2   r   r   r   getcomptype   s    zWave_read.getcomptypec                 C   s   | j S r0   	_compnamer2   r   r   r   getcompname   s    zWave_read.getcompnamec                 C   s*   t |  |  |  |  |  |  S r0   )r   r=   r@   rB   r>   rE   rH   r2   r   r   r   	getparams   s    zWave_read.getparamsc                 C   s   d S r0   r   r2   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dd | j| j }|r2| j|d d| _ |dkrDdS | j|| j }| jdkrxtjdkrxt	
|| j}| jr|r| |}| jt|| j| j   | _|S )Nr       r   big)r   r   seekr   r   r   r?   sys	byteorderaudioopbyteswapr   lenr<   )r"   nframesrP   datar   r   r   
readframes   s    

zWave_read.readframesc                 C   s   z$t d|d\}| _| _}}W n t jy>   td Y n0 |tkrzt d|dd }W n t jy|   td Y n0 |d d | _| jst	dnt	d	|f | jst	d
| j| j | _
d| _d| _d S )Nz<HHLLH   z<H   r         bad sample widthzunknown format: %rbad # of channelsNONEznot compressed)structZunpack_fromr   r<   rA   errorr   WAVE_FORMAT_PCMr?   r   r   rD   rG   )r"   r$   Z
wFormatTagZdwAvgBytesPerSecZwBlockAlign	sampwidthr   r   r   r      s$    $
zWave_read._read_fmt_chunkN)r   r	   r
   r%   r/   r3   r4   r7   r8   r9   r,   r;   r=   r>   r@   rB   rE   rH   rI   rJ   rO   rQ   r\   r   r   r   r   r   r   ^   s*   r   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|d}|| _ z| | W n   | j rF|   Y n0 d S )Nwbr'   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   r<   r?   rA   r    _nframeswritten_datawritten_datalength_headerwrittenr:   r   r   r   r%   9  s    zWave_write.initfpc                 C   s   |    d S r0   r1   r2   r   r   r   r3   E  s    zWave_write.__del__c                 C   s   | S r0   r   r2   r   r   r   r4   H  s    zWave_write.__enter__c                 G   s   |    d S r0   r1   r5   r   r   r   r7   K  s    zWave_write.__exit__c                 C   s(   | j rtd|dk rtd|| _d S )N0cannot change parameters after starting to writer   rb   )rj   r   r<   )r"   	nchannelsr   r   r   setnchannelsQ  s
    zWave_write.setnchannelsc                 C   s   | j std| j S )Nznumber of channels not set)r<   r   r2   r   r   r   r=   X  s    zWave_write.getnchannelsc                 C   s0   | j rtd|dk s|dkr&td|| _d S )Nrm   r   r   ra   )rj   r   r?   )r"   rg   r   r   r   setsampwidth]  s
    zWave_write.setsampwidthc                 C   s   | j std| j S )Nzsample width not set)r?   r   r2   r   r   r   r@   d  s    zWave_write.getsampwidthc                 C   s0   | j rtd|dkrtdtt|| _d S )Nrm   r   zbad frame rate)rj   r   introundrA   )r"   	framerater   r   r   setframeratei  s
    zWave_write.setframeratec                 C   s   | j std| j S )Nzframe rate not set)rA   r   r2   r   r   r   rB   p  s    zWave_write.getframeratec                 C   s   | j rtd|| _d S Nrm   )rj   r   r    )r"   rZ   r   r   r   
setnframesu  s    zWave_write.setnframesc                 C   s   | j S r0   ri   r2   r   r   r   r>   z  s    zWave_write.getnframesc                 C   s.   | j rtd|dvrtd|| _|| _d S )Nrm   )rc   zunsupported compression type)rj   r   rD   rG   )r"   comptypecompnamer   r   r   setcomptype}  s    zWave_write.setcomptypec                 C   s   | j S r0   rC   r2   r   r   r   rE     s    zWave_write.getcomptypec                 C   s   | j S r0   rF   r2   r   r   r   rH     s    zWave_write.getcompnamec                 C   sV   |\}}}}}}| j rtd| | | | | | | | | || d S ru   )rj   r   ro   rp   rt   rv   rz   )r"   paramsrn   rg   rs   rZ   rx   ry   r   r   r   	setparams  s    



zWave_write.setparamsc                 C   s8   | j r| jr| jstdt| j | j| j| j| j| jS )Nznot all parameters set)r<   r?   rA   r   r   r    rD   rG   r2   r   r   r   rI     s
    zWave_write.getparamsc                 C   s   t dd S )Nzsetmark() not supportedrL   )r"   rN   rP   namer   r   r   setmark  s    zWave_write.setmarkc                 C   s   t dd S rK   rL   rM   r   r   r   rO     s    zWave_write.getmarkc                 C   s   d S r0   r   r2   r   r   r   rJ     s    zWave_write.getmarkersc                 C   s   | j S r0   rw   r2   r   r   r   r;     s    zWave_write.tellc                 C   s   t |ttfst|d}| t| t|| j| j  }| j	rN| 	|}| jdkrpt
jdkrpt|| j}| j| |  jt|7  _| j| | _d S )NBr   rS   )r)   bytes	bytearray
memoryviewcast_ensure_header_writtenrY   r?   r<   r   rU   rV   rW   rX   r   writerj   ri   )r"   r[   rZ   r   r   r   writeframesraw  s    
zWave_write.writeframesrawc                 C   s"   |  | | j| jkr|   d S r0   )r   rk   rj   _patchheader)r"   r[   r   r   r   writeframes  s    
zWave_write.writeframesc                 C   sv   zP| j r0| d | j| jkr&|   | j   W d | _ | j}|rrd | _|  n d | _ | j}|rpd | _|  0 d S )Nr   )r   r   rk   rj   r   flushr(   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| | d S )Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)rl   r<   r   r?   rA   _write_header)r"   Zdatasizer   r   r   r     s    z!Wave_write._ensure_header_writtenc                 C   s   | j d | js$|| j| j  | _| j| j | j | _z| j  | _W n tt	fyd   d | _Y n0 | j t
dd| j dddt| j| j| j| j | j | j| j | jd d | jd ur| j  | _| j t
d	| j d
| _d S )Nr   z<L4s4sLHHLLHH4s$   r   r      r`   r   <LT)r   r   r    r<   r?   rk   r;   _form_length_posAttributeErrorOSErrorrd   packrf   rA   _data_length_posrl   )r"   Z
initlengthr   r   r   r     s&    



zWave_write._write_headerc                 C   s   | j | jkrd S | j }| j| jd | jtdd| j   | j| j	d | jtd| j  | j|d | j | _d S )Nr   r   r   )
rj   rk   r   r;   rT   r   r   rd   r   r   )r"   Zcurposr   r   r   r     s    
zWave_write._patchheaderN)r   r	   r
   r/   r%   r3   r4   r7   ro   r=   rp   r@   rt   rB   rv   r>   rz   rE   rH   r|   rI   r~   rO   rJ   r;   r   r   r,   r   r   r   r   r   r   r   r     s8   

r   c                 C   sJ   |d u rt | dr| j}nd}|dv r.t| S |dv r>t| S tdd S )Nmoder&   )rr&   )wrh   z$mode must be 'r', 'rb', 'w', or 'wb')hasattrr   r   r   r   )r.   r   r   r   r   r     s    
r   )N)r$   r   collectionsr   rW   r+   rd   rU   __all__	Exceptionr   rf   Z_array_fmtsr   r   r   r   r   r   r   r   <module>J   s"    6 d