]E@sddlZdddgZGdddeZdZdZddlZddlZddlZdd l m Z dd l m Z e d d Z GdddZGdddZdddZeZdS)NopenopenfpErrorc@seZdZdS)rN)__name__ __module__ __qualname__rr)/opt/alt/python35/lib64/python3.5/wave.pyrNs bhi)Chunk) namedtuple _wave_paramsz7nchannels sampwidth framerate nframes comptype compnamec@s eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+S), Wave_readc Cscd|_d|_t|dd|_|jjdkrHtd|jjddkrltdd|_d|_xd|_ yt|jdd}Wnt k rPYnX|j}|d kr|j |d|_nG|d kr1|js td ||_|j |j |_d|_ P|jqW|j sS|j r_td dS) NrZ bigendiansRIFFz file does not start with RIFF idsWAVEznot a WAVE filer sfmt sdatazdata chunk before fmt chunkz#fmt chunk and/or data chunk missing)_convert _soundposr_fileZgetnamerreadZ_fmt_chunk_read _data_chunk_data_seek_neededEOFError_read_fmt_chunk chunksize _framesize_nframesskip)selffilechunkZ chunknamerrr initfp}s:                 zWave_read.initfpc Csid|_t|tr3tj|d}||_y|j|Wn|jr]|jYnXdS)Nrb)_i_opened_the_file isinstancestrbuiltinsrr"close)rfrrr __init__s    zWave_read.__init__cCs|jdS)N)r()rrrr __del__szWave_read.__del__cCs|S)Nr)rrrr __enter__szWave_read.__enter__cGs|jdS)N)r()rargsrrr __exit__szWave_read.__exit__cCs|jS)N)r)rrrr getfpszWave_read.getfpcCsd|_d|_dS)Nr r)rr)rrrr rewinds zWave_read.rewindcCs/d|_|j}|r+d|_|jdS)N)rr$r()rr rrr r(s    zWave_read.closecCs|jS)N)r)rrrr tellszWave_read.tellcCs|jS)N) _nchannels)rrrr getnchannelsszWave_read.getnchannelscCs|jS)N)r)rrrr getnframesszWave_read.getnframescCs|jS)N) _sampwidth)rrrr getsampwidthszWave_read.getsampwidthcCs|jS)N) _framerate)rrrr getframerateszWave_read.getframeratecCs|jS)N) _comptype)rrrr getcomptypeszWave_read.getcomptypecCs|jS)N) _compname)rrrr getcompnameszWave_read.getcompnamecCs=t|j|j|j|j|j|jS)N)rr3r6r8r4r:r<)rrrr getparamsszWave_read.getparamscCsdS)Nr)rrrr getmarkersszWave_read.getmarkerscCstddS)Nzno marks)r)ridrrr getmarkszWave_read.getmarkcCs=|dks||jkr'td||_d|_dS)Nrzposition not in ranger )rrrr)rposrrr setposs  zWave_read.setposcCs|jrN|jjdd|j|j}|rE|jj|dd|_|dkr^dS|jj||j}|jdkrtjdkrt j ||j}|j r|r|j |}|jt ||j |j|_|S)Nrr big)rrseekrrrr5sys byteorderaudioopbyteswaprlenr2)rnframesrAdatarrr readframess   $zWave_read.readframescCstjd|jd\}|_|_}}|tkrotjd|jdd}|dd|_ntd|f|j|j|_d |_ d |_ dS) Nzr@rBrMrrrrr r^s*                    rc@s`eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9S): Wave_writec Csid|_t|tr3tj|d}||_y|j|Wn|jr]|jYnXdS)Nwb)r$r%r&r'rr"r()rr)rrr r*#s    zWave_write.__init__cCs^||_d|_d|_d|_d|_d|_d|_d|_d|_d|_ dS)NrF) rrr2r5r7r_nframeswritten _datawritten _datalength_headerwritten)rr rrr r"/s         zWave_write.initfpcCs|jdS)N)r()rrrr r+;szWave_write.__del__cCs|S)Nr)rrrr r,>szWave_write.__enter__cGs|jdS)N)r()rr-rrr r.AszWave_write.__exit__cCs:|jrtd|dkr-td||_dS)Nz0cannot change parameters after starting to writer zbad # of channels)rZrr2)r nchannelsrrr setnchannelsGs     zWave_write.setnchannelscCs|jstd|jS)Nznumber of channels not set)r2r)rrrr r3Ns  zWave_write.getnchannelscCsF|jrtd|dks-|dkr9td||_dS)Nz0cannot change parameters after starting to writer rzbad sample width)rZrr5)rrVrrr setsampwidthSs    zWave_write.setsampwidthcCs|jstd|jS)Nzsample width not set)r5r)rrrr r6Zs  zWave_write.getsampwidthcCsF|jrtd|dkr-tdtt||_dS)Nz0cannot change parameters after starting to writerzbad frame rate)rZrintroundr7)r frameraterrr setframerate_s     zWave_write.setframeratecCs|jstd|jS)Nzframe rate not set)r7r)rrrr r8fs  zWave_write.getframeratecCs"|jrtd||_dS)Nz0cannot change parameters after starting to write)rZrr)rrKrrr setnframesks  zWave_write.setnframescCs|jS)N)rY)rrrr r4pszWave_write.getnframescCsC|jrtd|dkr-td||_||_dS)Nz0cannot change parameters after starting to writerRzunsupported compression type)rR)rZrr9r;)rcomptypecompnamerrr setcomptypess      zWave_write.setcomptypecCs|jS)N)r9)rrrr r:{szWave_write.getcomptypecCs|jS)N)r;)rrrr r<~szWave_write.getcompnamecCsu|\}}}}}}|jr-td|j||j||j||j||j||dS)Nz0cannot change parameters after starting to write)rZrr^r_rcrdrg)rparamsr]rVrbrKrerfrrr setparamss      zWave_write.setparamscCsU|j s|j s|j r*tdt|j|j|j|j|j|jS)Nznot all parameters set)r2r5r7rrrr9r;)rrrr r=s zWave_write.getparamscCstddS)Nzsetmark() not supported)r)rr?rAnamerrr setmarkszWave_write.setmarkcCstddS)Nzno marks)r)rr?rrr r@szWave_write.getmarkcCsdS)Nr)rrrr r>szWave_write.getmarkerscCs|jS)N)rY)rrrr r1szWave_write.tellcCst|ttfs*t|jd}|jt|t||j|j}|j ro|j |}|jdkrt j dkrt j ||j}|jj||jt|7_|j||_dS)NBr rD)r%bytes bytearray memoryviewcast_ensure_header_writtenrJr5r2rrFrGrHrIrwriterZrY)rrLrKrrr writeframesraws zWave_write.writeframesrawcCs-|j||j|jkr)|jdS)N)rsr[rZ _patchheader)rrLrrr writeframess zWave_write.writeframesc CsvzC|jrB|jd|j|jkr5|j|jjWdd|_|j}|rqd|_|jXdS)Nr)rrqr[rZrtflushr$r()rr rrr r(s      zWave_write.closecCsY|jsU|jstd|js3td|jsHtd|j|dS)Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)r\r2rr5r7 _write_header)rZdatasizerrr rqs       z!Wave_write._ensure_header_writtencCs:|jjd|js0||j|j|_|j|j|j|_y|jj|_Wn!tt fk rd|_YnX|jjt j dd|jdddt |j|j |j|j |j|j|j|jdd |jdk r|jj|_|jjt j d |jd |_dS) NsRIFFzr1rsrur(rqrwrtrrrr rW s8                       rWcCsi|dkr-t|dr'|j}nd}|dkrCt|S|dkrYt|StddS) Nmoder#rwrXz$mode must be 'r', 'rb', 'w', or 'wb')rr#)rrX)hasattrrrrWr)r)rrrr rs      )Nr r Nr )r'__all__ ExceptionrrUZ _array_fmtsrHrSrFr!r collectionsrrrrWrrrrrr Js