+
    TV-j  ã                   óN   € ^ RI t ^ RIHt ^ RIHtHt ^ RIt^ RIt	 ! R R4      t
R# )é    N)Údeque)ÚEventÚLockc                   ór   a € ] tR t^	t o RtRtRtRR ltR tR t	R t
V 3R lR ltR	 tR
 tR tR tRtV tR# )ÚAudioPlayerg      ø?g      Ð?c                óâ   € Wn         W n        \        4       V n        \	        4       V n        R V n        RV n        \        4       V n	        ^ V n
        \        P                  ! 4       V n        Wn        R # ©NF)Úsample_rateÚbuffer_sizer   Úaudio_bufferr   Úbuffer_lockÚstreamÚplayingr   Údrain_eventÚwindow_sample_countÚtimeÚperf_counterÚwindow_startÚarrival_rate)Úselfr
   r   s   &&&Úk/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_audio/tts/audio_player.pyÚ__init__ÚAudioPlayer.__init__   sY   € Ø&ÔØ&Ôä!›GˆÔÜ›6ˆÔØ.2ˆŒØˆŒÜ ›7ˆÔà#$ˆÔ Ü ×-Ò-Ó/ˆÔØ'Öó    c                óf  € VP                  ^ 4       ^ pV P                  ;_uu_ 4        WR8  d™   V P                  '       d‡   V P                  ^ ,          p\        W%,
          \	        V4      4      pVRV WWW,           1^ 3&   WW,          pV\	        V4      8X  d   V P                  P                  4        K‹  WgR V P                  ^ &   Kž  V P                  '       g=   WR8  d7   V P                  P                  4        RV n        \        P                  ! 4       hRRR4       R#   + '       g   i     R# ; i)r   NF)Úfillr   r   ÚminÚlenÚpopleftr   Úsetr   ÚsdÚCallbackStop)r   ÚoutdataÚframesr   ÚstatusÚfilledÚbufÚto_copys   &&&&&   r   ÚcallbackÚAudioPlayer.callback   sê   € Ø�‰�QŒØˆà××ÓØ”/ d×&7×&7Ð&7Ø×'Ñ'¨Õ*�Ü˜f�o¬s°3«xÓ8�Ø8;¸H¸W¸� Õ!1Ð1°1Ð4Ñ5ØÕ!�àœc #›hÔ&Ø×%Ñ%×-Ñ-Ö/à+.¨x¨=�D×%Ñ% aÓ(à×$×$Ð$¨¬Ø× Ñ ×$Ñ$Ô&Ø$�”Ü—o’oÓ'Ð'÷ ××Òús   ¨DÁBDÃ<DÄD0	c                ó  € \        R 4       \        P                  ! V P                  ^V P                  V P
                  R7      V n        V P                  P                  4        RV n        V P                  P                  4        R# )z
Starting audio stream...)Ú
samplerateÚchannelsr)   Ú	blocksizeTN)Úprintr!   ÚOutputStreamr
   r)   r   r   Ústartr   r   Úclear©r   s   &r   Ústart_streamÚAudioPlayer.start_stream1   sb   € ÜÐ*Ô+Ü—o’oØ×'Ñ'ØØ—]‘]Ø×&Ñ&ô	
