
    ̺i                     b    S r SSKrSSKrSSKrSSKJrJrJr  S rS rS r	\
S:X  a  \	" 5         gg)zt
Play MIDI file on output port.

Example:

    mido-play some_file.mid

Todo:

  - add option for printing messages
    N)MessageMidiFile	tempo2bpmc            	          [         R                  " [        S9n U R                  nU" SSSS9  U" SSSS	S
SS9  U" SSSS	S
SS9  U" SSSSS9  U R	                  5       $ )N)descriptionz-oz--output-portzMido port to send output to)helpz-mz--print-messagesprint_messages
store_trueFz&Print messages as they are played back)destactiondefaultr   z-qz--quietquietzprint nothingfilesFILE+zMIDI file to play)metavarnargsr   )argparseArgumentParser__doc__add_argument
parse_args)parserargs     U/var/www/piano.thomer.com/venv/lib/python3.13/site-packages/mido/scripts/mido_play.pyr   r      s    $$9F


Co*,  5	7 i	  "
     c           	          [        U5      n[        SUR                   S35        UR                  n[        SR	                  [        US-  5      [        US-  5      5      5        [        S5        [        UR                  5       H0  u  pV[        SUS SUR                  R                  5       < 35        M2     UR                  S	S
9 H  nU(       aI  [        R                  R                  [        U5      S-   5        [        R                  R                  5         [!        U["        5      (       a  U R%                  U5        M{  UR&                  S:X  d  M  [        SR	                  [)        UR*                  5      5      5        M     [        5         g )NzPlaying .z$Song length: {} minutes, {} seconds.<   zTracks:z  2dz: T)meta_messages
	set_tempozTempo changed to {:.1f} BPM.)r   printfilenamelengthformatint	enumeratetracksnamestripplaysysstdoutwritereprflush
isinstancer   sendtyper   tempo)outputr%   r	   	midi_filer&   itrackmessages           r   	play_filer<   4   s6   "I	HY''(
*+F	
0
7
7FRKFRK  
)i../1R&5::++-012 0 >>>5JJT']T12JJgw''KK \\[(077'--(* + 6 
Gr   c                     [        5       n U R                  (       a  S q [        R                  " U R
                  5       n[        SUR                  < S35        UR                  5          U R                   H  n[        XU R                  5        M     [        5         UR                  5          S S S 5        g ! [        5         UR                  5         f = f! , (       d  f       g = f! [         a     g f = f)Nc                      g )N )argss    r   r$   r$   S   s    r   zUsing output r   )r   r   r$   midoopen_outputoutput_portr+   resetr   r<   r	   KeyboardInterrupt)r@   r7   r%   s      r   mainrF   N   s    <Dzz	d../6M&++23LLN $

Hf0C0CD !+  0/  0/  sG    C)  +C,)B9C0C) 9CC
C&"C) &C) )
C65C6__main__)r   r   r.   rA   r   r   r   r   r<   rF   __name__r?   r   r   <module>rI      s>   
  
  - -64, zF r   