Ñò
ÝÙaKc           @   sœ   d  d k  l Z d  d k l Z l Z l Z l Z d  d k Td f  d „  ƒ  YZ e	 d j o< d  d k
 l
 Z
 e
 ƒ  Z e e ƒ Z e i e d d	 ƒ n d
 S(   iÿÿÿÿ(   t   unpack(   t   readBewt   readVart   varLent   toBytes(   t   *t   EventDispatcherc           B   sq   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d d d „ Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z RS(   c         C   s(   | |  _  d |  _ d |  _ d |  _ d S(   s[   
        
        The event dispatcher generates events on the outstream.
        
        i   N(   t	   outstreamt   convert_zero_velocityt   dispatch_continuos_controllerst   dispatch_meta_events(   t   selfR   (    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyt   __init__   s    		
		c         C   s   |  i  i | | | ƒ d S(   s   Triggers the header eventN(   R   t   header(   R   t   formatt   nTrackst   division(    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR   2   s    c         C   s$   |  i  i | ƒ |  i  i | ƒ d S(   s!   Triggers the start of track eventN(   R   t   set_current_trackt   start_of_track(   R   t   current_track(    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR   7   s    c         C   s   |  i  i | ƒ d S(   s   Dispatcher for sysex eventsN(   R   t   sysex_event(   R   t   data(    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR   A   s    c         C   s   |  i  i ƒ  d S(   s   End of file!N(   R   t   eof(   R   (    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR   F   s    i    i   c         C   s   |  i  i | | ƒ d S(   s   Updates relative/absolute time.N(   R   t   update_time(   R   t   new_timet   relative(    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR   K   s    c         C   s   |  i  i ƒ  d S(   s   Updates relative/absolute time.N(   R   t
   reset_time(   R   (    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR   P   s    c         C   sÞ  |  i  } t | ƒ } t d @| j oQ | \ } } | d j o! |  i o | i | | d ƒ qÚ| i | | | ƒ ndt d @| j o# | \ } } | i | | | ƒ n0t d @| j o# | \ } } | i | | | ƒ nü t	 d @| j oD | \ } } |  i
 o |  i | | | ƒ qÚ| i | | | ƒ n§ t d @| j o | d }	 | i | |	 ƒ nx t d @| j o | d }
 | i | |
 ƒ nI t d @| j o. | \ } } | d >| } | i | | ƒ n
 t d ‚ d S(   s   Dispatches channel messagesið   i    i@   i   s   Illegal channel message!N(   R   R   t   NOTE_ONR   t   note_offt   note_ont   NOTE_OFFt
   AFTERTOUCHt
   aftertoucht   CONTINUOUS_CONTROLLERR	   t   continuous_controllerst   continuous_controllert   PATCH_CHANGEt   patch_changet   CHANNEL_PRESSUREt   channel_pressuret
   PITCH_BENDt
   pitch_bendt
   ValueError(   R   t   hi_niblet   channelR   t   streamt   notet   velocityt
   controllert   valuet   programt   pressuret   hibytet   lobyte(    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyt   channel_messagesX   s:    	


c         C   s    |  i  } | i | | | ƒ d S(   s   Dispatches channel messagesN(   R   R#   (   R   R,   R0   R1   R-   (    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR"   ‹   s    	c   
      C   sÛ   |  i  } | t j o8 t | ƒ } | d @d ?} | d @} | i | | ƒ nŠ | t j o1 t | ƒ \ } } | d >| }	 | i |	 ƒ nL | t j o t | ƒ } | i | ƒ n" | t	 j o | i
 d d ƒ n d S(   s!   Dispatches system common messagesi   i   i   t   timeN(   R   t   MTCR   t   midi_time_codet   SONG_POSITION_POINTERR   t   song_position_pointert   SONG_SELECTt   song_selectt   TUNING_REQUESTt   tuning_requestt   None(
   R   t   common_typet   common_dataR-   R   t   msg_typet   valuesR4   R5   R1   (    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyt   system_commonsš   s    	
c         C   sô  |  i  } | t j o t | ƒ } | i | ƒ n¾| t j o | i | ƒ n | t j o | i | ƒ n‚| t j o | i	 | ƒ nd| t
 j o | i | ƒ nF| t j o | i | ƒ n(| t j o | i | ƒ n
| t j o | i | ƒ nì| t j o | i | ƒ nÎ| t j o | i | ƒ n°| t j o t | ƒ } | i | ƒ n†| t j o t | ƒ } | i | ƒ n\| t j o | i ƒ  nA| t j o6 t | ƒ \ } } }	 | i | d >| d >|	 ƒ nþ | t j o8 t | ƒ \ }
 } } } } | i  |
 | | | | ƒ n¹ | t! j o2 t | ƒ \ } } } } | i" | | | | ƒ nz | t# j o& t | ƒ \ } } | i$ | | ƒ nG | t% j o t | ƒ } | i& | ƒ n t | ƒ } | i' | | ƒ d S(   s   Dispatches meta eventsi   i   N((   R   t   SEQUENCE_NUMBERR   t   sequence_numbert   TEXTt   textt	   COPYRIGHTt	   copyrightt   SEQUENCE_NAMEt   sequence_namet   INSTRUMENT_NAMEt   instrument_namet   LYRICt   lyrict   MARKERt   markert   CUEPOINTt   cuepointt   PROGRAM_NAMEt   program_namet   DEVICE_NAMEt   device_namet   MIDI_CH_PREFIXt   midi_ch_prefixt	   MIDI_PORTt	   midi_portt   END_OF_TRACKt   end_of_trackt   TEMPOR   t   tempot   SMTP_OFFSETt   smtp_offsett   TIME_SIGNATUREt   time_signaturet   KEY_SIGNATUREt   key_signaturet   SPECIFICt   sequencer_specifict
   meta_event(   R   t	   meta_typeR   R-   t   numberR,   t   portt   b1t   b2t   b3t   hourt   minutet   secondt   framet	   framePartt   nnt   ddt   cct   bbt   sft   mit	   meta_data(    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyRj   ¶   s`    	!(   t   __name__t
   __module__R   R   R   R   R   R   R   R6   R"   RE   Rj   (    (    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyR      s   	!		
				3		t   __main__(   t
   MidiToTexti    s   @@N(   t   structR    t   DataTypeConvertersR   R   R   R   t	   constantsR   R}   R€   R   t
   dispatcherR6   R   (    (    (    s]   C:\Documents and Settings\Samuel Benveniste\workspace\MINWiiV7\src\mxmMidi\EventDispatcher.pyt   <module>   s   "
ÿ 	