m๒
ญfIc           @   s   d  Z  d d g Z d e f d     YZ d f  d     YZ d f  d     YZ d   Z d d	  Z e	 d
 j o e   n d S(   sG   Classes for manipulating audio devices (currently only for Sun and SGI)t   errort   AudioDevc           B   s   t  Z RS(   N(   t   __name__t
   __module__(    (    (    t%   /mit/python/lib/python2.4/audiodev.pyR       s   t   Play_Audio_sgic           B   s   t  Z d Z d  Z Z 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 RS(   Ni    c         C   sอ   d  k  } d | i f d | i f d | i f d | i f d | i f d | i f d | i f g |  _	 d | i
 f d	 | i f d
 | i f g |  _ d | i f d	 | i f d | i f g |  _ d |  _ d  S(   Niป  iDฌ  i }  i"V  i>  i+  i@  i   i   i   i   (   t   ALt
   RATE_48000t
   RATE_44100t
   RATE_32000t
   RATE_22050t
   RATE_16000t
   RATE_11025t	   RATE_8000t   selft   frameratelistt   MONOt   STEREOt   QUADROt   nchannelslistt   SAMPLE_8t	   SAMPLE_16t	   SAMPLE_24t   sampwidthlistt   classinited(   R   R   (    (    R   t	   initclass   s
    	]	--c         C   s   d  k  } d  k } |  i p |  i   n g  |  _ | i d g |  _ | i   |  _	 d |  _
 d |  _ d |  _ d  |  _ d  |  _ d  S(   Ni    (   t   alR   R   R   R   t	   oldparamst   OUTPUT_RATEt   paramst	   newconfigt   configt   inited_outratet   inited_widtht   inited_nchannelst   Nonet	   convertert   port(   R   R   R   (    (    R   t   __init__(   s    
						c         C   s[   |  i o |  i   n |  i o5 d  k } d  k } | i | i |  i  g  |  _ n d  S(   N(   R   R%   t   stopR   R   R   t	   setparamst   DEFAULT_DEVICE(   R   R   R   (    (    R   t   __del__6   s    

c         C   sT   |  i p d  Sn d  k } x( |  i i   d j o | i d  q W|  i   d  S(   Ni    f0.10000000000000001(   R   R%   t   timet	   getfilledt   sleepR'   (   R   R+   (    (    R   t   wait>   s    
	 c         C   sg   |  i o |  i i   d  |  _ n |  i o5 d  k } d  k } | i | i |  i  g  |  _ n d  S(   N(	   R   R%   t	   closeportR#   R   R   R   R(   R)   (   R   R   R   (    (    R   R'   F   s    

c         C   sO   xH |  i D]4 \ } } | | j o | |  i d <d |  _ Pq
 q
 Wt d  d  S(   Ni   s   bad output rate(   R   R   t   rawt   cookedt   rateR   R    R    (   R   R2   R0   R1   (    (    R   t
   setoutrateO   s    
 		c         C   s   x |  i D]7 \ } } | | j o |  i i |  d |  _ Pq
 q
 W| d j o5 d  k } d |  _ |  i i | i	  |  i
 |  _ n
 t d  d  S(   Ni   i    s   bad sample width(   R   R   R0   R1   t   widthR   t   setwidthR!   R   R   t   ulaw2linR$   R    (   R   R4   R0   R1   R   (    (    R   t   setsampwidthX   s    
 				c         C   sR   xK |  i D]7 \ } } | | j o |  i i |  d |  _ Pq
 q
 Wt d  d  S(   Ni   s   bad # of channels(	   R   R   R0   R1   t	   nchannelsR   t   setchannelsR"   R    (   R   R8   R0   R1   (    (    R   t   setnchannelsg   s    
 		c         C   sฦ   |  i o |  i p t d  n |  i pj d  k } d  k } | i d d |  i  |  _ |  i	 |  _
 | i | i |  i
  | i | i |  i	  n |  i o |  i |  } n |  i i |  d  S(   Ns   params not specifiedt   Pythont   w(   R   R    R"   R    R%   R   R   t   openportR   R   R   t	   getparamsR)   R(   R$   t   datat
   writesamps(   R   R?   R   R   (    (    R   t   writeframesp   s    

c         C   s#   |  i o |  i i   Sn d Sd  S(   Ni    (   R   R%   R,   (   R   (    (    R   R,   }   s    
c         C   s,   |  i o |  i i   Sn |  i i   Sd  S(   N(   R   R%   t   getfillableR   t   getqueuesize(   R   (    (    R   RB      s    
c         C   s   d  k  } | i | d  S(   Ni   (   t   audioopR6   R?   (   R   R?   RD   (    (    R   R6      s    	(   R   R   R   R#   R   R   R   R   R&   R*   R.   R'   R3   R7   R:   RA   R,   RB   R6   (    (    (    R   R      s   															t   Play_Audio_sunc           B   sY   t  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 RS(
   Nc         C   sL   d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d  |  _ d  |  _	 d  S(   Ni    (
   R   t   outratet	   sampwidthR8   R    R!   R"   R#   R$   R%   (   R   (    (    R   R&      s    								c         C   s   |  i   d  S(   N(   R   R'   (   R   (    (    R   R*      s    c         C   s   | |  _ d |  _ d  S(   Ni   (   R2   R   RF   R    (   R   R2   (    (    R   R3   ข   s    	c         C   s   | |  _ d |  _ d  S(   Ni   (   R4   R   RG   R!   (   R   R4   (    (    R   R7   ฆ   s    	c         C   s   | |  _  d |  _ d  S(   Ni   (   R8   R   R"   (   R   R8   (    (    R   R:   ช   s    	c         C   s
  |  i o |  i o |  i p t d  n |  i pค d  k } d  k } | i d  |  _ |  i i	   } |  i | _ |  i | _ |  i d j o d | _ | i |  _ qู d |  i | _ | i | _ |  i i |  n |  i o |  i |  } n |  i i |  d  S(   Ns   params not specifiedR<   i    i   (   R   R    R!   R"   R    R%   t   sunaudiodevt   SUNAUDIODEVt   opent   getinfot   infoRF   t   o_sample_rateR8   t
   o_channelsRG   t   o_precisiont   ENCODING_ULAWt
   o_encodingt   ENCODING_LINEARt   setinfoR$   R?   t   write(   R   R?   RL   RH   RI   (    (    R   RA   ฎ   s"    
	
c         C   s-   |  i p d  Sn |  i i   |  i   d  S(   N(   R   R%   t   drainR'   (   R   (    (    R   R.   ร   s    
c         C   s5   |  i o' |  i i   |  i i   d  |  _ n d  S(   N(   R   R%   t   flusht   closeR#   (   R   (    (    R   R'   ษ   s    
c         C   s#   |  i o |  i i   Sn d Sd  S(   Ni    (   R   R%   t	   obufcount(   R   (    (    R   R,   ฯ   s    
(   R   R   R&   R*   R3   R7   R:   RA   R.   R'   R,   (    (    (    R   RE      s   								c          C   s   y d  k  }  Wns t j
 og y d  k } t   SWq t j
 o= y d  k } Wn t j
 o t d  q~ X| i   Sq Xn	 Xt   Sd  S(   Ns   no audio device(   R   t   ImportErrorRH   RE   t	   Audio_macR    t   Play_Audio_macR   (   R   RH   RZ   (    (    R   R   ู   s    	c         C   s  d  k  } | i d o | i d }  n d }  d  k } | i |  d  } |  G| i   GHt   } | i	 | i
    | i | i    | i | i    | i
   | i   | i   } x8 | i |  } | p Pn t |  GH| i |  qฝ W| i   d  S(   Ni   s   f:just samples:just.aift   r(   t   syst   argvt   fnt   aifcRJ   t   afR>   R   t   pR3   t   getframerateR7   t   getsampwidthR:   t   getnchannelst   BUFSIZt
   readframesR?   t   lenRA   R.   (   R_   Ra   R`   R]   Rb   Rf   R?   (    (    R   t   test๋   s(    			    t   __main__N(
   t   __doc__t   __all__t	   ExceptionR    R   RE   R   R#   Ri   R   (   RE   R   Rl   R   R    Ri   (    (    R   t   ?   s   I	