ˆŒð 	�‰×ÑÔØˆŒØ×Ñ×ÑÖ r   c                óÖ   €  V P                   '       d5   V P                   P                  4        V P                   P                  4        R V n         RV n        R #   R T n         RT n        i ; ir	   )r   ÚstopÚcloser   r3   s   &r   Ústop_streamÚAudioPlayer.stop_stream=   sP   € ð	!Ø�{�{ˆ{Ø—‘× Ñ Ô"Ø—‘×!Ñ!Ô#àˆDŒKØ ˆDŽLøð ˆDŒKØ ˆD�Lús   ‚A ”4A ÁA(c                ó    <€ V ^8„  d   QhRS[ /# )é   Úreturn)Úint)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚAudioPlayer.__annotate__F   s   ø€ ÷ 0ñ 0¡#ñ 0r   c                óH   € \        \        \        V P                  4      4      # )N)ÚsumÚmapr   r   r3   s   &r   Úbuffered_samplesÚAudioPlayer.buffered_samplesF   s   € Ü”3”s˜D×-Ñ-Ó.Ó/Ð/r   c                ó„  € \         P                  ! V\         P                  R 7      p\        V4      '       g   R# VP                  ^ 8X  d   VP                  ^4      pMÞVP                  ^8X  d¬   VP                  ^,          ^8X  d   VR,          pM«VP                  ^ ,          ^8X  d   V^ ,          pM‰VP                  ^ ,          ^8:  d=   VP                  ^ ,          VP                  ^,          8  d   VP                  ^ R7      pM5VP                  ^R7      pM"VP                  ^8”  d   VP                  R4      p\        P                  ! 4       pV ;P                  \        V4      ,          un
        W P                  ,
          V P                  8¼  d‚   V P                  W P                  ,
          ,          pV P                  f   TM;V P                  V,          ^V P                  ,
          V P                  ,          ,           V n        ^ V n
        W n        V P                  ;_uu_ 4        V P                   P#                  V4       RRR4       \%        V P                  V P&                  ,          4      pV P(                  '       g*   V P+                  4       V8¼  d   V P-                  4        R# R# R#   + '       g   i     Ls; i))ÚdtypeN)Úaxis):NNNr   éÿÿÿÿ)ÚnpÚasarrayÚfloat32r   ÚndimÚreshapeÚshapeÚmeanr   r   r   r   Úmeasure_windowr   Ú	ema_alphar   r   Úappendr>   Úmin_buffer_secondsr   rF   r4   )r   ÚsamplesÚnowÚ	inst_rateÚneededs   &&   r   Úqueue_audioÚAudioPlayer.queue_audioI   s   € Ü—*’*˜W¬B¯J©JÔ7ˆÜ�7�|Š|ÙØ�<‰<˜1ÔØ—o‘o aÓ(‰GØ�\‰\˜QÔØ�}‰}˜QÕ 1Ô$Ø! $�-‘Ø—‘˜qÕ! QÔ&Ø! !�*‘Ø—‘˜qÕ! QÔ&¨7¯=©=¸Õ+;¸g¿m¹mÈAÕ>NÔ+NØ!Ÿ,™,¨A˜,Ó.‘à!Ÿ,™,¨A˜,Ó.‘Ø�\‰\˜AÔØ—o‘o bÓ)ˆGä×ÒÓ!ˆð 	× Ò ¤C¨£LÕ0Õ Ø×"Ñ"Õ" d×&9Ñ&9Ô9Ø×0Ñ0°C×:KÑ:KÕ4KÕLˆIð ×$Ñ$Ò,ñ à—^‘^ iÕ/Ø�t—~‘~Õ%¨×):Ñ):Õ:õ;ð Ôð ()ˆDÔ$Ø #Ôà××ÓØ×Ñ×$Ñ$ WÔ-÷ ô �T×&Ñ&¨×)@Ñ)@Õ@ÓAˆØ�|�|ˆ| × 5Ñ 5Ó 7¸6Ô AØ×ÑÖñ !B‰|÷ ×ús   È(J/Ê/J?	c                óª   € V P                   '       g)   V P                  4       ^ 8”  d   V P                  4        MR# V P                  P	                  4       # )r   N)r   rF   r4   r   Úwaitr3   s   &r   Úwait_for_drainÚAudioPlayer.wait_for_drainr   sB   € ð �|�|ˆ|Ø×$Ñ$Ó&¨Ô*Ø×!Ñ!Õ#áØ×Ñ×$Ñ$Ó&Ð&r   c                ó¨   € V P                   '       d@   V P                  4        \        P                  ! ^d4       V P	                  4        RV n         R# R# )éd   FN)r   r_   r!   Úsleepr9   r3   s   &r   r7   ÚAudioPlayer.stop}   s:   € Ø�<�<ˆ<Ø×ÑÔ!Ü�HŠH�SŒMà×ÑÔØ ˆDŽLñ r   c                ó$  € V P                   '       g   R# V P                  ;_uu_ 4        V P                  P                  4        RRR4       V P	                  4        RV n         V P
                  P                  4        R#   + '       g   i     LC; i)z1Discard everything and stop playback immediately.NF)r   r   r   r2   r9   r   r    r3   s   &r   ÚflushÚAudioPlayer.flush…   s_   € à�|�|ˆ|Ùà××ÓØ×Ñ×#Ñ#Ô%÷ à×ÑÔØˆŒØ×Ñ×ÑÖ÷	 ×ús   ©A?Á?B	)
r   r   r   r   r   r   r
   r   r   r   N)iÀ]  i   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rV   rS   rT   r   r)   r4   r9   rF   r[   r_   r7   rf   Ú__static_attributes__Ú__classdictcell__)r@   s   @r   r   r   	   sM   ø‡ € ØÐØ€NØ€Iô(ò(ò*
!ò!÷0ð 0ò' òR	'ò!÷	ð 	r   r   )r   Úcollectionsr   Ú	threadingr   r   ÚnumpyrL   Úsounddevicer!   r   © r   r   Ú<module>rs      s    ðÛ Ý ß !ã Û ÷Eó Er   