+
    PV-j6Y ã                   ó  € R t Rt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RIHtHtHtHtHtHtHtHt ^ RIHtHt  ^ RIt]P:                  ! 4         ! R R]4      t ! R R	]4      t ! R
 R]4      t  ! R R]4      t! ! R R]4      t" ! R R]4      t# ! R R]4      t$ ! R R]4      t%]]&]P                  3,          t']]'](R3,          t)]R]'R3,          t*]]']'R3,          t+]])]*]+3,          t, ! R R4      t- ! R R]-4      t. ! R R]/4      t0 ! R R]04      t1R R lt2R¤R  R! llt3R" R# lt4R$ R% lt5R& R' lt6R( R) lt7R¥R* R+ llt8R, R- lt9R. R/ lt:R0 R1 lt;R2 R3 lt<R4 R5 lt=R6 R7 lt>R8 R9 lt?R: R; lt@R¦R= R> lltAR? R@ ltBRA RB ltCRC RD ltDRE RF ltERG RH ltFRI RJ ltGR¦RK RL lltHRM RN ltIRO RP ltJRQ RR ltKRS RT ltLRU RV ltMRW RX ltNRY RZ ltOR[ R\ ltPR¦R] R^ lltQR_ R` ltRRa Rb ltSRc Rd ltTRe Rf ltU ! Rg Rh4      tVRi Rj ltWRk Rl ltXR¤Rm Rn lltY]P´                  ^Ro]!P¶                  3Rp Rq llt\]P´                  ^Ro]!P¶                  3Rr Rs llt]R§Rt Ru llt^]P´                  ^RoR<]!P¶                  ^ 3Rv Rw llt_]P´                  ^RoR<]!P¶                  3Rx Ry llt`R¨Rz R{ llta ! R| R}]PÄ                  4      tc ! R~ R]c4      td]PÊ                  ]P´                  ^RoR<]!P¶                  ^ 3R€ R� lltfR©R‚ Rƒ lltg]PÐ                  ! 4       R„ R… l4       ti]PÐ                  ! 4       R† R‡ l4       tj]!P¶                  3Rˆ R‰ lltkRŠ R‹ ltl]PÐ                  ! 4       RŒ R� l4       tm]PÐ                  ! 4       RŽ R� l4       tn ! R� R‘4      to ! R’ R“]o4      tp ! R” R•]o4      tq ! R– R—]o4      trR˜ R™ lts ! Rš R›]Pè                  4      tuRœ R� ltvRž RŸ ltwR  R¡ ltxR¢ R£ ltyR#   ] d    Rt EL®i ; i)ªzÐ
Python interface to the miniaudio library (https://github.com/dr-soft/miniaudio)

Author: Irmen de Jong (irmen@razorvine.net)
Software license: "MIT software license". See http://opensource.org/licenses/MIT
z1.71N)ÚEnum)Ú	GeneratorÚListÚDictÚSetÚOptionalÚUnionÚAnyÚCallable)ÚffiÚlibc                   ó’   € ] tR t^!tRt]P                  t]P                  t	]P                  t]P                  t]P                  tRtR# )Ú
FileFormatzAudio file format© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úma_encoding_format_unknownÚUNKNOWNÚma_encoding_format_wavÚWAVÚma_encoding_format_flacÚFLACÚma_encoding_format_mp3ÚMP3Úma_encoding_format_vorbisÚVORBISÚ__static_attributes__r   ó    ÚZ/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/miniaudio.pyr   r   !   s<   † Ùà×,Ñ,€GØ
×
$Ñ
$€CØ×&Ñ&€DØ
×
$Ñ
$€CØ×*Ñ*„Fr    r   c                   óª   € ] tR t^+tRt]P                  t]P                  t	]P                  t]P                  t]P                  t]P                   tRtR# )ÚSampleFormatzSample format in memoryr   N)r   r   r   r   r   r   Úma_format_unknownr   Úma_format_u8Ú	UNSIGNED8Úma_format_s16ÚSIGNED16Úma_format_s24ÚSIGNED24Úma_format_s32ÚSIGNED32Úma_format_f32ÚFLOAT32r   r   r    r!   r#   r#   +   sG   † Ù!à×#Ñ#€GØ× Ñ €IØ× Ñ €HØ× Ñ €HØ× Ñ €HØ×Ñ„Gr    r#   c                   ób   € ] tR t^6tRt]P                  t]P                  t	]P                  tRtR# )Ú
DeviceTypezType of audio devicer   N)r   r   r   r   r   r   Úma_device_type_playbackÚPLAYBACKÚma_device_type_captureÚCAPTUREÚma_device_type_duplexÚDUPLEXr   r   r    r!   r0   r0   6   s&   † Ùà×*Ñ*€HØ×(Ñ(€GØ×&Ñ&„Fr    r0   c                   ób   € ] tR t^>tRt]P                  t]P                  t	]P                  tRtR# )Ú
DitherModezHow to dither when convertingr   N)r   r   r   r   r   r   Úma_dither_mode_noneÚNONEÚma_dither_mode_rectangleÚ	RECTANGLEÚma_dither_mode_triangleÚTRIANGLEr   r   r    r!   r8   r8   >   s&   † Ù'à×"Ñ"€DØ×,Ñ,€IØ×*Ñ*„Hr    r8   c                   óz   € ] tR t^FtRt]P                  t]P                  t	]P                  t]P                  tRtR# )ÚChannelMixModez#How to mix channels when convertingr   N)r   r   r   r   r   r   Úma_channel_mix_mode_rectangularÚRECTANGULARÚma_channel_mix_mode_simpleÚSIMPLEÚ"ma_channel_mix_mode_custom_weightsÚCUSTOMWEIGHTSÚma_channel_mix_mode_defaultÚDEFAULTr   r   r    r!   r@   r@   F   s1   † Ù-à×5Ñ5€KØ×+Ñ+€FØ×:Ñ:€MØ×-Ñ-„Gr    r@   c                   ó‚  € ] tR t^OtRt]P                  t]P                  t	]P                  t]P                  t]P                  t]P                   t]P$                  t]P(                  t]P,                  t]P0                  t]P4                  t]P8                  t]P<                  t]P@                  t!]PD                  t#Rt$R# )ÚBackendzGOperating system audio backend to use (only a subset will be available)r   N)%r   r   r   r   r   r   Úma_backend_wasapiÚWASAPIÚma_backend_dsoundÚDSOUNDÚma_backend_winmmÚWINMMÚma_backend_coreaudioÚ	COREAUDIOÚma_backend_sndioÚSNDIOÚma_backend_audio4ÚAUDIO4Úma_backend_ossÚOSSÚma_backend_pulseaudioÚ
PULSEAUDIOÚma_backend_alsaÚALSAÚma_backend_jackÚJACKÚma_backend_aaudioÚAAUDIOÚma_backend_openslÚOPENSLÚma_backend_webaudioÚWEBAUDIOÚma_backend_customÚCUSTOMÚma_backend_nullÚNULLr   r   r    r!   rJ   rJ   O   sª   † ÙQà×"Ñ"€FØ×"Ñ"€FØ× Ñ €EØ×(Ñ(€IØ× Ñ €EØ×"Ñ"€FØ
×
Ñ
€CØ×*Ñ*€JØ×Ñ€DØ×Ñ€DØ×"Ñ"€FØ×"Ñ"€FØ×&Ñ&€HØ×"Ñ"€FØ×Ñ„Dr    rJ   c                   óÚ   € ] tR t^ctRt]P                  t]P                  t	]P                  t]P                  t]P                  t]P                   t]P$                  t]P(                  tRtR# )ÚThreadPriorityz3The priority of the worker thread (default=HIGHEST)r   N)r   r   r   r   r   r   Úma_thread_priority_idleÚIDLEÚma_thread_priority_lowestÚLOWESTÚma_thread_priority_lowÚLOWÚma_thread_priority_normalÚNORMALÚma_thread_priority_highÚHIGHÚma_thread_priority_highestÚHIGHESTÚma_thread_priority_realtimeÚREALTIMEÚma_thread_priority_defaultrH   r   r   r    r!   rj   rj   c   s]   † Ù=à×&Ñ&€DØ×*Ñ*€FØ
×
$Ñ
$€CØ×*Ñ*€FØ×&Ñ&€DØ×,Ñ,€GØ×.Ñ.€HØ×,Ñ,„Gr    rj   c                   ób   € ] tR t^ptRt]P                  t]P                  t	]P                  tRtR# )Ú
SeekOriginzHow to seek() in a sourcer   N)r   r   r   r   r   r   Úma_seek_origin_startÚSTARTÚma_seek_origin_currentÚCURRENTÚma_seek_origin_endÚENDr   r   r    r!   r{   r{   p   s&   † Ù#à×$Ñ$€EØ×(Ñ(€GØ
×
 Ñ
 „Cr    r{   c                   ó^   a € ] tR t^ƒt o RtR
V 3R lR lltV 3R lR ltV 3R lR ltR	tV t	R# )ÚSoundFileInfoz-Contains various properties of an audio file.Nc                óN   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RS[RS[RS[R	R
/	# )é   ÚnameÚfile_formatÚ	nchannelsÚsample_rateÚsample_formatÚdurationÚ
num_framesÚ
sub_formatÚreturnN)Ústrr   Úintr#   Úfloat)ÚformatÚ__classdict__s   "€r!   Ú__annotate__ÚSoundFileInfo.__annotate__†   se   ø€ ÷ %ñ %áð%ñ  ð%ñ ð	%ñ
 ð%ñ $ð%ñ ð%ñ ð%ñ ð%ð 
ñ%r    c	                ó  € Wn         W0n        W@n        WPn        \        P
                  ! \        P                  ! VP                  4      4      P                  4       V n
        \        V4      V n        Wpn        W`n        W n        W€n        R # ©N)r†   rˆ   r‰   rŠ   r   Ústringr   Úma_get_format_nameÚvalueÚdecodeÚsample_format_nameÚwidth_from_formatÚsample_widthrŒ   r‹   r‡   r�   )	Úselfr†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   s	   &&&&&&&&&r!   Ú__init__ÚSoundFileInfo.__init__†   sm   € ð Œ	Ø"ŒØ&ÔØ*ÔÜ"%§*¢*Ü×"Ò" =×#6Ñ#6Ó7ó#
ç
‰&‹(ð 	Ôô .¨mÓ<ˆÔØ$ŒØ ŒØ&ÔØ$Žr    c                ó    <€ V ^8„  d   QhRS[ /# ©r…   rŽ   ©r�   )r’   r“   s   "€r!   r”   r•   ž   s   ø€ ÷ 
ñ 
™ñ 
r    c                ó  € V P                   P                  pV P                  '       d+   VR \        V P                  4      ,           R,           ,          pRP                  ! RRV P
                  P                  RV/\        V 4      B # )z (fmt=Ú)z‡<{clazz}: '{name}' {fileformatdisplay} {nchannels} ch, {sample_rate} hz, {sample_format.name}, {num_frames} frames={duration:.2f} sec.>ÚclazzÚfileformatdisplayr   )r‡   r†   r�   r�   r’   Ú	__class__r   Úvars)rŸ   r¨   s   & r!   Ú__str__ÚSoundFileInfo.__str__ž   s~   € Ø ×,Ñ,×1Ñ1ÐØ�?�?ˆ?Ø ¬C°·±Ó,@Õ!@À3Õ!FÕFÐð7ß7=±vð>ñ à—n‘n×-Ñ-ðð #4ðô ˜“:ñ	ð	
r    c                ó    <€ V ^8„  d   QhRS[ /# r£   r¤   )r’   r“   s   "€r!   r”   r•   «   s   ø€ ÷ ñ ™#ñ r    c                ó   € \        V 4      # r—   r¤   ©rŸ   s   &r!   Ú__repr__ÚSoundFileInfo.__repr__«   s   € Ü�4‹yÐr    )
r‹   r‡   r†   rˆ   rŒ   rŠ   rœ   r‰   rž   r�   r—   )
r   r   r   r   r   r    r«   r°   r   Ú__classdictcell__©r“   s   @r!   rƒ   rƒ   ƒ   s&   ø‡ € Ù7÷%ò %÷0
ð 
÷ö r    rƒ   c                   óB   a a€ ] tR t^¯t oRtV3R lV 3R lltRtVtV ;t# )ÚDecodedSoundFilezRContains various properties and also the PCM frames of a fully decoded audio file.c                óP   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[P                  RR/# )r…   r†   rˆ   r‰   rŠ   ÚsamplesrŽ   N)r�   r�   r#   Úarray)r’   r“   s   "€r!   r”   ÚDecodedSoundFile.__annotate__²   sK   ø€ ÷ ñ áðñ ðñ ð	ñ
 $ðñ —‘ðð 
ñr    c           	     óŽ   <€ \        V4      V,          pWc,          p\        SV `	  V\        P                  VVVVV4       WPn        R # r—   )ÚlenÚsuperr    r   r   r·   )	rŸ   r†   rˆ   r‰   rŠ   r·   rŒ   r‹   r©   s	   &&&&&&  €r!   r    ÚDecodedSoundFile.__init__²   sJ   ø€ ô ˜“\ YÕ.ˆ
ØÕ+ˆÜ‰ÑØÜ×ÑØØØØØô	
ð Žr    ©r·   )	r   r   r   r   r   r    r   r²   Ú__classcell__©r©   r“   s   @@r!   rµ   rµ   ¯   s   ù‡ € Ù\÷÷ ó r    rµ   c                   ó   € ] tR t^ÈtRtRtR# )ÚMiniaudioErrorz'When a miniaudio specific error occurs.r   N©r   r   r   r   r   r   r   r    r!   rÂ   rÂ   È   s   † Ù1ãr    rÂ   c                   ó   € ] tR t^ÎtRtRtR# )ÚDecodeErrorz8When something went wrong during decoding an audio file.r   NrÃ   r   r    r!   rÅ   rÅ   Î   s   † ÙBãr    rÅ   c                ó0   € V ^8„  d   QhR\         R\        /# ©r…   ÚfilenamerŽ   ©r�   rƒ   )r’   s   "r!   r”   r”   Ô   s   € ÷ 1ñ 1œCð 1¤Mñ 1r    c                ó  € \         P                  P                  V 4      ^,          P                  4       pVR9   d   \	        V 4      # VR8X  d   \        V 4      # VR8X  d   \        V 4      # VR8X  d   \        V 4      # \        R4      h)z,Fetch some information about the audio file.ú.mp3ú.flacú.wavúunsupported file format©z.oggz.vorbis)	ÚosÚpathÚsplitextÚlowerÚvorbis_get_file_infoÚmp3_get_file_infoÚflac_get_file_infoÚwav_get_file_inforÅ   )rÈ   Úexts   & r!   Úget_file_inforÙ   Ô   sz   € ä
�'‰'×
Ñ
˜8Ó
$ QÕ
'×
-Ñ
-Ó
/€CØ
Ð!Ô!Ü# HÓ-Ð-Ø	�ŒÜ  Ó*Ð*Ø	�ŒÜ! (Ó+Ð+Ø	�ŒÜ  Ó*Ð*Ü
Ð/Ó
0Ð0r    c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r…   rÈ   Úconvert_to_16bitrŽ   )r�   Úboolrµ   )r’   s   "r!   r”   r”   â   s"   € ÷ 51ñ 51œð 51¬tð 51Ô@Pñ 51r    c                óô  € \         P                  P                  V 4      ^,          P                  4       pVR9   dT   V'       d   \	        V 4      # \        V 4      pVP                  \        P                  8X  d   \	        V 4      # \        R4      hVR8X  d~   V'       d   \        V 4      # \        V 4      pVP                  \        P                  8X  d   \        V 4      # VP                  \        P                  8X  d   \        V 4      # \        R4      hVR8X  d¨   V'       d   \        V 4      # \        V 4      pVP                  \        P                  8X  d   \        V 4      # VP                  \        P                   8X  d   \#        V 4      # VP                  \        P                  8X  d   \%        V 4      # \        R4      hVR8X  d¨   V'       d   \'        V 4      # \)        V 4      pVP                  \        P                  8X  d   \'        V 4      # VP                  \        P                   8X  d   \+        V 4      # VP                  \        P                  8X  d   \-        V 4      # \        R4      h\/        R4      h)zæReads and decodes the whole audio file.
Miniaudio will attempt to return the sound data in exactly the same format as in the file.
Unless you set convert_convert_to_16bit to True, then the result is always a 16 bit sample format.
z-file has sample format that must be convertedrË   rÌ   rÍ   rÎ   rÏ   )rÐ   rÑ   rÒ   rÓ   Úvorbis_read_filerÔ   rŠ   r#   r(   rÂ   Úmp3_read_file_s16rÕ   r.   Úmp3_read_file_f32Úflac_read_file_s16rÖ   r,   Úflac_read_file_s32Úflac_read_file_f32Úwav_read_file_s16r×   Úwav_read_file_s32Úwav_read_file_f32rÅ   )rÈ   rÛ   rØ   ÚvorbisÚmp3ÚflacÚwavs   &&     r!   Ú	read_filerë   â   s÷  € ô
 �'‰'×
Ñ
˜8Ó
$ QÕ
'×
-Ñ
-Ó
/€Cà
Ð!Ô!ßÜ# HÓ-Ð-ä)¨(Ó3ˆFØ×#Ñ#¤|×'<Ñ'<Ô<Ü'¨Ó1Ð1ä$Ð%TÓUÐUØ	�ŒßÜ$ XÓ.Ð.ä# HÓ-ˆCØ× Ñ ¤L×$9Ñ$9Ô9Ü(¨Ó2Ð2Ø×"Ñ"¤l×&:Ñ&:Ô:Ü(¨Ó2Ð2ä$Ð%TÓUÐUØ	�ŒßÜ% hÓ/Ð/ä% hÓ/ˆDØ×!Ñ!¤\×%:Ñ%:Ô:Ü)¨(Ó3Ð3Ø×#Ñ#¤|×'<Ñ'<Ô<Ü)¨(Ó3Ð3Ø×#Ñ#¤|×';Ñ';Ô;Ü)¨(Ó3Ð3ä$Ð%TÓUÐUØ	�ŒßÜ$ XÓ.Ð.ä# HÓ-ˆCØ× Ñ ¤L×$9Ñ$9Ô9Ü(¨Ó2Ð2Ø×"Ñ"¤l×&;Ñ&;Ô;Ü(¨Ó2Ð2Ø×"Ñ"¤l×&:Ñ&:Ô:Ü(¨Ó2Ð2ä$Ð%TÓUÐUÜ
Ð/Ó
0Ð0r    c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   rÉ   )r’   s   "r!   r”   r”     s   € ÷ )ñ )¤3ð )¬=ñ )r    c                ól  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! W\        P
                  4      pV'       g   \        R4      h \        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4      p\        V \        P                  VP                  VP                  \        P                   VV4      \        P"                  ! V4       uuRRR4       #   \        P"                  ! T4       i ; i  + '       g   i     R# ; i)z<Fetch some information about the audio file (vorbis format).úint *úcould not open/decode fileN)Ú_get_filename_bytesr   Únewr   Ústb_vorbis_open_filenamerh   rÅ   Ústb_vorbis_get_infoÚ#stb_vorbis_stream_length_in_secondsÚ#stb_vorbis_stream_length_in_samplesrƒ   r   r   Úchannelsr‰   r#   r(   Ústb_vorbis_close)rÈ   ÚfilenamebytesÚerrorrç   Úinfor‹   rŒ   s   &      r!   rÔ   rÔ     sà   € ä'¨Ó1€MÜ	�Š�×	Ô	˜UÜ×-Ò-¨mÄCÇHÁHÓMˆßÜÐ:Ó;Ð;ð	)Ü×*Ò*¨6Ó2ˆDÜ×>Ò>¸vÓFˆHÜ×@Ò@ÀÓHˆJÜ ØÜ×!Ñ!Ø—‘Ø× Ñ Ü×%Ñ%ØØóô × Ò  Ô(÷% 
Ò	øô$ × Ò  Õ(ú÷% 
×	Ð	ús$   ª9D"Á$BDÃ&D"ÄDÄD"Ä"D3	c                ó0   € V ^8„  d   QhR\         R\        /# ©r…   ÚdatarŽ   ©Úbytesrƒ   )r’   s   "r!   r”   r”   2  s   € ÷ )ñ )œ%ð )¤Mñ )r    c                ól  € \         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      V\         P
                  4      pV'       g   \        R4      h \        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4      p\        R\        P                  VP                  VP                  \        P                   VV4      \        P"                  ! V4       uuRRR4       #   \        P"                  ! T4       i ; i  + '       g   i     R# ; i)z<Fetch some information about the audio data (vorbis format).rî   úcould not open/decode dataú<memory>N)r   rñ   r   Ústb_vorbis_open_memoryr»   rh   rÅ   ró   rô   rõ   rƒ   r   r   rö   r‰   r#   r(   r÷   )rý   rù   rç   rú   r‹   rŒ   s   &     r!   Úvorbis_get_infor  2  sÞ   € ä	�Š�×	Ô	˜UÜ×+Ò+¨D´#°d³)¸UÄCÇHÁHÓMˆßÜÐ:Ó;Ð;ð	)Ü×*Ò*¨6Ó2ˆDÜ×>Ò>¸vÓFˆHÜ×@Ò@ÀÓHˆJÜ ØÜ×!Ñ!Ø—‘Ø× Ñ Ü×%Ñ%ØØóô × Ò  Ô(÷% 
Ò	øô$ × Ò  Õ(ú÷% 
×	Ð	ús%   ŸAD"Á$BDÃ&D"ÄDÄD"Ä"D3	c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   ©r�   rµ   )r’   s   "r!   r”   r”   I  s   € ÷  ñ  œsð  Ô'7ñ  r    c                ój  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WW44      pV^ 8:  d   \        R4      h \        P                  ! V^ ,          WR^ ,          ,          ^,          4      p\        ^4      pVP                  V4       \        W^ ,          V^ ,          \        P                  V4      \        P                  ! V^ ,          4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T^ ,          4       i ; i  + '       g   i     M; iRRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zaReads and decodes the whole vorbis audio file. Resulting sample format is 16 bits signed integer.rî   úshort **úcannot load/decode fileN)rð   r   rñ   r   Ústb_vorbis_decode_filenamerÅ   ÚbufferÚ_create_int_arrayÚ	frombytesrµ   r#   r(   Úfree)rÈ   rø   rö   r‰   ÚoutputrŒ   r  r·   s   &       r!   rÞ   rÞ   I  s0  € ä'¨Ó1€MÜ	�Š�×	Ô	˜X¤s§w¢w¨w×'7Ô'7¸;ÌÏÊØ÷Iô Ià	Ü×3Ò3Ø [ó
ˆ
ð ˜Œ?ÜÐ7Ó8Ð8ð	 Ü—Z’Z  q¥	¨:À½Õ+CÀaÕ+GÓHˆFÜ'¨Ó*ˆGØ×Ñ˜fÔ%Ü#Ø 1�+ {°1¥~´|×7LÑ7LÈgóô �HŠH�V˜A•YÔ÷!Iñ I×'7Ñ'7×	Ò	øô  �HŠH�V˜A•YÕú÷!I÷ Iú×'7×'7×'7Ð'7ú×	×	×	Ò	úsZ   ªF!Á	F	Á(*E(ÂA7EÄ
E(Ä'
F	Ä1
F!ÅE%Å%E(Å(E8Å3F	Å;	F!ÆFÆF!Æ!F2	c                ó0   € V ^8„  d   QhR\         R\        /# rü   ©rÿ   rµ   )r’   s   "r!   r”   r”   _  s   € ÷  ñ  ”eð  Ô 0ñ  r    c                ól  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      WV4      pV^ 8:  d   \        R4      h \         P                  ! V^ ,          WA^ ,          ,          ^,          4      p\        ^4      pVP                  V4       \        RV^ ,          V^ ,          \        P                  V4      \        P                  ! V^ ,          4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T^ ,          4       i ; i  + '       g   i     M; iRRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zaReads and decodes the whole vorbis audio data. Resulting sample format is 16 bits signed integer.rî   r  úcannot load/decode datar  N)r   rñ   r   Ústb_vorbis_decode_memoryr»   rÅ   r  r  r  rµ   r#   r(   r  )rý   rö   r‰   r  Únum_samplesr  r·   s   &      r!   Úvorbis_readr  _  s2  € ä	�Š�×	Ô	˜X¤s§w¢w¨w×'7Ô'7¸;ÌÏÊØ÷Iô Ià	Ü×2Ò2Ø”#�d“)˜X°Fó
ˆð ˜!ÔÜÐ7Ó8Ð8ð	 Ü—Z’Z  q¥	¨;À!½Õ+DÀqÕ+HÓIˆFÜ'¨Ó*ˆGØ×Ñ˜fÔ%Ü#Ø˜H Q�K¨°Q­¼×9NÑ9NÐPWóô �HŠH�V˜A•YÔ÷!Iñ I×'7Ñ'7×	Ò	øô  �HŠH�V˜A•YÕú÷!I÷ Iú×'7×'7×'7Ð'7ú×	×	×	Ò	úsY   ŸF"¾F	Á5E)ÂA8EÄE)Ä(
F	Ä2
F"ÅE&Å&E)Å)E9Å4F	Å<	F"ÆFÆF"Æ"F3	c          	      ól   € V ^8„  d   QhR\         R\        R\        \        P                  RR3,          /# )r…   rÈ   Ú
seek_framerŽ   N©r�   r�   r   r¸   )r’   s   "r!   r”   r”   t  s4   € ÷ ,)ñ ,)Üð,)Ü"ð,)äŒu�{‰{˜D $Ð&Õ'ñ,)r    c              #  óž  "  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! W#\        P
                  4      pV'       g   \        R4      h \        P                  ! V4      p\        P                  ! RRVP                  ,          4      ;_uu_ 4       p\        P                  ! RRVP                  ,          4      ;_uu_ 4       p\        P                  ! RV4      p\        P                  ! RV4      p	V^ 8”  d)   \        P                  ! WA4      p
V
^ 8:  d   \        R4      h \        P                  ! WEP                  VRVP                  ,          4      p\        P                  ! WEP                  V	RVP                  ,          4      pW¼,           ^ 8:  d   M—\        P                  ! Wk^,          VP                  ,          4      p\        ^4      pVP                  V4       V^ 8”  d@   \        P                  ! W|^,          VP                  ,          4      pVP                  V4       Vx € EK  RRR4       RRR4       \        P                  ! V4        RRR4       R#   + '       g   i     L9; i  + '       g   i     LD; i  \        P                  ! T4       i ; i  + '       g   i     R# ; i5i)zóStreams the ogg vorbis audio file as interleaved 16 bit signed integer sample arrays segments.
This uses a variable unconfigurable chunk size and cannot be used as a generic miniaudio decoder input stream.
Consider using stream_file() instead.rî   rï   zshort[]é   zshort *ú
can't seekN)rð   r   rñ   r   rò   rh   rÅ   ró   rö   ÚcastÚstb_vorbis_seek_frameÚ&stb_vorbis_get_frame_short_interleavedr  r  r  r÷   )rÈ   r  rø   rù   rç   rú   Údecode_buffer1Údecode_buffer2Údecodebuf_ptr1Údecodebuf_ptr2ÚresultÚnum_samples1Únum_samples2r  r·   s   &&             r!   Úvorbis_stream_filer'  t  s	  é € ô (¨Ó1€MÜ	�Š�×	Ô	˜UÜ×-Ò-¨mÄCÇHÁHÓMˆßÜÐ:Ó;Ð;ð!	)Ü×*Ò*¨6Ó2ˆDÜ—’˜ D¨4¯=©=Õ$8×9Ô9¸^ÌSÏWÊWØ˜4 $§-¡-Õ/÷Nô NàÜ!$§¢¨)°^Ó!D�Ü!$§¢¨)°^Ó!D�Ø ”>Ü ×6Ò6°vÓJ�FØ ”{Ü)¨,Ó7Ð7àÜ#&×#MÒ#MØ§¡¨~¸tÀdÇmÁmÕ?Só$�Lô $'×#MÒ#MØ§¡¨~¸tÀdÇmÁmÕ?Só$�Lð $Õ2°aÔ7ØÜ ŸZšZØ&°qÕ(8¸4¿=¹=Õ(Hó�Fô 0°Ó2�GØ×%Ñ% fÔ-Ø# aÔ'Ü!$§¢Ø*¸1Õ,<¸t¿}¹}Õ,Ló"˜ð  ×)Ñ)¨&Ô1Ø!•M÷;N×9ô> × Ò  Õ(÷K 
Ñ	÷N÷ Nú×9×9ûô> × Ò  Õ(ú÷K 
×	Ð	üsf   ‚*K¬9J9Á&AJÂ,1J	ÃE*I8ÉJ	ÉJÉJ9É.
KÉ8JÊJ	ÊJÊJÊJ6Ê6J9Ê9K
	Ë	Kc                ó0   € V ^8„  d   QhR\         R\        /# rÇ   rÉ   )r’   s   "r!   r”   r”   £  s   € ÷ #ñ #¤ð #¬ñ #r    c           	     ód  € \         P                  R8X  d2   \        V 4      p\        P                  ! V\
        P                  4      pM0\        V 4      p\        P                  ! V\
        P                  4      pV'       g   \        R4      h VP                  VP                  ,          pVP                  ^,          p\        V \        P                  VP                   VP                  \#        V4      VVP                  4      \        P$                  ! V4       #   \        P$                  ! T4       i ; i)z:Fetch some information about the audio file (flac format).Úwin32rï   )ÚsysÚplatformÚ_get_filename_bytes_wr   Úma_dr_flac_open_file_wr   rh   rð   Úma_dr_flac_open_filerÅ   ÚtotalPCMFrameCountÚ
sampleRateÚbitsPerSamplerƒ   r   r   rö   Ú_format_from_widthÚma_dr_flac_close)rÈ   Úfilenamebyteswré   rø   r‹   rž   s   &     r!   rÖ   rÖ   £  sÙ   € ä
‡|�|�wÔÜ.¨xÓ8ˆÜ×)Ò)¨.¼#¿(¹(ÓC‰ä+¨HÓ5ˆÜ×'Ò'¨´s·x±xÓ@ˆßÜÐ6Ó7Ð7ð#Ø×*Ñ*¨T¯_©_Õ<ˆØ×)Ñ)¨QÕ.ˆÜØÜ�O‰OØ�M‰MØ�O‰OÜ˜|Ó,ØØ×#Ñ#ó
ô 	×Ò˜TÕ"øŒ×Ò˜TÕ"ús   ÂA5D ÄD/c                ó0   € V ^8„  d   QhR\         R\        /# rü   rþ   )r’   s   "r!   r”   r”   ½  s   € ÷ #ñ #œð #¤-ñ #r    c           	     óÖ  € \         P                  ! V \        V 4      \        P                  4      pV'       g   \        R4      h VP                  VP                  ,          pVP                  ^,          p\        R\        P                  VP                  VP                  \        V4      VVP                  4      \         P                  ! V4       #   \         P                  ! T4       i ; i)z:Fetch some information about the audio data (flac format).r  r  )r   Úma_dr_flac_open_memoryr»   r   rh   rÅ   r0  r1  r2  rƒ   r   r   rö   r3  r4  )rý   ré   r‹   rž   s   &   r!   Úflac_get_infor9  ½  s©   € ä×%Ò% d¬C°«I´s·x±xÓ@€DßÜÐ6Ó7Ð7ð#Ø×*Ñ*¨T¯_©_Õ<ˆØ×)Ñ)¨QÕ.ˆÜØÜ�O‰OØ�M‰MØ�O‰OÜ˜|Ó,ØØ×#Ñ#ó
ô 	×Ò˜TÕ"øŒ×Ò˜TÕ"ús   ÁA5C ÃC(c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”   Ò  ó   € ÷ 2ñ 2¤ð 2Ô)9ñ 2r    c                ó¬  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WW4\        P
                  4      pV'       g   \        R4      h \        ^4      p\        P                  ! WT^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        W^ ,          V^ ,          \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z_Reads and decodes the whole flac audio file. Resulting sample format is 32 bits signed integer.úunsigned int *úma_dr_flac_uint64 *r	  N)rð   r   rñ   r   Ú,ma_dr_flac_open_file_and_read_pcm_frames_s32rh   rÅ   r  r  r  rµ   r#   r,   Úma_dr_flac_free©rÈ   rø   rö   r‰   rŒ   Úmemoryr·   r  s   &       r!   râ   râ   Ò  óA  € ä'¨Ó1€MÜ	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ3×4Ô4¸
Ü×AÒAØ [¼c¿h¹hó
ˆ÷ ÜÐ7Ó8Ð8ð	2Ü'¨Ó*ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø 1�+ {°1¥~´|×7LÑ7LÈgóô ×Ò ¬¯©Ô1÷ 5Ñ4÷1ñ 1×	"Ò	"øô  ×Ò ¬¯©Õ1ú÷ 5×4úÐ4÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úóZ   ªGÁ	F%	Á(:FÂ#A7EÄ%FÄ?
F%	Å	
GÅ'FÆFÆFÆF%	Æ	GÆ%F5Æ0GÇG	c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”   è  r;  r    c                ó¬  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WW4\        P
                  4      pV'       g   \        R4      h \        ^4      p\        P                  ! WT^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        W^ ,          V^ ,          \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z_Reads and decodes the whole flac audio file. Resulting sample format is 16 bits signed integer.r=  r>  r	  N)rð   r   rñ   r   Ú,ma_dr_flac_open_file_and_read_pcm_frames_s16rh   rÅ   r  r  r  rµ   r#   r(   r@  rA  s   &       r!   rá   rá   è  rC  rD  c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”   þ  r;  r    c                óÂ  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WW4\        P
                  4      pV'       g   \        R4      h \        P                  ! R4      p\        P                  ! WT^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        W^ ,          V^ ,          \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)úVReads and decodes the whole flac audio file. Resulting sample format is 32 bits float.r=  r>  r	  ÚfN)rð   r   rñ   r   Ú,ma_dr_flac_open_file_and_read_pcm_frames_f32rh   rÅ   r¸   r  r  rµ   r#   r.   r@  rA  s   &       r!   rã   rã   þ  sE  € ä'¨Ó1€MÜ	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ3×4Ô4¸
Ü×AÒAØ [¼c¿h¹hó
ˆ÷ ÜÐ7Ó8Ð8ð	2Ü—k’k #Ó&ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø 1�+ {°1¥~´|×7KÑ7KÈWóô ×Ò ¬¯©Ô1÷ 5Ñ4÷1ñ 1×	"Ò	"øô  ×Ò ¬¯©Õ1ú÷ 5×4úÐ4÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úóZ   ªGÁ	F0	Á(:FÂ#BE)Ä%%FÅ

F0	Å
GÅ)'FÆFÆF#ÆF0	Æ'	GÆ0G Æ;GÇG	c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”     ó   € ÷ 2ñ 2œð 2Ô"2ñ 2r    c                ó®  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      WV\         P
                  4      pV'       g   \        R4      h \        ^4      p\         P                  ! WC^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        RV^ ,          V^ ,          \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z_Reads and decodes the whole flac audio data. Resulting sample format is 32 bits signed integer.r=  r>  r  r  N)r   rñ   r   Ú.ma_dr_flac_open_memory_and_read_pcm_frames_s32r»   rh   rÅ   r  r  r  rµ   r#   r,   r@  ©rý   rö   r‰   rŒ   rB  r·   r  s   &      r!   Úflac_read_s32rS    óB  € ä	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ3×4Ô4¸
Ü×CÒCØ”#�d“)˜X°JÄÇÁó
ˆ÷ ÜÐ7Ó8Ð8ð	2Ü'¨Ó*ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø˜H Q�K¨°Q­¼×9NÑ9NÐPWóô ×Ò ¬¯©Ô1÷ 5Ñ4÷1ñ 1×	"Ò	"øô  ×Ò ¬¯©Õ1ú÷ 5×4úÐ4÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úóZ   ŸG¾F&	ÁAF	Â#A8EÄ%F	Å 
F&	Å

GÅ'FÆF	Æ	FÆF&	Æ	GÆ&F6Æ1GÇG	c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”   )  rO  r    c                ó®  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      WV\         P
                  4      pV'       g   \        R4      h \        ^4      p\         P                  ! WC^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        RV^ ,          V^ ,          \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z_Reads and decodes the whole flac audio data. Resulting sample format is 16 bits signed integer.r=  r>  r  r  N)r   rñ   r   Ú.ma_dr_flac_open_memory_and_read_pcm_frames_s16r»   rh   rÅ   r  r  r  rµ   r#   r(   r@  rR  s   &      r!   Úflac_read_s16rY  )  rT  rU  c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”   >  rO  r    c                óÄ  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      WV\         P
                  4      pV'       g   \        R4      h \        P                  ! R4      p\         P                  ! WC^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        RV^ ,          V^ ,          \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)rJ  r=  r>  r  rK  r  N)r   rñ   r   Ú.ma_dr_flac_open_memory_and_read_pcm_frames_f32r»   rh   rÅ   r¸   r  r  rµ   r#   r.   r@  rR  s   &      r!   Úflac_read_f32r]  >  sE  € ä	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ3×4Ô4¸
Ü×CÒCØ”#�d“)˜X°JÄÇÁó
ˆ÷ ÜÐ7Ó8Ð8ð	2Ü—k’k #Ó&ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø˜H Q�K¨°Q­¼×9MÑ9MÈwóô ×Ò ¬¯©Ô1÷ 5Ñ4÷1ñ 1×	"Ò	"øô  ×Ò ¬¯©Õ1ú÷ 5×4úÐ4÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úóZ   ŸG¾F1	ÁAFÂ#BE*Ä&%FÅ
F1	Å
GÅ*'FÆFÆF$ÆF1	Æ(	GÆ1GÆ<GÇG	é   c                óx   € V ^8„  d   QhR\         R\        R\        R\        \        P                  RR3,          /# ©r…   rÈ   Úframes_to_readr  rŽ   Nr  )r’   s   "r!   r”   r”   S  s<   € ÷ "#ñ "#Üð"#Ü#&ð"#Ü;>ð"#äŒu�{‰{˜D $Ð&Õ'ñ"#r    c              #  ó†  "  € \         P                  R8X  d2   \        V 4      p\        P                  ! V\
        P                  4      pM0\        V 4      p\        P                  ! V\
        P                  4      pV'       g   \        R4      hV^ 8”  d)   \        P                  ! WB4      pV^ 8:  d   \        R4      h \
        P                  ! RWP                  ,          4      ;_uu_ 4       p\
        P                  ! RV4      p \        P                  ! WAV4      p	V	^ 8:  d   MP\
        P                  ! Wy^,          VP                  ,          4      p
\!        ^4      pVP#                  V
4       Vx € Kp  RRR4       \        P$                  ! V4       R#   + '       g   i     L(; i  \        P$                  ! T4       i ; i5i)zÛStreams the flac audio file as interleaved 16 bit signed integer sample arrays segments.
This uses a fixed chunk size and cannot be used as a generic miniaudio decoder input stream.
Consider using stream_file() instead.r*  rï   r  zma_dr_flac_int16[]zma_dr_flac_int16 *N)r+  r,  r-  r   r.  r   rh   rð   r/  rÅ   Úma_dr_flac_seek_to_pcm_framerñ   rö   r  Úma_dr_flac_read_pcm_frames_s16r  r  r  r4  )rÈ   rb  r  r5  ré   rø   r$  ÚdecodebufferÚbuf_ptrr  r  r·   s   &&&         r!   Úflac_stream_filerh  S  sN  é € ô ‡|�|�wÔÜ.¨xÓ8ˆÜ×)Ò)¨.¼#¿(¹(ÓC‰ä+¨HÓ5ˆÜ×'Ò'¨´s·x±xÓ@ˆßÜÐ6Ó7Ð7Ø�A„~Ü×1Ò1°$ÓCˆØ�QŒ;Ü˜lÓ+Ð+ð#Ü�WŠWØ  .·=±=Õ"@÷
ô 
àÜ—h’hÐ3°\ÓBˆGØÜ!×@Ò@Ø¨'ó�ð  !Ô#ØÜŸš LÀµ/ÀDÇMÁMÕ2QÓR�Ü+¨AÓ.�Ø×!Ñ! &Ô)Ø”÷
ô 	×Ò˜TÖ"÷
÷ 
ûô 	×Ò˜TÕ"üs=   ‚A>GÂ:GÂ</F& Ã+BFÅ3F& Å;GÆF#	ÆF& Æ&F>Æ>Gc                ó0   € V ^8„  d   QhR\         R\        /# rÇ   rÉ   )r’   s   "r!   r”   r”   x  s   € ÷ &ñ &¤ð &¬ñ &r    c                óÄ  € \         P                  ! R4      ;_uu_ 4       p\        P                  R8X  d2   \	        V 4      p\
        P                  ! W\         P                  4      pM0\        V 4      p\
        P                  ! W\         P                  4      pV'       g   \        R4      h \
        P                  ! V4      pWQP                  ,          p\        V \        P                  VP                   VP                  \"        P$                  VV4      \
        P&                  ! V4       uuRRR4       #   \
        P&                  ! T4       i ; i  + '       g   i     R# ; i)z9Fetch some information about the audio file (mp3 format).úma_dr_mp3 *r*  rï   N)r   rñ   r+  r,  r-  r   Úma_dr_mp3_init_file_wrh   rð   Úma_dr_mp3_init_filerÅ   Úma_dr_mp3_get_pcm_frame_countr1  rƒ   r   r   rö   r#   r(   Úma_dr_mp3_uninit)rÈ   rè   r5  r$  rø   rŒ   r‹   s   &      r!   rÕ   rÕ   x  sô   € ä	�Š�×	Ô	 3Ü�<‰<˜7Ô"Ü2°8Ó<ˆNÜ×.Ò.¨sÄCÇHÁHÓM‰Fä/°Ó9ˆMÜ×,Ò,¨SÄÇÁÓJˆFßÜÐ:Ó;Ð;ð	&Ü×:Ò:¸3Ó?ˆJØ!§N¡NÕ2ˆHÜ ØÜ—‘Ø—‘Ø—‘Ü×%Ñ%ØØóô × Ò  Ô%÷- 
 Ò	øô, × Ò  Õ%ú÷- 
 ×	Ð	ús+   ŸA>EÂEÂ*A(D3ÄEÄ3EÅEÅE	c                ó0   € V ^8„  d   QhR\         R\        /# rü   rþ   )r’   s   "r!   r”   r”   “  s   € ÷ &ñ &”uð &¤ñ &r    c                ó2  € \         P                  ! R4      ;_uu_ 4       p\        P                  ! W\	        V 4      \         P
                  4      '       g   \        R4      h \        P                  ! V4      pW!P                  ,          p\        R\        P                  VP                  VP                  \        P                  VV4      \        P                  ! V4       uuRRR4       #   \        P                  ! T4       i ; i  + '       g   i     R# ; i)z9Fetch some information about the audio data (mp3 format).rk  r  r  N)r   rñ   r   Úma_dr_mp3_init_memoryr»   rh   rÅ   rn  r1  rƒ   r   r   rö   r#   r(   ro  )rý   rè   rŒ   r‹   s   &   r!   Úmp3_get_infors  “  sÂ   € ä	�Š�×	Ô	 3Ü×(Ò(¨´C¸³I¼s¿x¹x×HÒHÜÐ:Ó;Ð;ð	&Ü×:Ò:¸3Ó?ˆJØ!§N¡NÕ2ˆHÜ ØÜ—‘Ø—‘Ø—‘Ü×%Ñ%ØØóô × Ò  Ô%÷! 
 Ò	øô  × Ò  Õ%ú÷! 
 ×	Ð	ús%   ŸADÁ!A(C*Ã	DÃ*DÄDÄD	c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”   ¨  ó   € ÷ 1ñ 1¤ð 1Ô(8ñ 1r    c                óJ  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WV\        P
                  4      pV'       g   \        R4      h \        P                  ! R4      p\        P                  ! WC^ ,          VP                  ,          ^,          4      pVP                  V4       \        V VP                  VP                  \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zUReads and decodes the whole mp3 audio file. Resulting sample format is 32 bits float.úma_dr_mp3_config *úma_dr_mp3_uint64 *r	  rK  N)rð   r   rñ   r   Ú+ma_dr_mp3_open_file_and_read_pcm_frames_f32rh   rÅ   r¸   r  rö   r  rµ   r1  r#   r.   Úma_dr_mp3_free©rÈ   rø   ÚconfigrŒ   rB  r·   r  s   &      r!   rà   rà   ¨  s  € ä'¨Ó1€MÜ	�ŠÐ%×	&Ô	&¨&´#·'²'Ø÷3ô 3à	Ü×@Ò@Ø :¬s¯x©xó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü—k’k #Ó&ˆGÜ—Z’Z °1­¸¿¹Õ(GÈ!Õ(KÓLˆFØ×Ñ˜fÔ%Ü#ØØ—‘Ø×!Ñ!Ü×$Ñ$Øóô ×Ò˜v¤s§x¡xÔ0÷)3ñ 3×	&Ò	&øô( ×Ò˜v¤s§x¡xÕ0ú÷)3÷ 3ú×	&×	&×	&Ò	&ús<   ªFÁ	:E4	ÂBE
Ä%E4	Ä5
FÅ
'E1Å1E4	Å4FÅ?FÆF"	c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”   Â  ru  r    c                ó4  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WV\        P
                  4      pV'       g   \        R4      h \        ^4      p\        P                  ! WC^ ,          VP                  ,          ^,          4      pVP                  V4       \        V VP                  VP                  \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z^Reads and decodes the whole mp3 audio file. Resulting sample format is 16 bits signed integer.rw  rx  r	  N)rð   r   rñ   r   Ú+ma_dr_mp3_open_file_and_read_pcm_frames_s16rh   rÅ   r  r  rö   r  rµ   r1  r#   r(   rz  r{  s   &      r!   rß   rß   Â  s  € ä'¨Ó1€MÜ	�ŠÐ%×	&Ô	&¨&´#·'²'Ø÷3ô 3à	Ü×@Ò@Ø :¬s¯x©xó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü'¨Ó*ˆGÜ—Z’Z °1­¸¿¹Õ(GÈ!Õ(KÓLˆFØ×Ñ˜fÔ%Ü#ØØ—‘Ø×!Ñ!Ü×%Ñ%Øóô ×Ò˜v¤s§x¡xÔ0÷)3ñ 3×	&Ò	&øô( ×Ò˜v¤s§x¡xÕ0ú÷)3÷ 3ú×	&×	&×	&Ò	&ús<   ªFÁ	:E)	ÂBD?Ä%E)	Ä*
FÄ?'E&Å&E)	Å)E9Å4FÆF	c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”   Ü  ó   € ÷ 1ñ 1”uð 1Ô!1ñ 1r    c                óH  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      W\         P
                  4      pV'       g   \        R4      h \        P                  ! R4      p\         P                  ! W2^ ,          VP                  ,          ^,          4      pVP                  V4       \        RVP                  VP                  \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zUReads and decodes the whole mp3 audio data. Resulting sample format is 32 bits float.rw  rx  r  rK  r  N)r   rñ   r   Ú-ma_dr_mp3_open_memory_and_read_pcm_frames_f32r»   rh   rÅ   r¸   r  rö   r  rµ   r1  r#   r.   rz  ©rý   r|  rŒ   rB  r·   r  s   &     r!   Úmp3_read_f32r…  Ü  s  € ä	�ŠÐ%×	&Ô	&¨&´#·'²'Ø÷3ô 3à	Ü×BÒBØ”#�d“)˜V´·±ó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü—k’k #Ó&ˆGÜ—Z’Z °1­¸¿¹Õ(GÈ!Õ(KÓLˆFØ×Ñ˜fÔ%Ü#ØØ—‘Ø×!Ñ!Ü×$Ñ$Øóô ×Ò˜v¤s§x¡xÔ0÷)3ñ 3×	&Ò	&øô( ×Ò˜v¤s§x¡xÕ0ú÷)3÷ 3ú×	&×	&×	&Ò	&ús<   ŸF¾AE3	ÂBE	Ä%E3	Ä4
FÅ	'E0Å0E3	Å3FÅ>FÆF!	c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”   õ  r�  r    c                ó2  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      W\         P
                  4      pV'       g   \        R4      h \        ^4      p\         P                  ! W2^ ,          VP                  ,          ^,          4      pVP                  V4       \        RVP                  VP                  \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z^Reads and decodes the whole mp3 audio data. Resulting sample format is 16 bits signed integer.rw  rx  r  r  N)r   rñ   r   Ú-ma_dr_mp3_open_memory_and_read_pcm_frames_s16r»   rh   rÅ   r  r  rö   r  rµ   r1  r#   r(   rz  r„  s   &     r!   Úmp3_read_s16r‰  õ  s  € ä	�ŠÐ%×	&Ô	&¨&´#·'²'Ø÷3ô 3à	Ü×BÒBØ”#�d“)˜V´·±ó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü'¨Ó*ˆGÜ—Z’Z °1­¸¿¹Õ(GÈ!Õ(KÓLˆFØ×Ñ˜fÔ%Ü#ØØ—‘Ø×!Ñ!Ü×%Ñ%Øóô ×Ò˜v¤s§x¡xÔ0÷)3ñ 3×	&Ò	&øô( ×Ò˜v¤s§x¡xÕ0ú÷)3÷ 3ú×	&×	&×	&Ò	&ús<   ŸF¾AE(	ÂBD>Ä%E(	Ä)
FÄ>'E%Å%E(	Å(E8Å3FÆF	c                óx   € V ^8„  d   QhR\         R\        R\        R\        \        P                  RR3,          /# ra  r  )r’   s   "r!   r”   r”     s<   € ÷ #&ñ #&Üð#&Ü#&ð#&Ü;>ð#&äŒu�{‰{˜D $Ð&Õ'ñ#&r    c           	   #  óþ  "  € \         P                  ! R4      ;_uu_ 4       p\        P                  R8X  d2   \	        V 4      p\
        P                  ! W4\         P                  4      pM0\        V 4      p\
        P                  ! W6\         P                  4      pV'       g   \        R4      hV^ 8”  d)   \
        P                  ! W24      pV^ 8:  d   \        R4      h \         P                  ! RWP                  ,          4      ;_uu_ 4       p\         P                  ! RV4      p \
        P                  ! W1V4      p	V	^ 8:  d   MP\         P                  ! Wy^,          VP                  ,          4      p
\!        ^4      pVP#                  V
4       Vx € Kp  RRR4       \
        P$                  ! V4        RRR4       R#   + '       g   i     L1; i  \
        P$                  ! T4       i ; i  + '       g   i     R# ; i5i)zÚStreams the mp3 audio file as interleaved 16 bit signed integer sample arrays segments.
This uses a fixed chunk size and cannot be used as a generic miniaudio decoder input stream.
Consider using stream_file() instead.rk  r*  rï   r  zma_dr_mp3_int16[]zma_dr_mp3_int16 *N)r   rñ   r+  r,  r-  r   rl  rh   rð   rm  rÅ   Úma_dr_mp3_seek_to_pcm_framerö   r  Úma_dr_mp3_read_pcm_frames_s16r  r  r  ro  )rÈ   rb  r  rè   r5  r$  rø   rf  rg  r  r  r·   s   &&&         r!   Úmp3_stream_filerŽ    ss  é € ô 
�Š�×	Ô	 3Ü�<‰<˜7Ô"Ü2°8Ó<ˆNÜ×.Ò.¨sÄCÇHÁHÓM‰Fä/°Ó9ˆMÜ×,Ò,¨SÄÇÁÓJˆFßÜÐ:Ó;Ð;Ø˜Œ>Ü×4Ò4°SÓEˆFØ˜Œ{Ü! ,Ó/Ð/ð	&Ü—’Ø# ^·l±lÕ%B÷ô àÜŸ(š(Ð#6¸ÓE�ØÜ"%×"CÒ"CØ¨Wó#�Kð # aÔ'ØÜ ŸZšZ¨ÀAµoÈÏÉÕ6TÓU�FÜ/°Ó2�GØ×%Ñ% fÔ-Ø!”M÷ô × Ò  Õ%÷; 
 Ñ	÷÷ ûô × Ò  Õ%ú÷; 
 ×	Ð	üóT   ‚G=¡A>G)Â :G)Ã/GÄ
BF;	ÆGÆG)Æ1
G=Æ;GÇGÇG&Ç&G)Ç)G:	Ç4	G=c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   rÉ   )r’   s   "r!   r”   r”   4  s   € ÷ &ñ &¤ð &¬ñ &r    c                ó4  € \         P                  ! R4      ;_uu_ 4       p\        P                  R8X  d2   \	        V 4      p\
        P                  ! W\         P                  4      pM0\        V 4      p\
        P                  ! W\         P                  4      pV'       g   \        R4      h VP                  VP                  ,          pVP                  ^,          pVP                  \
        P                  8H  pVP                  p\!        V \"        P$                  VP&                  VP                  \)        Wg4      VVP                  VR7      \
        P*                  ! V4       uuRRR4       #   \
        P*                  ! T4       i ; i  + '       g   i     R# ; i)z9Fetch some information about the audio file (wav format).ú
ma_dr_wav*r*  rï   )r�   N)r   rñ   r+  r,  r-  r   Úma_dr_wav_init_file_wrh   rð   Úma_dr_wav_init_filerÅ   r0  r1  r2  ÚtranslatedFormatTagÚMA_DR_WAVE_FORMAT_IEEE_FLOATrƒ   r   r   rö   r3  Úma_dr_wav_uninit)	rÈ   rê   r5  r$  rø   r‹   rž   Úis_floatÚ	subformats	   &        r!   r×   r×   4  s%  € ä	�Š�×	Ô	 #Ü�<‰<˜7Ô"ä2°8Ó<ˆNÜ×.Ò.¨sÄCÇHÁHÓM‰Fä/°Ó9ˆMÜ×,Ò,¨SÄÇÁÓJˆFßÜÐ:Ó;Ð;ð	&Ø×-Ñ-°·±Õ>ˆHØ×,Ñ,°Õ1ˆLØ×.Ñ.´#×2RÑ2RÑRˆHØ×/Ñ/ˆIÜ ØÜ—‘Ø—‘Ø—‘Ü" <Ó:ØØ×&Ñ&Ø$ô	ô × Ò  Ô%÷5 
Ò	øô4 × Ò  Õ%ú÷5 
×	Ð	ús+   ŸA>FÂFÂ*B E+Å
FÅ+FÆFÆF	c                ó0   € V ^8„  d   QhR\         R\        /# rü   rþ   )r’   s   "r!   r”   r”   S  s   € ÷ &ñ &”uð &¤ñ &r    c                ó†  € \         P                  ! R4      ;_uu_ 4       p\        P                  ! W\	        V 4      \         P
                  4      '       g   \        R4      h VP                  VP                  ,          pVP                  ^,          pVP                  \        P                  8H  p\        R\        P                  VP                  VP                  \!        W44      VVP                  4      \        P"                  ! V4       uuRRR4       #   \        P"                  ! T4       i ; i  + '       g   i     R# ; i)z9Fetch some information about the audio data (wav format).r’  r  r  N)r   rñ   r   Úma_dr_wav_init_memoryr»   rh   rÅ   r0  r1  r2  r•  r–  rƒ   r   r   rö   r3  r—  )rý   rê   r‹   rž   r˜  s   &    r!   Úwav_get_infor�  S  så   € ä	�Š�×	Ô	 #Ü×(Ò(¨´C¸³I¼s¿x¹x×HÒHÜÐ:Ó;Ð;ð	&Ø×-Ñ-°·±Õ>ˆHØ×,Ñ,°Õ1ˆLØ×.Ñ.´#×2RÑ2RÑRˆHÜ ØÜ—‘Ø—‘Ø—‘Ü" <Ó:ØØ×&Ñ&óô × Ò  Ô%÷# 
Ò	øô" × Ò  Õ%ú÷# 
×	Ð	ús%   ŸAD/Á!BDÃ3D/ÄD,Ä,D/Ä/E 	c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”   i  ó   € ÷ 1ñ 1¤ð 1Ô(8ñ 1r    c                ó¬  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WW4\        P
                  4      pV'       g   \        R4      h \        ^4      p\        P                  ! WT^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        W^ ,          V^ ,          \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z^Reads and decodes the whole wav audio file. Resulting sample format is 32 bits signed integer.r=  úma_dr_wav_uint64 *r	  N)rð   r   rñ   r   Ú+ma_dr_wav_open_file_and_read_pcm_frames_s32rh   rÅ   r  r  r  rµ   r#   r,   Úma_dr_wav_freerA  s   &       r!   rå   rå   i  óA  € ä'¨Ó1€MÜ	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ2×3Ô3°zÜ×@Ò@Ø [¼c¿h¹hó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü'¨Ó*ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø 1�+ {°1¥~´|×7LÑ7LÈgóô ×Ò˜v¤s§x¡xÔ0÷ 4Ñ3÷1ñ 1×	"Ò	"øô  ×Ò˜v¤s§x¡xÕ0ú÷ 4×3úÐ3÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úrD  c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”     rŸ  r    c                ó¬  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WW4\        P
                  4      pV'       g   \        R4      h \        ^4      p\        P                  ! WT^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        W^ ,          V^ ,          \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z^Reads and decodes the whole wav audio file. Resulting sample format is 16 bits signed integer.r=  r¡  r	  N)rð   r   rñ   r   Ú+ma_dr_wav_open_file_and_read_pcm_frames_s16rh   rÅ   r  r  r  rµ   r#   r(   r£  rA  s   &       r!   rä   rä     r¤  rD  c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   r  )r’   s   "r!   r”   r”   •  rŸ  r    c                óÂ  € \        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P                  ! WW4\        P
                  4      pV'       g   \        R4      h \        P                  ! R4      p\        P                  ! WT^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        W^ ,          V^ ,          \        P                  V4      \        P                  ! V\        P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\        P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zUReads and decodes the whole wav audio file. Resulting sample format is 32 bits float.r=  r¡  r	  rK  N)rð   r   rñ   r   Ú+ma_dr_wav_open_file_and_read_pcm_frames_f32rh   rÅ   r¸   r  r  rµ   r#   r.   r£  rA  s   &       r!   ræ   ræ   •  sE  € ä'¨Ó1€MÜ	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ2×3Ô3°zÜ×@Ò@Ø [¼c¿h¹hó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü—k’k #Ó&ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø 1�+ {°1¥~´|×7KÑ7KÈWóô ×Ò˜v¤s§x¡xÔ0÷ 4Ñ3÷1ñ 1×	"Ò	"øô  ×Ò˜v¤s§x¡xÕ0ú÷ 4×3úÐ3÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úrM  c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”   «  ó   € ÷ 1ñ 1”uð 1Ô!1ñ 1r    c                ó®  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      WV\         P
                  4      pV'       g   \        R4      h \        ^4      p\         P                  ! WC^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        RV^ ,          V^ ,          \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z^Reads and decodes the whole wav audio data. Resulting sample format is 32 bits signed integer.r=  r¡  r  r  N)r   rñ   r   Ú-ma_dr_wav_open_memory_and_read_pcm_frames_s32r»   rh   rÅ   r  r  r  rµ   r#   r,   r£  rR  s   &      r!   Úwav_read_s32r¯  «  óB  € ä	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ2×3Ô3°zÜ×BÒBØ”#�d“)˜X°JÄÇÁó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü'¨Ó*ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø˜H Q�K¨°Q­¼×9NÑ9NÐPWóô ×Ò˜v¤s§x¡xÔ0÷ 4Ñ3÷1ñ 1×	"Ò	"øô  ×Ò˜v¤s§x¡xÕ0ú÷ 4×3úÐ3÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úrU  c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”   À  r¬  r    c                ó®  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      WV\         P
                  4      pV'       g   \        R4      h \        ^4      p\         P                  ! WC^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        RV^ ,          V^ ,          \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z^Reads and decodes the whole wav audio data. Resulting sample format is 16 bits signed integer.r=  r¡  r  r  N)r   rñ   r   Ú-ma_dr_wav_open_memory_and_read_pcm_frames_s16r»   rh   rÅ   r  r  r  rµ   r#   r(   r£  rR  s   &      r!   Úwav_read_s16r´  À  r°  rU  c                ó0   € V ^8„  d   QhR\         R\        /# rü   r  )r’   s   "r!   r”   r”   Õ  r¬  r    c                óÄ  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V \	        V 4      WV\         P
                  4      pV'       g   \        R4      h \        P                  ! R4      p\         P                  ! WC^ ,          V^ ,          ,          ^,          4      pVP                  V4       \        RV^ ,          V^ ,          \        P                  V4      \        P                  ! V\         P
                  4       uuRRR4       uuRRR4       uuRRR4       #   \        P                  ! T\         P
                  4       i ; i  + '       g   i     M; i RRR4       M  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zUReads and decodes the whole wav audio data. Resulting sample format is 32 bits float.r=  r¡  r  rK  r  N)r   rñ   r   Ú-ma_dr_wav_open_memory_and_read_pcm_frames_f32r»   rh   rÅ   r¸   r  r  rµ   r#   r.   r£  rR  s   &      r!   Úwav_read_f32r¸  Õ  sE  € ä	�ŠÐ!×	"Ô	" h´·²Ø÷1ô 1à	”c—g’gÐ2×3Ô3°zÜ×BÒBØ”#�d“)˜X°JÄÇÁó
ˆ÷ ÜÐ7Ó8Ð8ð	1Ü—k’k #Ó&ˆGÜ—Z’Z °1­¸À½Õ(CÀaÕ(GÓHˆFØ×Ñ˜fÔ%Ü#Ø˜H Q�K¨°Q­¼×9MÑ9MÈwóô ×Ò˜v¤s§x¡xÔ0÷ 4Ñ3÷1ñ 1×	"Ò	"øô  ×Ò˜v¤s§x¡xÕ0ú÷ 4×3úÐ3÷1÷ 1÷ 1ð 1ú×	"×	"×	"Ò	"úr^  c                óx   € V ^8„  d   QhR\         R\        R\        R\        \        P                  RR3,          /# ra  r  )r’   s   "r!   r”   r”   ê  s<   € ÷ $&ñ $&Üð$&Ü#&ð$&Ü;>ð$&äŒu�{‰{˜D $Ð&Õ'ñ$&r    c           	   #  óþ  "  € \         P                  ! R4      ;_uu_ 4       p\        P                  R8X  d2   \	        V 4      p\
        P                  ! W4\         P                  4      pM0\        V 4      p\
        P                  ! W6\         P                  4      pV'       g   \        R4      hV^ 8”  d)   \
        P                  ! W24      pV^ 8:  d   \        R4      h \         P                  ! RWP                  ,          4      ;_uu_ 4       p\         P                  ! RV4      p \
        P                  ! W1V4      p	V	^ 8:  d   MP\         P                  ! Wy^,          VP                  ,          4      p
\!        ^4      pVP#                  V
4       Vx € Kp  RRR4       \
        P$                  ! V4        RRR4       R#   + '       g   i     L1; i  \
        P$                  ! T4       i ; i  + '       g   i     R# ; i5i)zÚStreams the WAV audio file as interleaved 16 bit signed integer sample arrays segments.
This uses a fixed chunk size and cannot be used as a generic miniaudio decoder input stream.
Consider using stream_file() instead.r’  r*  rï   r  zma_dr_wav_int16[]zma_dr_wav_int16 *N)r   rñ   r+  r,  r-  r   r“  rh   rð   r”  rÅ   Úma_dr_wav_seek_to_pcm_framerö   r  Úma_dr_wav_read_pcm_frames_s16r  r  r  r—  )rÈ   rb  r  rê   r5  r$  rø   rf  rg  r  r  r·   s   &&&         r!   Úwav_stream_filer½  ê  ss  é € ô 
�Š�×	Ô	 #Ü�<‰<˜7Ô"ä2°8Ó<ˆNÜ×.Ò.¨sÄCÇHÁHÓM‰Fä/°Ó9ˆMÜ×,Ò,¨SÄÇÁÓJˆFßÜÐ:Ó;Ð;Ø˜Œ>Ü×4Ò4°SÓEˆFØ˜Œ{Ü! ,Ó/Ð/ð	&Ü—’Ø# ^·l±lÕ%B÷ô àÜŸ(š(Ð#6¸ÓE�ØÜ"%×"CÒ"CØ¨Wó#�Kð # aÔ'ØÜ ŸZšZ¨ÀAµoÈÏÉÕ6TÓU�FÜ/°Ó2�GØ×%Ñ% fÔ-Ø!”M÷ô × Ò  Õ%÷= 
Ñ	÷÷ ûô × Ò  Õ%ú÷= 
×	Ð	ür�  c                ó4   € V ^8„  d   QhR\         R\        RR/# )r…   rÈ   ÚsoundrŽ   Nr  )r’   s   "r!   r”   r”     s"   € ÷ 'ñ 'œSð 'Ô)9ð '¸dñ 'r    c                ó¤  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  Vn        VP
                  ;'       g    \        P                  Vn        VP                  Vn	        VP                  Vn        VP                  ^,          Vn        V P                  \        P                   ! 4       4      p\        P"                  ! W4W!P$                  VP                  ,          \         P&                  4      '       g   \)        R4      h \        P*                  ! W1P$                  VP,                  P/                  4       4       \        P0                  ! V4        RRR4       RRR4       R#   \        P0                  ! T4       i ; i  + '       g   i     L5; i  + '       g   i     R# ; i)z"Writes the pcm sound to a WAV fileúma_dr_wav_data_format*r’  zcan't open file for writingN)r   rñ   r   Úma_dr_wav_container_riffÚ	containerr�   ÚMA_DR_WAVE_FORMAT_PCMr’   rˆ   rö   r‰   r1  rž   r2  Úencoder+  ÚgetfilesystemencodingÚ$ma_dr_wav_init_file_write_sequentialrŒ   rh   ÚIOErrorÚma_dr_wav_write_pcm_framesr·   Útobytesr—  )rÈ   r¿  ÚfmtÚpwavÚfilename_bytess   &&   r!   Úwav_write_filerÎ    s6  € ä	�ŠÐ)×	*Ô	*¨c´3·7²7¸<×3HÔ3HÈDÜ×4Ñ4ˆŒØ×%Ñ%×BÐB¬×)BÑ)BˆŒ
Ø—‘ˆŒØ×*Ñ*ˆŒØ!×.Ñ.°Õ2ˆÔà!Ÿ™¬×)BÒ)BÓ)DÓEˆÜ×7Ò7Ø #×'7Ñ'7¸%¿/¹/Õ'IÌ3Ï8É8÷
ò 
ô Ð7Ó8Ð8ð	'Ü×*Ò*Ø×&Ñ&¨¯©×(=Ñ(=Ó(?ôô × Ò  Õ&÷# 4I×	*Ñ	*øô" × Ò  Õ&ú÷# 4I×3Hú×	*×	*Ð	*ús;   ŸF>¾C/F+	Ä.9FÅ'F+	Å>F>ÆF(Æ(F+	Æ+F;Æ6F>Æ>G	c                óD   € V ^8„  d   QhR\         R\        P                  /# )r…   ÚitemsizerŽ   )r�   r¸   )r’   s   "r!   r”   r”   '  s   € ÷ ,ñ ,¤ð ,¬¯©ñ ,r    c                 ó€   € R  F.  p\         P                   ! V4      pVP                  V 8X  g   K,  Vu # 	  \        R4      h)ÚBhilqzcannot create array)r¸   rÐ  Ú
ValueError)rÐ  ÚtypecodeÚas   &  r!   r  r  '  s9   € ÛˆÜ�KŠK˜Ó!ˆØ�:‰:˜Ö!ØŠHñ ô Ð*Ó
+Ð+r    c                ó0   € V ^8„  d   QhR\         R\        /# rÇ   )r�   rÿ   )r’   s   "r!   r”   r”   /  s   € ÷ 9ñ 9¤#ð 9¬%ñ 9r    c                 óè   € \         P                  P                  V 4      p\         P                  P                  V4      '       g   \	        V 4      hVP                  \        P                  ! 4       4      # r—   )rÐ   rÑ   Ú
expanduserÚisfileÚFileNotFoundErrorrÅ  r+  rÆ  ©rÈ   Ú	filename2s   & r!   rð   rð   /  sN   € Ü—‘×"Ñ" 8Ó,€IÜ�7‰7�>‰>˜)×$Ò$Ü Ó)Ð)Ø×ÑœC×5Ò5Ó7Ó8Ð8r    c                ó$   € V ^8„  d   QhR\         /# )r…   rÈ   r¤   )r’   s   "r!   r”   r”   6  s   € ÷ +ñ +¤Cñ +r    c                 óÎ   € \         P                  P                  V 4      p\         P                  P                  V4      '       g   \	        V 4      h\
        P                  ! R V4      # )z	wchar_t[])rÐ   rÑ   rØ  rÙ  rÚ  r   rñ   rÛ  s   & r!   r-  r-  6  sE   € Ü—‘×"Ñ" 8Ó,€IÜ�7‰7�>‰>˜)×$Ò$Ü Ó)Ð)Ü�7Š7�; 	Ó*Ð*r    c                   óv   a € ] tR tRt o RtRV 3R lR lltV 3R lR ltV 3R lR	 ltV 3R
 lR ltR t	Rt
V tR# )ÚDevicesi=  zCQuery the audio playback and record devices that miniaudio providesNc                óD   <€ V ^8„  d   QhRS[ S[S[,          ,          RR/# )r…   ÚbackendsrŽ   N)r   r   rJ   )r’   r“   s   "€r!   r”   ÚDevices.__annotate__@  s$   ø€ ÷ ñ ¡©$©w­-Õ!8ð ÀDñ r    c                óº  € \         P                  V n        \         P                  ! R 4      pV'       dt   \         P                  ! R\	        V4      4      p\        V4       F  w  rEVP                  W4&   K  	  \        P                  ! V\	        V4      \         P                  V4      pM5\        P                  ! \         P                  ^ \         P                  V4      pV\        P                  8w  d   \        RV4      hW n        \         P                  ! \        P                  ! V P                  ^ ,          P                  4      4      P                  4       V n        R# )úma_context*úma_backend[]úcannot init contextN)r   rh   Ú_contextrñ   r»   Ú	enumeraterš   r   Úma_context_initÚ
MA_SUCCESSrÂ   r˜   Úma_get_backend_nameÚbackendr›   )rŸ   râ  ÚcontextÚbackends_memÚiÚbr$  s   &&     r!   r    ÚDevices.__init__@  sá   € ÜŸ™ˆŒÜ—'’'˜-Ó(ˆßÜŸ7š7 >´3°x³=ÓAˆLÜ! (Ö+‘�Ø"#§'¡'�“ñ ,ä×(Ò(¨´s¸8³}ÄcÇhÁhÐPWÓX‰Fä×(Ò(¬¯©°1´c·h±hÀÓHˆFØ”S—^‘^Ô#Ü Ð!6¸Ó?Ð?ØŒÜ—z’zÜ×#Ò# D§M¡M°!Õ$4×$<Ñ$<Ó=ó
ç
‰&‹(ð 	Žr    c                óF   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          /# r£   ©r   r   r�   r	   )r’   r“   s   "€r!   r”   rã  Q  s!   ø€ ÷ ñ ™t¡D©©c¨¥NÕ3ñ r    c                óh  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V P                  W\         P
                  \         P
                  4      pV\        P                  8w  d   \        RV4      h. p\        V^ ,          4       F¶  pV^ ,          V,          p\         P                  ! RVP                  4      pR\         P                  ! VP                  4      P                  4       R\        P                  RV/pVP                  V P!                  \        P                  V4      4       VP#                  V4       K¸  	  VuuRRR4       uuRRR4       #   + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)	z:Get a list of playback devices and some details about themúma_device_info**ú
ma_uint32*úcannot get device infosúma_device_id *r†   ÚtypeÚidN)r   rñ   r   Úma_context_get_devicesrè  rh   rë  rÂ   Úrangerû  r˜   r†   r›   r0   r2   ÚupdateÚ	_get_infoÚappend)	rŸ   Úplayback_infosÚplayback_countr$  Údevsrð  Úma_device_infoÚdev_idrú   s	   &        r!   Úget_playbacksÚDevices.get_playbacksQ  s:  € ä�WŠWÐ'×(Ô(¨N¼C¿GºGØ÷=
ô =
àÜ×/Ò/Ø—‘˜~¼s¿x¹xÌÏÉóˆFð œŸ™Ô'Ü$Ð%>ÀÓGÐGØˆDÜ˜>¨!Õ,Ö-�Ø!/°Õ!2°1Õ!5�ÜŸšØ$ n×&7Ñ&7ó�ð œCŸJšJ ~×':Ñ':Ó;×BÑBÓDØœJ×/Ñ/Ø˜&ð�ð
 —‘˜DŸN™N¬:×+>Ñ+>ÀÓOÔPØ—‘˜DÖ!ñ .ð ÷+=
ñ =
×(Ò(÷ =
÷ =
ú×(×(×(Ò(úó#   ŸF ¾D0F	Å.
F ÆFÆF Æ F1	c                óF   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          /# r£   rô  )r’   r“   s   "€r!   r”   rã  j  s!   ø€ ÷ ñ ™d¡4©©S¨¥>Õ2ñ r    c                óh  € \         P                  ! R4      ;_uu_ 4       p\         P                  ! R4      ;_uu_ 4       p\        P                  ! V P                  \         P
                  \         P
                  W4      pV\        P                  8w  d   \        RV4      h. p\        V^ ,          4       F¶  pV^ ,          V,          p\         P                  ! RVP                  4      pR\         P                  ! VP                  4      P                  4       R\        P                  RV/pVP                  V P!                  \        P                  V4      4       VP#                  V4       K¸  	  VuuRRR4       uuRRR4       #   + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)	z9Get a list of capture devices and some details about themrö  r÷  rø  rù  r†   rú  rû  N)r   rñ   r   rü  rè  rh   rë  rÂ   rý  rû  r˜   r†   r›   r0   r4   rþ  rÿ  r   )	rŸ   Úcapture_infosÚcapture_countr$  r  rð  r  r  rú   s	   &        r!   Úget_capturesÚDevices.get_capturesj  s:  € ä�WŠWÐ'×(Ô(¨M¼3¿7º7Ø÷<
ô <
àÜ×/Ò/Ø—‘œsŸx™x¬¯©°=óˆFð œŸ™Ô'Ü$Ð%>ÀÓGÐGØˆDÜ˜=¨Õ+Ö,�Ø!.¨qÕ!1°!Õ!4�ÜŸšØ$ n×&7Ñ&7ó�ð œCŸJšJ ~×':Ñ':Ó;×BÑBÓDØœJ×.Ñ.Ø˜&ð�ð
 —‘˜DŸN™N¬:×+=Ñ+=¸~ÓNÔOØ—‘˜DÖ!ñ -ð ÷+<
ñ <
×(Ò(÷ <
÷ <
ú×(×(×(Ò(úr  c                óV   <€ V ^8„  d   QhRS[ RS[P                  RS[S[S[3,          /# )r…   Údevice_typeÚdevice_inforŽ   )r0   r   ÚCDatar   r�   r	   )r’   r“   s   "€r!   r”   rã  ƒ  s1   ø€ ÷ $ñ $Ù%ð$Ù47·I±Ið$á	‰c‘3ˆh�ñ$r    c           	     ó@  € \         P                  ! V P                  VP                  \        P
                  ! VP                  4      \        P
                  ! V4      4      pV\         P                  8w  d   \        R 4      h. p\        VP                  4       F�  pVP                  V,          pVP                  R\        P                  ! \         P                  ! VP                  4      4      P!                  4       RVP"                  RVP$                  /4       Kƒ  	  RV/# )zcan't get device infor’   Ú
sampleraterö   Úformats)r   Úma_context_get_device_inforè  rš   r   Ú	addressofrû  rë  rÂ   rý  ÚnativeDataFormatCountÚnativeDataFormatsr   r˜   r™   r’   r›   r1  rö   )rŸ   r  r  r$  r  rË  Údata_formats   &&&    r!   rÿ  ÚDevices._get_infoƒ  sá   € ô ×/Ò/Ø�M‰MØ×ÑÜ�MŠM˜+Ÿ.™.Ó)Ü�MŠM˜+Ó&ó	
ˆð ”S—^‘^Ô#Ü Ð!8Ó9Ð9ØˆÜ˜×:Ñ:Ö;ˆCØ%×7Ñ7¸Õ<ˆKØ�N‰NàœcŸjšjÜ×.Ò.¨{×/AÑ/AÓBóç‘f“hØ  +×"8Ñ"8Ø × 4Ñ 4ðöñ <ð ˜7Ð#Ð#r    c                óF   € \         P                  ! V P                  4       R # r—   )r   Úma_context_uninitrè  r¯   s   &r!   Ú__del__ÚDevices.__del__�  s   € Ü×Ò˜dŸm™mÖ,r    )rè  rí  r—   )r   r   r   r   r   r    r  r  rÿ  r  r   r²   r³   s   @r!   rà  rà  =  s:   ø‡ € ÙM÷ò ÷"ð ÷2ð ÷2$ð $÷4-ð -r    rà  c                ó0   € V ^8„  d   QhR\         R\        /# ©r…   ÚsampleformatrŽ   )r#   r�   )r’   s   "r!   r”   r”   ¡  s   € ÷ Dñ D¤Lð D´Sñ Dr    c                óú   € \         P                  ^ \         P                  ^\         P                  ^\         P                  ^\         P
                  ^\         P                  ^/pW9   d	   W,          # \        RV 4      h)z>returns the sample width in bytes, of the given sample format.zunsupported sample format)r#   r   r&   r(   r*   r,   r.   rÂ   )r"  Úwidthss   & r!   r�   r�   ¡  sl   € ô 	×Ñ˜aÜ×Ñ Ü×Ñ˜qÜ×Ñ˜qÜ×Ñ˜qÜ×Ñ˜að€Fð ÔØÕ#Ð#Ü
Ð4°lÓ
CÐCr    c                óD   € V ^8„  d   QhR\         R\        P                  /# r!  )r#   r¸   )r’   s   "r!   r”   r”   °  s   € ÷ ñ ¬<ð ¼E¿K¹Kñ r    c           
      óF  € \         P                  \        ^4      \         P                  \        ^4      \         P                  \        ^4      \         P
                  \        P                  ! R4      /pW9   d	   W,          # \        RV P                  ,           R,           4      h)é   rK  z6the requested sample format can not be used directly: z (convert it first))	r#   r&   r  r(   r,   r.   r¸   rÂ   r†   )r"  Úarrayss   & r!   Ú_array_proto_from_formatr)  °  s‡   € ä×ÑÔ 1°!Ó 4Ü×ÑÔ0°Ó3Ü×ÑÔ0°Ó3Ü×ÑœeŸkšk¨#Ó.ð	€Fð ÔØÕ#Ð#Ü
Ø@Ø
×
Ñ
õ	à
õ	 óð r    c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r…   rž   r˜  rŽ   )r�   rÜ   r#   )r’   s   "r!   r”   r”   À  s&   € ÷ Gñ G¤Sð G´Dð GÄ\ñ Gr    c                 ó0  € V'       d   \         P                  # V ^8X  d   \         P                  # V ^8X  d   \         P                  # V ^8X  d   \         P                  # V ^8X  d   \         P
                  # V ^ 8X  d   \         P                  # \        RV 4      h)r'  zunsupported sample width)r#   r.   r&   r(   r*   r,   r   rÂ   )rž   r˜  s   &&r!   r3  r3  À  sƒ   € ßÜ×#Ñ#Ð#Ø	˜Ô	Ü×%Ñ%Ð%Ø	˜Ô	Ü×$Ñ$Ð$Ø	˜Ô	Ü×$Ñ$Ð$Ø	˜Ô	Ü×$Ñ$Ð$Ø	˜Ô	Ü×#Ñ#Ð#äÐ7¸ÓFÐFr    éD¬  c                ó`   € V ^8„  d   QhR\         R\        R\        R\        R\        R\        /# )r…   rÈ   Úoutput_formatrˆ   r‰   ÚditherrŽ   )r�   r#   r�   r8   rµ   )r’   s   "r!   r”   r”   Ñ  sD   € ÷ 
ñ 
Üð
äð
ô ð
ô ð	
ô
 ð
ô ñ
r    c                óB  € \        V4      p\        V4      p\        V 4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p	\
        P                  ! VP                  W#4      p
VP                  V
n        \
        P                  ! V\        P                  ! V
4      W‰4      pV\
        P                  8w  d   \        RV4      h\        P                  ! V	^ ,          V^ ,          V,          V,          4      pVP                  V4       \
        P                  ! V	^ ,          \        P                   4       \#        WW1V4      uuRRR4       uuRRR4       #   + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zaConvenience function to decode any supported audio file to raw PCM samples in your chosen format.úma_uint64 *úvoid **zfailed to decode fileN)r�   r)  rð   r   rñ   r   Úma_decoder_config_initrš   Ú
ditherModeÚma_decode_filer  rë  rÅ   r  r  Úma_freerh   rµ   )rÈ   r.  rˆ   r‰   r/  rž   r·   rø   ÚframesrB  Údecoder_configr$  r  s   &&&&&        r!   Údecode_filer9  Ñ  s  € ô % ]Ó3€LÜ& }Ó5€GÜ'¨Ó1€MÜ	�Š�×	Ô	 6¬3¯7ª7°9×+=Ô+=ÀÜ×3Ò3Ø×Ñ ó
ˆð %+§L¡LˆÔ!Ü×#Ò#Øœ3Ÿ=š=¨Ó8¸&ó
ˆð ”S—^‘^Ô#ÜÐ5°vÓ>Ð>Ü—’˜F 1�I v¨a¥y°9Õ'<¸|Õ'KÓLˆØ×Ñ˜&Ô!Ü�Š�F˜1•IœsŸx™xÔ(ÜØ ¸Wó
÷ ,>Ñ+=×	Ò	×+=×+=ú×	×	×	Ò	ús%   Á FÁC<E0	Å
FÅ0F Å;FÆF	c                ó`   € V ^8„  d   QhR\         R\        R\        R\        R\        R\        /# )r…   rý   r.  rˆ   r‰   r/  rŽ   )rÿ   r#   r�   r8   rµ   )r’   s   "r!   r”   r”   î  sD   € ÷ 
ñ 
Ü
ð
äð
ô ð
ô ð	
ô
 ð
ô ñ
r    c                ó@  € \        V4      p\        V4      p\        P                  ! R4      ;_uu_ 4       p\        P                  ! R4      ;_uu_ 4       p\        P
                  ! VP                  W#4      p	VP                  V	n        \        P                  ! V \        V 4      \        P                  ! V	4      Wx4      p
V
\        P                  8w  d   \        RV
4      h\        P                  ! V^ ,          V^ ,          V,          V,          4      pVP                  V4       \        P                  ! V^ ,          \        P                   4       \#        RW#W4      uuRRR4       uuRRR4       #   + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zkConvenience function to decode any supported audio file in memory to raw PCM samples in your chosen format.r1  r2  zfailed to decode datar  N)r�   r)  r   rñ   r   r3  rš   r4  Úma_decode_memoryr»   r  rë  rÅ   r  r  r6  rh   rµ   )rý   r.  rˆ   r‰   r/  rž   r·   r7  rB  r8  r$  r  s   &&&&&       r!   r›   r›   î  s  € ô % ]Ó3€LÜ& }Ó5€GÜ	�Š�×	Ô	 6¬3¯7ª7°9×+=Ô+=ÀÜ×3Ò3Ø×Ñ ó
ˆð %+§L¡LˆÔ!Ü×%Ò%Ø”#�d“)œSŸ]š]¨>Ó:¸Fó
ˆð ”S—^‘^Ô#ÜÐ5°vÓ>Ð>Ü—’˜F 1�I v¨a¥y°9Õ'<¸|Õ'KÓLˆØ×Ñ˜&Ô!Ü�Š�F˜1•IœsŸx™xÔ(ÜØ˜	°ó
÷ ,>Ñ+=×	Ò	×+=×+=ú×	×	×	Ò	ús$   µFÁDE/	Å
FÅ/E?Å:FÆF	c                óÎ   € V ^8„  d   QhR\         R\         R\        R\        P                  R\        R\
        \        ,          R\        \        P                  \         R3,          /# )	r…   rb  rˆ   r.  Údecoderrý   Úon_closerŽ   N)	r�   r#   r   r  r	   r   r
   r   r¸   )r’   s   "r!   r”   r”   
  sg   € ÷ 8'ñ 8'Üð8'äð8'ô  ð8'ô �Y‰Yð	8'ô
 ð8'ô ”xÕ ð8'ô Œu�{‰{œC Ð%Õ&ñ8'r    c           
   #   óJ  "  € Tp\        V4      p\        V4      p\        V R 4      p	 \        P                  ! RW‘,          V,          4      ;_uu_ 4       p
\        P
                  ! RV
4      pVx €;'       g    T pRpVP                  \        P                  8w  d!   \        P                  ! VP                  4      p WÉ8”  d   \        RP                  WÉ4      4      h^ p\        P                  ! R4      ;_uu_ 4       p \        P                  ! W;WÏ4      pV\        P                  8X  d   V^ ,          pM*V\        P                  8X  d    RRR4       M²\        R4      h RRR4       V^ 8:  d   M–V'       d)   VP"                  '       d   \        R4      VP"                  h\        P$                  ! W®V,          V,          4      p\&        P&                  ! VP(                  4      pVP+                  V4       Vx €;'       g    T pEKJ  RRR4       V'       d   V! 4        \        P,                  ! V4       R#   \          d   p\        R4      ThRp?ii ; i  + '       g   i     Lü; i  + '       g   i     Li; i  T'       d   T! 4        \        P,                  ! T4       i ; i5i)i @  zint8_t[]zvoid *NzDwanted to read more frames than storage was allocated for ({} vs {})r1  z#error in ma_decoder_read_pcm_frameszerror in read callback)r�   r)  Úmaxr   rñ   r  Ú	pUserDatarh   Úfrom_handlerÂ   r’   r   Úma_decoder_read_pcm_framesrë  Ú	MA_AT_ENDrÅ   Ú	ExceptionÚerror_in_readcallbackr  r¸   rÔ  r  Úma_decoder_uninit)rb  rˆ   r.  r>  rý   r?  Ú
_referencerž   Úsamples_protoÚallocated_buffer_framesrf  rg  Úwant_framesÚsourcerŒ   Úframes_readr$  Úxr  r·   s   &&&&&&              r!   Ú_samples_stream_generatorrP  
  s,  é € ð €JÜ$ ]Ó3€LÜ,¨]Ó;€MÜ! .°%Ó8Ðð,'Ü�WŠWØÐ/Õ;¸lÕJ÷
ô 
àÜ—h’h˜x¨Ó6ˆGØ!.Ñ.×AÐA°>ˆKØˆFØ× Ñ ¤C§H¡HÔ,ÜŸš¨×):Ñ):Ó;�ØØÔ8Ü(Ø^×eÑeØ'óóð ð
 �
Ü—W’W˜]×+Ô+¨{ðUÜ!$×!?Ò!?Ø#¨kó"˜ð "¤S§^¡^Ô3Ø)4°Q­™JØ#¤s§}¡}Ô4Ø!÷ ,Ð+ô #.Ð.SÓ"TÐTð	 '÷ ,ð  ”?Øß˜f×:×:Ð:Ü%Ø0óà!×7Ñ7ð8ô Ÿš L¸|Õ2KÈiÕ2WÓX�ÜŸ+š+ m×&<Ñ&<Ó=�Ø×!Ñ! &Ô)Ø%,™}×?Ð?°“÷O
÷R ÙŒJÜ×Ò˜gÖ&øô- %ô XÜ)Ð*OÓPÐVWÐWûðXú÷ ,×+ú÷!
÷ 
û÷R ÙŒJÜ×Ò˜gÕ&üs�   ‚%J#¨,I9 ÁB(I&Ã<I	Ã>H4Ä5I	Å
	I&ÅI	ÅI&Å7I&Æ	A5I&Ç?I&ÈI9 È'J#È4IÈ?IÉIÉI	ÉI#ÉI&É&I6	É1I9 É9'J Ê J#c                ó°   € V ^8„  d   QhR\         R\        R\        R\        R\        R\        R\        R\        \
        P
                  \        R	3,          /# )
r…   rÈ   r.  rˆ   r‰   rb  r/  r  rŽ   N)r�   r#   r�   r8   r   r¸   )r’   s   "r!   r”   r”   E  sh   € ÷ +ñ +Üð+äð+ô ð+ô ð	+ô
 ð+ô ð+ô ð+ô Œu�{‰{œC Ð%Õ&ñ+r    c                ó°  € \         P                  ! R4      p\        P                  ! VP                  W#4      pVP                  Vn        \        P                  R8X  d9   \        V 4      p	\        P                  ! V	\         P                  ! V4      V4      p
M7\        V 4      p\        P                  ! V\         P                  ! V4      V4      p
V
\        P                  8w  d   \        RV
4      hV^ 8”  d8   \        P                  ! Wv4      p
V
\        P                  8w  d   \        RV
4      h\!        WBWR4      p\#        V4      p\%        V4      ^ 8X  g   Q hV# )a¡  
Convenience generator function to decode and stream any supported audio file
as chunks of raw PCM samples in the chosen format.
If you send() a number into the generator rather than just using next() on it,
you'll get that given number of frames, instead of the default configured amount.
This is particularly useful to plug this stream into an audio device callback that
wants a variable number of frames per call.
úma_decoder *r*  úfailed to init decoderúfailed to seek to frameN)r   rñ   r   r3  rš   r4  r+  r,  r-  Úma_decoder_init_file_wr  rð   Úma_decoder_init_filerë  rÅ   Úma_decoder_seek_to_pcm_framerP  Únextr»   )rÈ   r.  rˆ   r‰   rb  r/  r  r>  r8  r5  r$  rø   ÚgÚdummys   &&&&&&&       r!   Ústream_filer\  E  s  € ô" �gŠg�nÓ%€GÜ×/Ò/Ø×Ñ˜Yó€Nð !'§¡€NÔÜ
‡|�|�wÔÜ.¨xÓ8ˆÜ×+Ò+ØœCŸMšM¨.Ó9¸7ó
‰ô ,¨HÓ5ˆÜ×)Ò)Øœ3Ÿ=š=¨Ó8¸'ó
ˆð ”—‘ÔÜÐ2°FÓ;Ð;Ø�A„~Ü×1Ò1°'ÓFˆØ”S—^‘^Ô#ÜÐ7¸Ó@Ð@Ü!Ø =¸4ó	€Aô �‹G€EÜˆu‹:˜Œ?Ðˆ?Ø€Hr    c                ó¤   € V ^8„  d   QhR\         R\        R\        R\        R\        R\        R\        \
        P
                  \        R3,          /# )	r…   rý   r.  rˆ   r‰   rb  r/  rŽ   N)rÿ   r#   r�   r8   r   r¸   )r’   s   "r!   r”   r”   s  s^   € ÷ ñ Ü
ðäðô ðô ð	ô
 ðô ðô Œu�{‰{œC Ð%Õ&ñr    c                ó˜  € \         P                  ! R4      p\        P                  ! VP                  W#4      pVP                  Vn        \        P                  ! V \        V 4      \         P                  ! V4      V4      pV\        P                  8w  d   \        RV4      h\        WBWV 4      p	\        V	4      p
\        V
4      ^ 8X  g   Q hV	# )a«  
Convenience generator function to decode and stream any supported audio file in memory
as chunks of raw PCM samples in the chosen format.
If you send() a number into the generator rather than just using next() on it,
you'll get that given number of frames, instead of the default configured amount.
This is particularly useful to plug this stream into an audio device callback that
wants a variable number of frames per call.
rS  rT  )r   rñ   r   r3  rš   r4  Úma_decoder_init_memoryr»   r  rë  rÅ   rP  rY  )rý   r.  rˆ   r‰   rb  r/  r>  r8  r$  rZ  r[  s   &&&&&&     r!   Ústream_memoryr`  s  s®   € ô  �gŠg�nÓ%€GÜ×/Ò/Ø×Ñ˜Yó€Nð !'§¡€NÔÜ×'Ò'ØŒc�$‹iœŸš ~Ó6¸ó€Fð ”—‘ÔÜÐ2°FÓ;Ð;Ü!Ø =¸4ó	€Aô �‹G€EÜˆu‹:˜Œ?Ðˆ?Ø€Hr    c          
      ó”   € V ^8„  d   QhR\         \        P                  \        \        3,          R\        R\        R\        R\
        /# )r…   Úpcmdatarˆ   rž   rb  rŽ   )r   r¸   Ú
memoryviewrÿ   r�   ÚPlaybackCallbackGeneratorType)r’   s   "r!   r”   r”   •  sJ   € ÷ "ñ "Ü”5—;‘;¤
¬EÐ1Õ2ð"äð"ô ð"ô ð	"ô
 #ñ"r    c                ón   a aaa€ R VVV V3R llpV! 4       p\        V4      p\        V4      ^ 8X  g   Q hV# )a  
Convenience generator function to stream raw pcm audio data from memory.
Usually you don't need to use this as the library provides many other streaming
options that work on much smaller, encoded, audio data.
However, in the odd case that you only have already decoded raw pcm data you can use
this generator as a stream source.

The data can be provided in ``array`` type or ``bytes``, ``memoryview`` or even a numpy array.
Be sure to also specify the correct number of channels that the audio data has, and the
sample with in bytes.
c                ó$   € V ^8„  d   QhR\         /# r£   ©rd  )r’   s   "r!   r”   Ú+stream_raw_pcm_memory.<locals>.__annotate__§  s   € ÷  ñ  Ô:ñ  r    c               3   óø   <"  € \        S4      \        P                  J d   ^o\        S4      p Rx €;'       g    Sp^ pV\        V 4      8  d+   W!S,          S,          ,           pWV x €;'       g    SpTpK:  R# 5i)r'  r    N)rú  r¸   rc  r»   )ÚmemdataÚrequired_framesr7  Ú
frames_endrb  rˆ   rb  rž   s       €€€€r!   Ú_mem_stream_genÚ.stream_raw_pcm_memory.<locals>._mem_stream_gen§  sx   øé € ô �‹=œEŸK™KÓ'ØˆLÜ˜WÓ%ˆØ!$™9×7Ð7¨ˆØˆØ”s˜7“|Ô#Ø°IÕ"=ÀÕ"LÕLˆJØ%,°JÐ%?Ñ?×RÐRÀNˆOØŠFñ $ùs   ƒ5A:¹7A:Á1	A:)rY  r»   )rb  rˆ   rž   rb  rm  rZ  r[  s   ffff   r!   Ústream_raw_pcm_memoryro  •  s5   û€ ÷$ ó  ñ 	Ó€AÜ�‹G€EÜˆu‹:˜Œ?Ðˆ?Ø€Hr    c                   ó¸   a € ] tR tRt o Rt]P                  tRt]	P                  V 3R lR l4       tV 3R lR ltV 3R lR	 ltV 3R
 lR ltV 3R lR ltRtV tR# )ÚStreamableSourceiº  zfBase class for streams of audio data bytes. Can be used as a contextmanager, to properly call close().Nc                ó<   <€ V ^8„  d   QhRS[ RS[S[S[3,          /# ©r…   Ú	num_bytesrŽ   )r�   r   rÿ   rc  )r’   r“   s   "€r!   r”   ÚStreamableSource.__annotate__Á  s%   ø€ ÷ ñ ™cð ¡e©E±:Ð,=Õ&>ñ r    c                ó   € R# )zAoverride this to provide data bytes to the consumer of the streamNr   )rŸ   rt  s   &&r!   ÚreadÚStreamableSource.readÀ  s   € ñ 	r    c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r…   ÚoffsetÚoriginrŽ   )r�   r{   rÜ   )r’   r“   s   "€r!   r”   ru  Å  s"   ø€ ÷ ñ ™3ð ©
ð ±tñ r    c                ó   € R# )z«
Override this if the stream supports seeking.
Note: seek support is sometimes not needed if you give the file type
to a decoder upfront. You can ignore this method then.
Fr   )rŸ   rz  r{  s   &&&r!   ÚseekÚStreamableSource.seekÅ  s   € ñ r    c                ó   <€ V ^8„  d   QhRR/# ©r…   rŽ   Nr   )r’   r“   s   "€r!   r”   ru  Í  ó   ø€ ÷ ñ �tñ r    c                ó   € R# )z>Override this to properly close the stream and free resources.Nr   r¯   s   &r!   ÚcloseÚStreamableSource.closeÍ  ó   € ár    c                ó   <€ V ^8„  d   QhRR/# )r…   rŽ   rq  r   )r’   r“   s   "€r!   r”   ru  Ñ  s   ø€ ÷ ñ Ð-ñ r    c                ó   € V # r—   r   r¯   s   &r!   Ú	__enter__ÚStreamableSource.__enter__Ñ  ó   € Øˆr    c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   ru  Ô  s   ø€ ÷ ñ °Tñ r    c                ó&   € V P                  4        R # r—   ©rƒ  ©rŸ   Úexc_typeÚexc_valÚexc_tbs   &&&&r!   Ú__exit__ÚStreamableSource.__exit__Ô  ó   € Ø�
‰
Žr    r   )r   r   r   r   r   r   rh   Ú
ffi_handlerG  ÚabcÚabstractmethodrw  r}  rƒ  rˆ  r’  r   r²   r³   s   @r!   rq  rq  º  sW   ø‡ € Ùpà—‘€JØ Ðà×Ñ÷ó ð÷ð ÷ð ÷ð ÷ö r    rq  c                   ó¸   a € ] tR tRt o RtRtRtRV 3R lR lltV 3R lR ltV 3R lR	 lt	V 3R
 lR lt
V 3R lR ltV 3R lR lt]V 3R lR l4       tRtV tR# )ÚIceCastClientiØ  aZ  
A simple client for IceCast audio streams as miniaudio streamable source.
If the stream has Icy MetaData, the stream_title attribute will be updated
with the actual title taken from the metadata.
You can also provide a callback to be called when a new stream title is available.
The downloading of the data from the internet is done in a background thread
and it tries to keep a (small) buffer filled with available data to read.
You can optionally provide a custom ssl.SSLContext in the ssl_context parameter,
if you need to change the way SSL connections are configured (certificates, checks, etc).
Nc                óF   <€ V ^8„  d   QhRS[ RS[RS[ .R3,          RRRR/# )r…   ÚurlÚupdate_stream_titler™  NÚssl_contextzssl.SSLContextrŽ   )r�   r
   )r’   r“   s   "€r!   r”   ÚIceCastClient.__annotate__ç  sB   ø€ ÷ &ñ &áð&ñ & ¹Ð&<¸dÐ&BÕCð&ð &ð	&ð
 
ñ&r    c                óÒ  € Wn         R V n        R V n        R V n        RV n        \
        P                  V n        RV n        RV n	        \        P                  ! 4       V n        W n        \        P                  P!                  VRR/R7      p\        P                  P#                  WCR7      ;_uu_ 4       pVP$                  R,          V n        VP$                  R	,          V n        VP$                  R
,          pV P'                  V4      V n        RRR4       \        P(                  ! V P*                  RR7      V n        V P,                  P/                  4        R#   + '       g   i     LS; i)z???Ú Fr    úicy-metadataÚ1©Úheaders)rî  ú	icy-genreúicy-nameúContent-TypeNT)ÚtargetÚdaemon)r›  Ústream_titleÚstation_genreÚstation_nameÚ
audio_infor   r   Úaudio_formatÚ_stop_streamÚ_bufferÚ	threadingÚLockÚ_buffer_lockÚ_update_titleÚurllibÚrequestÚRequestÚurlopenr¤  Údetermine_audio_formatÚThreadÚ_download_streamÚ_download_threadÚstart)rŸ   r›  rœ  r�  Úreqr$  Ústream_formats   &&&&   r!   r    ÚIceCastClient.__init__ç  s  € ð ŒØ!ˆÔØ"ˆÔØ!ˆÔØˆŒÜ&×.Ñ.ˆÔØ!ˆÔØˆŒÜ%ŸNšNÓ,ˆÔØ0ÔÜ�n‰n×$Ñ$ S°>À3Ð2GÐ$ÓHˆÜ�^‰^×#Ñ# CÐ#×=Ô=ÀØ!'§¡°Õ!<ˆDÔØ &§¡¨zÕ :ˆDÔØ"ŸN™N¨>Õ:ˆMØ $× ;Ñ ;¸MÓ JˆDÔ÷	 >ô
 !*× 0Ò 0Ø×(Ñ(°ô!
ˆÔð 	×Ñ×#Ñ#Ö%÷ >×=ús   Â1AEÅE&	c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r…   r¿  rŽ   )r�   r   )r’   r“   s   "€r!   r”   rž    s   ø€ ÷ &ñ &±Cð &¹Jñ &r    c                óÌ   € VR 8X  d   \         P                  # VR8X  d   \         P                  # VP                  R4      '       d   \         P                  # \         P
                  # )z
audio/mpegz
audio/flacz/ogg)r   r   r   Úendswithr   r   )rŸ   r¿  s   &&r!   r¹  Ú$IceCastClient.determine_audio_format  sO   € Ø˜LÔ(Ü—>‘>Ð!Ø˜lÔ*Ü—?‘?Ð"Ø×#Ñ# F×+Ò+Ü×$Ñ$Ð$ä×%Ñ%Ð%r    c                ó&   <€ V ^8„  d   QhRS[ RS[/# rs  ©r�   rÿ   )r’   r“   s   "€r!   r”   rž    s   ø€ ÷ ñ ™cð ¡eñ r    c                ó  € \        V P                  4      V8  d   \        P                  ! R4       K2  V P                  ;_uu_ 4        V P                  RV pV P                  VR V n        VuuRRR4       #   + '       g   i     R# ; i)z%Read a chunk of data from the stream.gš™™™™™¹?N)r»   r°  ÚtimeÚsleepr³  )rŸ   rt  Úchunks   && r!   rw  ÚIceCastClient.read  s^   € ä�$—,‘,Ó )Ô+Ü�JŠJ�sŽOØ××ÓØ—L‘L  )Ð,ˆEØŸ<™<¨	¨
Ð3ˆDŒLØ÷ ××Óús   Á%A7Á7B	c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   rž    s   ø€ ÷ %ñ %�tñ %r    c                óH   € RV n         V P                  P                  4        R# )z5Stop the stream, aborting the background downloading.TN)r¯  r¼  Újoinr¯   s   &r!   rƒ  ÚIceCastClient.close  s   € à ˆÔØ×Ñ×"Ñ"Ö$r    c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r…   ÚsizerŽ   rÆ  )r’   r“   s   "€r!   r”   rž    s   ø€ ÷ ñ ©ð ±ñ r    c                ó\   € R p\        V4      V8  d   W1P                  V4      ,          pK)  V# )r    )r»   rw  )rŸ   Ú
fileobjectrÑ  rñ  s   &&& r!   Ú_readallÚIceCastClient._readall  s(   € ØˆÜ�!‹f�tŒmØ—‘ Ó&Õ&ŠAØˆr    c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   rž     s   ø€ ÷ ,.ñ ,. $ñ ,.r    c           	     óø  € \         P                  P                  V P                  R R/R7      p\         P                  P	                  V4      ;_uu_ 4       pVP
                  R,          V n        VP
                  R,          V n        VP
                  R,          pV'       d   V P                  V4      V n	        VP
                  P                  RR4      V n        RVP
                  9   d   \        VP
                  R,          4      pM^ pV'       Edh   V P                  '       EgT   \        V P                  4      V P                   8¼  d6   \"        P$                  ! R	4       V P                  '       g   KN   R
R
R
4       R
# V P'                  W$4      pV P(                  ;_uu_ 4        V ;P                  V,          un        R
R
R
4       ^V P'                  V^4      ^ ,          ,          p\+        V P'                  W&4      P-                  R4      RRR7      pV'       g   EK
  V P/                  V4      pVP                  R4      p	V	'       g   EK7  W�n        V P2                  '       g   EKR  V P3                  W	4       EKf  M¾V P                  '       g­   \        V P                  4      V P                   8¼  d6   \"        P$                  ! R	4       V P                  '       g   KN   R
R
R
4       R
# VP5                  V P6                  4      pV P(                  ;_uu_ 4        V ;P                  V,          un        R
R
R
4       K¾  R
R
R
4       R
#   + '       g   i     EL�; i  + '       g   i     Kí  ; i  + '       g   i     R
# ; i)r¡  r¢  r£  r¥  r¦  r§  zice-audio-infor   zicy-metaintgš™™™™™É?Nó    zutf-8Úreplace)ÚerrorsÚStreamTitle)rµ  r¶  r·  r›  r¸  r¤  r«  r¬  r¹  r®  Úgetr­  r�   r¯  r»   r°  ÚBUFFER_SIZErÈ  rÉ  rÔ  r³  r�   ÚstripÚparse_metadatarª  r´  rw  Ú
BLOCK_SIZE)
rŸ   r¾  r$  r¿  Úmeta_intervalrÊ  Ú	meta_sizeÚmetadataÚmetarª  s
   &         r!   r»  ÚIceCastClient._download_stream   st  € Ü�n‰n×$Ñ$ T§X¡X¸ÈÐ7LÐ$ÓMˆÜ�^‰^×#Ñ# C×(Ô(¨FØ!'§¡°Õ!<ˆDÔØ &§¡¨zÕ :ˆDÔØ"ŸN™N¨>Õ:ˆMßØ$(×$?Ñ$?ÀÓ$N�Ô!Ø$Ÿn™n×0Ñ0Ð1AÀ2ÓFˆDŒOØ §¡Ô.Ü # F§N¡N°=Õ$AÓ B‘à !�ßˆ}à×+×+Ñ+Ü˜dŸl™lÓ+¨t×/?Ñ/?Ô?ÜŸ
š
 3œØ×,×,Ò,Ø"÷# )Ñ(ð$ !ŸM™M¨&Ó@�EØ×*×*Ó*ØŸš¨Õ-�÷ +à " T§]¡]°6¸1Ó%=¸aÕ%@Õ @�IÜ"ØŸ™ fÓ8×>Ñ>¸uÓEØØ(ô �H÷
  ’xØ#×2Ñ2°8Ó<˜Ø'+§x¡x°Ó'>˜ß'š<Ø0<Ô-Ø#×1×1Ó1Ø $× 2Ñ 2°4× Fð) ,ð, ×+×+Ð+Ü˜dŸl™lÓ+¨t×/?Ñ/?Ô?ÜŸ
š
 3œØ×,×,Ò,Ø"÷O )Ñ(ðP #ŸK™K¨¯©Ó8�EØ×*×*Ó*ØŸš¨Õ-�÷ +Ñ*÷S )Ñ(÷& +×*Ð*ú÷, +×*Ð*ú÷S )×(Ð(ús|   ÁB;M(ÄM(Ä$A	M(Å2M(Å=%M(Æ"M 	Æ<AM(È'M(ÉM(É#&M(Ê
A	M(ËM(Ë#/M(ÌM	Ì,
M(Í MÍ	M(ÍM%Í	M(Í(M9	c                ó<   <€ V ^8„  d   QhRS[ RS[S[ S[ 3,          /# )r…   rã  rŽ   )r�   r   )r’   r“   s   "€r!   r”   rž  O  s#   ø€ ÷ ñ ¡ð ©©c±3¨h­ñ r    c                óÈ   € / p\         P                  ! V 4      p V P                  R 4       F4  pVP                  R4      w  r4pV'       g   K!  VP	                  R4      W&   K6  	  V# )Ú;Ú=Ú')ÚhtmlÚunescapeÚsplitÚ	partitionrÞ  )rã  rä  ÚpartÚkeyÚ_rš   s   &     r!   rß  ÚIceCastClient.parse_metadataN  sV   € àˆÜ—=’= Ó*ˆØ—N‘N 3Ö'ˆDØ ŸN™N¨3Ó/‰MˆC�Eß‰sØ!ŸK™K¨Ó,�“	ñ (ð ˆr    )r°  r³  r¼  r¯  r´  r®  r­  r«  r¬  rª  r›  i    i   )NN)r   r   r   r   r   rà  rÝ  r    r¹  rw  rƒ  rÔ  r»  Ústaticmethodrß  r   r²   r³   s   @r!   r™  r™  Ø  sg   ø‡ € ñ	ð €JØ€K÷&ò &÷6&ð &÷ð ÷%ð %÷
ð ÷,.ð ,.ð\ ÷ó ör    r™  c                ó¼   € V ^8„  d   QhR\         R\        R\        R\        R\        R\        R\        R\        R	\
        \        P                  \        R
3,          /	# )r…   rM  Úsource_formatr.  rˆ   r‰   rb  r/  r  rŽ   N)rq  r   r#   r�   r8   r   r¸   )r’   s   "r!   r”   r”   Y  sr   € ÷ /ñ /Üð/äð/ô  ð/ô ð	/ô
 ð/ô ð/ô ð/ô ð/ô Œu�{‰{œC Ð%Õ&ñ/r    c                ó¶  € \         P                  ! R4      p\        P                  ! VP                  W44      p	VP                  V	n        \         P                  ! V 4      V n        VP                  V	n        \        P                  ! \        P                  \        P                  V P                  \         P                  ! V	4      V4      p
V
\        P                  8w  d   \        RV
4      hV^ 8”  d8   \        P                  ! W‡4      p
V
\        P                  8w  d   \        RV
4      hR R lp\!        WSW(RV4      p\#        V4      p\%        V4      ^ 8X  g   Q hV# )aâ  
Convenience function that returns a generator to decode and stream any source of encoded audio data
(such as a network stream). Stream result is chunks of raw PCM samples in the chosen format.
If you send() a number into the generator rather than just using next() on it,
you'll get that given number of frames, instead of the default configured amount.
This is particularly useful to plug this stream into an audio device callback that
wants a variable number of frames per call.
rS  rT  rU  c                ó   € V ^8„  d   QhRR/# r€  r   )r’   s   "r!   r”   Ú stream_any.<locals>.__annotate__€  s   € ÷ ñ �dñ r    c                  ó   € R # r—   r   r   r    r!   r?  Ústream_any.<locals>.on_close€  s   € Ùr    N)r   rñ   r   r3  rš   r4  Ú
new_handler•  ÚencodingFormatÚma_decoder_initÚ_internal_decoder_read_callbackÚ_internal_decoder_seek_callbackr  rë  rÅ   rX  rP  rY  r»   )rM  rõ  r.  rˆ   r‰   rb  r/  r  r>  r8  r$  r?  rZ  r[  s   &&&&&&&&      r!   Ú
stream_anyr   Y  s  € ô$ �gŠg�nÓ%€GÜ×/Ò/Ø×Ñ˜Yó€Nð !'§¡€NÔÜŸš vÓ.€FÔØ$1×$7Ñ$7€NÔ!Ü× Ò Ü×+Ñ+Ü×+Ñ+Ø×ÑÜ�Š�nÓ%Øó€Fð ”—‘ÔÜÐ2°FÓ;Ð;Ø�A„~Ü×1Ò1°'ÓFˆØ”S—^‘^Ô#ÜÐ7¸Ó@Ð@õô 	"Ø =¸4Àó	€Aô �‹G€EÜˆu‹:˜Œ?Ðˆ?Ø€Hr    c          
      óâ   € V ^8„  d   QhR\         R\        \        \        .R3,          R3,          R\        \        \        .\        3,          R3,          R\        \        R3,          R\         /# )r…   Úsample_streamÚprogress_callbackNÚframe_process_methodÚend_callbackrŽ   )rd  r   r
   r�   Ú
FramesType)r’   s   "r!   r”   r”   ‹  sn   € ÷ ñ Ü0ðäœX¤s e¨T kÕ2°DÐ8Õ9ðô  ¤¬*¨´zÐ)AÕ BÀDÐ HÕIðô œ $˜Õ'ð	ô
 #ñr    c              #  óÖ   "  € Rx €p  V P                  V4      pV'       d   V! V4      x €pMVx €pV'       g   K3  V! V4       K=    \         d    T'       d   T! 4         R#  R# i ; i5i)a  
Convenience generator function to add callback and processing functionality to another stream.
You can specify :
> A callback function that gets called during play and takes an int
for the number of frames played.

> A function that can be used to process raw data frames before they are yielded back
(takes an array.array or bytes, returns an array.array or bytes)
*Note: if the processing method is slow it will result in audio glitchiness

> A callback function that gets called when the stream ends playing.
r    N)ÚsendÚStopIteration)r  r  r  r  Úframe_countÚframes   &&&&  r!   Ústream_with_callbacksr  ‹  sf   é € ð$ ‘)€KðØØ!×&Ñ& {Ó3ˆEß#Ù$8¸Ó$?Ñ?‘à$)™k�ß Ñ Ù! +Ö.øÜô ßÙ�Nò ðüs2   ‚A)ˆA ¢A »
A ÁA&ÁA&ÁA)Á%A&Á&A)c          
      ó�   € V ^8„  d   QhR\         P                  R\         P                  R\        R\         P                  R\        /# )r…   r>  r  rt  Ú
bytes_readrŽ   ©r   r  r�   )r’   s   "r!   r”   r”   ­  s@   € ÷ ñ Ü�Y‰YðÜ #§	¡	ðÜ69ðÜGJÇyÁyðäñr    c                 ó  € ^ V^ &   V^ 8:  g   V P                   '       g   \        P                  # \        P                  ! V P                   4      pVP
                  fq    VP                  V4      p\        P                  ! W\        V4      4       \        V4      V^ &   \        V4      ^ 8”  d   \        P                  # \        P                  # \        P                  #   \         d    pYdn         Rp?\        P                  # Rp?ii ; i©é    N)rB  r   ÚMA_ERRORr   rC  rG  rw  Úmemmover»   rë  rE  rF  )r>  r  rt  r  rM  rý   rO  s   &&&&   r!   rþ  rþ  ¬  sÉ   € ð €Jˆq�MØ�A„~˜W×.×.Ð.Ü�|‰|ÐÜ�_Š_˜W×.Ñ.Ó/€FØ×#Ñ#Ò+ð	-Ø—;‘;˜yÓ)ˆDÜ�KŠK˜¤c¨$£iÔ0Ü ›IˆJ�q‰MÜ%(¨£Y°¤]”3—>‘>ÐE¼¿¹ÐEô �<‰<Ðøô ô 	-Ø+,×(Ð(Ü�<‰<Ðûð	-ús   ÁAC Â=C ÃDÃ(DÄDc                ó\   € V ^8„  d   QhR\         P                  R\        R\        R\        /# )r…   r>  rz  Úseek_originrŽ   r  )r’   s   "r!   r”   r”   À  s0   € ÷ ñ Ü�Y‰YðÜ #ðÜ25ðäñr    c                 ó¨  € V P                   '       g   \        P                  # V^ 8X  d&   V\        P                  8X  d   \        P                  # \
        P                  ! V P                   4      p VP                  V\        V4      4      pV'       d   \        P                  # \        P                  #   \         d    \        P                  u # i ; i©r  )rB  r   r  r~   rë  r   rC  r}  r{   rF  ÚMA_BAD_SEEK)r>  rz  r  rM  r$  s   &&&  r!   rÿ  rÿ  ¿  s˜   € ð ××ÐÜ�|‰|ÐØ�„{�{¤c×&@Ñ&@Ô@Ü�~‰~ÐÜ�_Š_˜W×.Ñ.Ó/€FðØ—‘˜V¤Z°Ó%<Ó=ˆßÜ—>‘>Ð!ô �~‰~ÐøÜô Ü�‰Òðús   Á02B3 Â#B3 Â3CÃCc          
      óT   € V ^8„  d   QhR\         R\        R\         R\        R\        /# )r…   Úfrom_fmtÚ
sourcedataÚto_fmtr/  rŽ   )r#   rÿ   r8   Ú	bytearray)r’   s   "r!   r”   r”   Ó  s:   € ÷ ñ Üðäðô ðô ð	ô
 ñr    c                ó  € \        V 4      p\        V4      V,          p\        V4      p\        WE,          4      p\        P                  ! \
        P                  ! V4      VP                  VV P                  VVP                  4       V# )zuConvert a raw buffer of pcm samples to another sample format.
The result is returned as another raw pcm sample buffer)r�   r»   r  r   Úma_pcm_convertr   Úfrom_bufferrš   )r  r  r  r/  rž   r  r  s   &&&&   r!   Úconvert_sample_formatr"  Ó  so   € ô % XÓ.€LÜ�j“/ \Õ1€KÜ$ VÓ,€LÜ�|Õ1Ó2€FÜ×ÒÜ�Š˜ÓØ�‰ØØ�‰ØØ�‰ôð €Mr    c                óx   € V ^8„  d   QhR\         R\        R\        R\        R\         R\        R\        R\        /# )	r…   r  Úfrom_numchannelsÚfrom_samplerater  r  Úto_numchannelsÚto_sampleraterŽ   )r#   r�   rÿ   r  )r’   s   "r!   r”   r”   ê  sX   € ÷ ñ Üðäðô ðô ð	ô
 ðô ðô ðô ñr    c                ób  € \        V 4      p\        \        V4      V,          V,          4      p\        V4      p\        P                  ! WbV4      p	\        W—,          V,          4      p
\        P                  ! \        P                  ! V
4      V	VP                  VVVVV P                  VV4
       V
# )z£Convert audio frames in source sample format with a certain number of channels,
to another sample format and possibly down/upmixing the number of channels as well.)
r�   r�   r»   r   Ú)ma_calculate_frame_count_after_resamplingr  Úma_convert_framesr   r!  rš   )r  r$  r%  r  r  r&  r'  rž   rŒ   Úoutput_frame_countr  s   &&&&&&&    r!   Úconvert_framesr,  ê  s    € ô % XÓ.€LÜ”S˜“_Ð'7Õ7¸,ÕFÓG€JÜ$ VÓ,€LÜ×FÒFØ¨
óÐô Ð)Õ8¸>ÕIÓJ€Fä×ÒÜ�Š˜ÓØØ�‰ØØØØØ�‰ØØôð €Mr    c          
      óˆ   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\        RR/# ©r…   Údevicer  ÚinputÚ
framecountrŽ   Nr  )r’   s   "r!   r”   r”     sG   € ÷ Fñ FÜ�I‰IðFÜ"Ÿy™yðFÜ14·±ðFÜHKðFà	ñFr    c                 ó    € V^ 8:  g   V P                   '       g   R# \        P                  ! V P                   4      pVP                  WW#4       R# r  )rB  r   rC  Ú_data_callback)r/  r  r0  r1  Úcallback_devices   &&&& r!   Ú_internal_data_callbackr5    s=   € ð �Q„˜f×.×.Ð.ÙÜ—o’o f×&6Ñ&6Ó7€OØ×"Ñ" 6°5ÖEr    c                ó<   € V ^8„  d   QhR\         P                  RR/# ©r…   r/  rŽ   N©r   r  )r’   s   "r!   r”   r”     s   € ÷ +ñ +¤C§I¡Ið +°$ñ +r    c                 ó�   € V P                   '       g   R # \        P                  ! V P                   4      pVP                  V 4       R # r—   )rB  r   rC  Ú_stop_callback)r/  r4  s   & r!   Ú_internal_stop_callbackr;    s3   € à××ÐÙÜ—o’o f×&6Ñ&6Ó7€OØ×"Ñ" 6Ö*r    c                   óÆ   a € ] tR tRt o V 3R lR ltV 3R lR ltR tR tV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR lt]P                  R3V 3R lR lltRtV tR# )ÚAbstractDevicei  c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   ÚAbstractDevice.__annotate__  s   ø€ ÷ .ñ .˜$ñ .r    c                óf   € R V n         RV n        R V n        \        P                  ! R4      V n        R # )NFzma_device *)Úcallback_generatorÚrunningÚstop_callbackr   rñ   Ú_devicer¯   s   &r!   r    ÚAbstractDevice.__init__  s)   € Ø"&ˆÔØˆŒØ!ˆÔÜ—w’w˜}Ó-ˆŽr    c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   r?  %  s   ø€ ÷ ñ ˜ñ r    c                ó&   € V P                  4        R # r—   r�  r¯   s   &r!   r  ÚAbstractDevice.__del__%  r”  r    c                ó   € V # r—   r   r¯   s   &r!   rˆ  ÚAbstractDevice.__enter__(  rŠ  r    c                ó&   € V P                  4        R # r—   r�  rŽ  s   &&&&r!   r’  ÚAbstractDevice.__exit__+  r”  r    c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r…   rA  rŽ   N)ÚGeneratorTypes)r’   r“   s   "€r!   r”   r?  .  s   ø€ ÷ ñ ©ð ¸4ñ r    c                óÜ   € V P                   '       d   \        R4      hWn         \        P                  ! V P                  4      pV\        P
                  8w  d   \        RV4      hRV n        R# )z[Start playback or capture, using the given callback generator (should already been started)z%can't start an already started devicezfailed to start audio deviceTN)rA  rÂ   r   Úma_device_startrD  rë  rB  )rŸ   rA  r$  s   && r!   r½  ÚAbstractDevice.start.  sW   € à×"×"Ð"Ü Ð!HÓIÐIð #5ÔÜ×$Ò$ T§\¡\Ó2ˆØ”S—^‘^Ô#Ü Ð!?ÀÓHÐHØˆŽr    c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   r?  ;  s   ø€ ÷ ñ �dñ r    c                óÈ   € RV n         V P                  '       dB   \        P                  ! V P                  4      pV\        P
                  8w  d   \        RV4      hRV n        R# )zHalt playback or capture.Nzfailed to stop audio deviceF)rA  rB  r   Úma_device_stoprD  rë  rÂ   )rŸ   r$  s   & r!   ÚstopÚAbstractDevice.stop;  sH   € à"&ˆÔØ�<�<ˆ<Ü×'Ò'¨¯©Ó5ˆFØœŸ™Ô'Ü$Ð%BÀFÓKÐKØˆŽr    c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   r?  D  s   ø€ ÷ "ñ "�tñ "r    c                óÂ   €  V P                  4        V P                  e(   \        P                  ! V P                  4       RV n        RV n        R#   \         d     LKi ; i)z‚
Halt playback or capture and close down the device.
If you use the device as a context manager, it will be closed automatically.
N)rV  rÂ   rD  r   Úma_device_uninitrC  r¯   s   &r!   rƒ  ÚAbstractDevice.closeD  sQ   € ð
	Ø�I‰IŒKð �<‰<Ò#Ü× Ò  §¡Ô.ØˆDŒLØ!ˆÖøô ô 	Ùð	ús   ‚A ÁAÁAc                ó8   <€ V ^8„  d   QhRS[ P                  RR/# r7  r8  )r’   r“   s   "€r!   r”   r?  R  s   ø€ ÷ +ñ +¡S§Y¡Yð +°4ñ +r    c                ój   € V P                   '       d!   RV n        V P                  4        RV n        R# R# )zlCalled when the device is stopped (i.e. device disconnect or manual stop) Doesn't work consistently however.FN)rC  rB  rA  )rŸ   r/  s   &&r!   r:  ÚAbstractDevice._stop_callbackR  s.   € à××ÐØ ˆDŒLØ×ÑÔ Ø&*ˆDÖ#ñ r    r   c                óV   <€ V ^8„  d   QhRS[ S[,          RS[RS[RS[P
                  /# )r…   râ  Úthread_prioÚapp_namerŽ   )r   rJ   rj   r�   r   r  )r’   r“   s   "€r!   r”   r?  Y  s;   ø€ ÷ ñ á‘w•-ðñ $ðñ ð	ñ
 
�‰ñr    c                ót  € \         P                  ! 4       pVP                  Vn        \        P
                  ! R 4      pV'       dt   VP                  4       V n        \        P                  ! V P                  4      VP                  n
        \        P                  ! V P                  4      VP                  n        V'       d�   \        P
                  ! R\        V4      4      p\        V4       F  w  rxVP                  Wg&   K  	  \         P                  ! V\        V4      \        P                   ! V4      V4      p	V	\         P"                  8w  d   \%        RV	4      h V# \         P                  ! \        P&                  ^ \        P                   ! V4      V4      p	V	\         P"                  8w  d   \%        RV	4      hV# )rå  ræ  rç  )r   Úma_context_config_initrš   ÚthreadPriorityr   rñ   rÅ  Ú_context_app_namer!  ÚpulseÚpApplicationNameÚjackÚpClientNamer»   ré  rê  r  rë  rÂ   rh   )
rŸ   râ  r`  ra  Úcontext_configrî  rï  rð  rñ  r$  s
   &&&&      r!   Ú_make_contextÚAbstractDevice._make_contextY  sI  € ô ×3Ò3Ó5ˆØ(3×(9Ñ(9ˆÔ%Ü—'’'˜-Ó(ˆßØ%-§_¡_Ó%6ˆDÔ"Ü47·O²OØ×&Ñ&ó5ˆN× Ñ Ô1ô /2¯oªo¸d×>TÑ>TÓ.UˆN×ÑÔ+ßäŸ7š7 >´3°x³=ÓAˆLÜ! (Ö+‘�Ø"#§'¡'�“ñ ,ä×(Ò(Øœc (›m¬S¯]ª]¸>Ó-JÈGóˆFð œŸ™Ô'Ü$Ð%:¸FÓCÐCð (ð ˆô ×(Ò(Ü—‘˜!œSŸ]š]¨>Ó:¸GóˆFð œŸ™Ô'Ü$Ð%:¸FÓCÐCØˆr    )re  rD  rA  rB  rC  N)r   r   r   r   r    r  rˆ  r’  r½  rV  rƒ  r:  rj   rv   rk  r   r²   r³   s   @r!   r=  r=    sh   ø‡ € ÷.ð .÷ð òò÷ð ÷ð ÷"ð "÷+ð +ð '5×&<Ñ&<Ø÷	÷ ð r    r=  c            	       óª   a a€ ] tR tRt oRt]P                  ^R^ÈR^ R]P                  R3	V3R lV 3R lllt	V3R lV 3R	 llt
V3R
 lR ltRtVtV ;t# )ÚCaptureDevicei{  zEAn audio device provided by miniaudio, for audio capture (recording).r,  Nr   c                óœ   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[S[P                  R3,          RS[RS[S[S[,          ,          R	S[R
S[	RR/
# )r…   Úinput_formatrˆ   r‰   Úbuffersize_msecÚ	device_idNÚcallback_periodsrâ  r`  ra  rŽ   ©
r#   r�   r   r   r  r   r   rJ   rj   r�   )r’   r“   s   "€r!   r”   ÚCaptureDevice.__annotate__~  s…   ø€ ÷ )ñ )á"ð)ñ ð)ñ ð	)ñ
 ð)ñ ™Ÿ™ D˜Õ)ð)ñ ð)ñ ™4¡�=Õ)ð)ñ $ð)ñ ð)ð 
ñ)r    c
                óÚ  <€ \         SV `  4        Wn        \        V4      V n        W n        W0n        W@n        \        P                  ! V 4      V n
        \        P                  ! \        P                  4      V n        V P                  V P                  n        V P
                  V P                  P                   n        V P                  P$                  V P                  P                   n        T;'       g    \        P&                  V P                  P                   n        V P                  V P                  n        V P                  V P                  n        \        P.                  V P                  n        \        P2                  V P                  n        W`P                  n        R V n        T P;                  T;'       g    . W‰4      V n        \        P>                  ! V P<                  \        P@                  ! V P                  4      V PB                  4      p
V
\        PD                  8w  d   \G        RV
4      hV PB                  PH                  PJ                  \        PL                  8X  d)   V'       d!   \N        P&                  V9  d   \G        R4      h\        PP                  ! \        PR                  ! V PB                  PH                  PJ                  4      4      PU                  4       V n%        R # ©Nzfailed to init devicezno suitable audio backend found)+r¼   r    r’   r�   rž   rˆ   r‰   rq  r   rû  Ú_ffi_handler   Úma_device_config_initr3   Ú
_devconfigr1  Úcapturerö   rš   rh   Ú	pDeviceIDÚperiodSizeInMillisecondsrB  r5  ÚdataCallbackr;  ÚstopCallbackÚperiodsrA  rk  rè  Úma_device_initr  rD  rë  rÂ   ÚpContextrí  rg   rJ   r˜   rì  r›   )rŸ   rp  rˆ   r‰   rq  rr  rs  râ  r`  ra  r$  r©   s   &&&&&&&&&& €r!   r    ÚCaptureDevice.__init__~  sê  ø€ ô 	‰ÑÔØ"ŒÜ-¨lÓ;ˆÔØ"ŒØ&ÔØ.ÔÜŸ>š>¨$Ó/ˆÔÜ×3Ò3´C×4NÑ4NÓOˆŒØ%)×%5Ñ%5ˆ�‰Ô"Ø+/¯>©>ˆ�‰×ÑÔ(Ø)-¯©×):Ñ):ˆ�‰×ÑÔ&Ø,5×,AÐ,A¼¿¹ˆ�‰×ÑÔ)Ø37×3GÑ3Gˆ�‰Ô0Ø$(×$4Ñ$4ˆ�‰Ô!Ü'*×'BÑ'Bˆ�‰Ô$Ü'*×'BÑ'Bˆ�‰Ô$Ø"2�‰ÔØ"&ˆÔØ×*Ñ*¨8¯>¨>°r¸;ÓQˆŒÜ×#Ò#Ø�M‰Mœ3Ÿ=š=¨¯©Ó9¸4¿<¹<ó
ˆð ”S—^‘^Ô#Ü Ð!8¸&ÓAÐAØ�<‰<× Ñ ×(Ñ(¬C×,?Ñ,?Ô?ßœGŸL™L°Ô8Ü$Ð%FÓGÐGÜ—z’zÜ×#Ò# D§L¡L×$9Ñ$9×$AÑ$AÓBó
ç
‰&‹(ð 	Žr    c                ó$   <€ V ^8„  d   QhRS[ RR/# rN  )ÚCaptureCallbackGeneratorType)r’   r“   s   "€r!   r”   ru  ©  s   ø€ ÷ 1ñ 1Ñ(Dð 1Èñ 1r    c                ó"   <€ \         SV `  V4      # )z§Start the audio device: capture (recording) begins.
The recorded audio data is sent to the given callback generator as raw bytes.
(it should already be started before)©r¼   r½  ©rŸ   rA  r©   s   &&€r!   r½  ÚCaptureDevice.start©  s   ø€ ô ‰w‰}Ð/Ó0Ð0r    c          
      ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[RR/# r.  r  )r’   r“   s   "€r!   r”   ru  ¯  sA   ø€ ÷ ñ Ù—i‘iðÙ),¯©ðÙ;>¿9¹9ðÙRUðà	ñr    c                óH  € V P                   '       de   V P                  V P                  ,          V,          p\        V4      p\        P
                  ! WcV4        V P                   P                  V4       R # R #   \         d    R T n          R # \         d
    R T n         h i ; ir—   )	rA  rž   rˆ   r  r   r  r  r	  rF  )rŸ   r/  r  r0  r1  Úbuffer_sizerý   s   &&&&&  r!   r3  ÚCaptureDevice._data_callback¯  sŽ   € ð ×"×"Ð"Ø×+Ñ+¨d¯n©nÕ<¸zÕIˆKÜ˜[Ó)ˆDÜ�KŠK˜ [Ô1ðØ×'Ñ'×,Ñ,¨TÖ2ñ #øô !ô Ø*.�Ô'ÚÜô Ø*.�Ô'Øðús   ÁA9 Á9B!ÂB!Â
B!©
rè  rz  rx  rí  rq  rA  r’   rˆ   r‰   rž   ©r   r   r   r   r   r#   r(   rj   rv   r    r½  r3  r   r²   r¿   rÀ   s   @@r!   rn  rn  {  sU   ù‡ € ÙOð &2×%:Ñ%:ØØ Ø"Ø,0Ø !Ø,0Ø&4×&<Ñ&<Ø÷)õ )÷V1ó 1÷÷ ð r    rn  c            	       óª   a a€ ] tR tRt oRt]P                  ^R^ÈR^ R]P                  R3	V3R lV 3R lllt	V3R lV 3R	 llt
V3R
 lR ltRtVtV ;t# )ÚPlaybackDeviceiÀ  z:An audio device provided by miniaudio, for audio playback.r,  Nr   c                óœ   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[S[P                  R3,          RS[RS[S[S[,          ,          R	S[R
S[	RR/
# )r…   r.  rˆ   r‰   rq  rr  Nrs  râ  r`  ra  rŽ   rt  )r’   r“   s   "€r!   r”   ÚPlaybackDevice.__annotate__Ã  s…   ø€ ÷ *ñ *á#ð*ñ ð*ñ ð	*ñ
 ð*ñ ™Ÿ™ D˜Õ)ð*ñ ð*ñ ™4¡�=Õ)ð*ñ $ð*ñ ð*ð 
ñ*r    c
                óÚ  <€ \         SV `  4        Wn        \        V4      V n        W n        W0n        W@n        \        P                  ! V 4      V n
        \        P                  ! \        P                  4      V n        V P                  V P                  n        V P
                  V P                  P                   n        V P                  P$                  V P                  P                   n        T;'       g    \        P&                  V P                  P                   n        V P                  V P                  n        V P                  V P                  n        \        P.                  V P                  n        \        P2                  V P                  n        W`P                  n        R V n        T P;                  T;'       g    . W‰4      V n        \        P>                  ! V P<                  \        P@                  ! V P                  4      V PB                  4      p
V
\        PD                  8w  d   \G        RV
4      hV PB                  PH                  PJ                  \        PL                  8X  d)   V'       d!   \N        P&                  V9  d   \G        R4      h\        PP                  ! \        PR                  ! V PB                  PH                  PJ                  4      4      PU                  4       V n%        R # rw  )+r¼   r    r’   r�   rž   rˆ   r‰   rq  r   rû  rx  r   ry  r1   rz  r1  Úplaybackrö   rš   rh   r|  r}  rB  r5  r~  r;  r  r€  rA  rk  rè  r�  r  rD  rë  rÂ   r‚  rí  rg   rJ   r˜   rì  r›   )rŸ   r.  rˆ   r‰   rq  rr  rs  râ  r`  ra  r$  r©   s   &&&&&&&&&& €r!   r    ÚPlaybackDevice.__init__Ã  sê  ø€ ô 	‰ÑÔØ#ŒÜ-¨mÓ<ˆÔØ"ŒØ&ÔØ.ÔÜŸ>š>¨$Ó/ˆÔÜ×3Ò3´C×4OÑ4OÓPˆŒØ%)×%5Ñ%5ˆ�‰Ô"Ø,0¯N©Nˆ�‰× Ñ Ô)Ø*.¯+©+×*;Ñ*;ˆ�‰× Ñ Ô'Ø-6×-BÐ-B¼#¿(¹(ˆ�‰× Ñ Ô*Ø37×3GÑ3Gˆ�‰Ô0Ø$(×$4Ñ$4ˆ�‰Ô!Ü'*×'BÑ'Bˆ�‰Ô$Ü'*×'BÑ'Bˆ�‰Ô$Ø"2�‰ÔØ"&ˆÔà×*Ñ*¨8¯>¨>°r¸;ÓQˆŒÜ×#Ò#Ø�M‰Mœ3Ÿ=š=¨¯©Ó9¸4¿<¹<ó
ˆð ”S—^‘^Ô#Ü Ð!8¸&ÓAÐAØ�<‰<× Ñ ×(Ñ(¬C×,?Ñ,?Ô?ßœGŸL™L°Ô8Ü$Ð%FÓGÐGÜ—z’zÜ×#Ò# D§L¡L×$9Ñ$9×$AÑ$AÓBó
ç
‰&‹(ð 	Žr    c                ó$   <€ V ^8„  d   QhRS[ RR/# rN  rg  )r’   r“   s   "€r!   r”   r“  ï  s   ø€ ÷ 1ñ 1Ñ(Eð 1È$ñ 1r    c                ó"   <€ \         SV `  V4      # )a^  Start the audio device: playback begins. The audio data is provided by the given callback generator.
The generator gets sent the required number of frames and should yield the sample data
as raw bytes, a memoryview, an array.array, or as a numpy array with shape (numframes, numchannels).
The generator should already be started before passing it in.r‡  rˆ  s   &&€r!   r½  ÚPlaybackDevice.startï  ó   ø€ ô
 ‰w‰}Ð/Ó0Ð0r    c          
      ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[RR/# r.  r  )r’   r“   s   "€r!   r”   r“  ö  sH   ø€ ÷ Gñ GÙ—i‘iðGÙ),¯©ðGÙ;>¿9¹9ðGÙRUðGà	ñGr    c                ó¬  € V P                   '       d—    V P                   P                  V4      p\	        T4      pT'       df   \        T4      Y@P                  ,          T P                  ,          8”  d   R T n         \        R4      h\        P                  ! Y&\        T4      4       R # R # R #   \         d    R T n          R # \         d
    R T n         h i ; i)Nz.number of frames from callback exceeds maximum)rA  r  r	  rF  Ú_bytes_from_generator_samplesr»   rž   rˆ   rÂ   r   r  )rŸ   r/  r  r0  r1  r·   Úsamples_bytess   &&&&&  r!   r3  ÚPlaybackDevice._data_callbackö  s¿   € ð ×"×"Ð"ðØ×1Ñ1×6Ñ6°zÓB�ô :¸'ÓBˆMßÜ�}Ó%¨
×5FÑ5FÕ(FÈÏÉÕ(WÔWØ.2�DÔ+Ü(ØHóð ô —’˜F´3°}Ó3EÖFñ ñ #øô !ô Ø*.�Ô'ÚÜô Ø*.�Ô'Øðús   ”B+ Â+CÃ CÃ	
CrŽ  r�  rÀ   s   @@r!   r‘  r‘  À  sX   ù‡ € ÙDð '3×&;Ñ&;ØØ Ø"Ø,0Ø !Ø,0Ø&4×&<Ñ&<Ø÷*õ *÷X1ó 1÷G÷ Gð Gr    r‘  c                   óÄ   a a€ ] tR tRt oRt]P                  ^]P                  ^R^ÈRR^ R]P                  R3V3R lV 3R lllt	V3R lV 3R	 llt
V3R
 lR ltRtVtV ;t# )ÚDuplexStreami  z-Joins a capture device and a playback device.r,  Nr   c                óÖ   <€ V ^8„  d   QhRS[ RS[RS[ RS[RS[RS[RS[S[P                  R3,          R	S[S[P                  R3,          R
S[RS[S[S[,          ,          RS[RS[	RR/# )r…   Úplayback_formatÚplayback_channelsÚcapture_formatÚcapture_channelsr‰   rq  Úplayback_device_idNÚcapture_device_idrs  râ  r`  ra  rŽ   rt  )r’   r“   s   "€r!   r”   ÚDuplexStream.__annotate__  s°   ø€ ÷ 1ñ 1á%ð1ñ ð1ñ %ð	1ñ
 ð1ñ ð1ñ ð1ñ "¡#§)¡)¨T /Õ2ð1ñ !¡§¡¨D Õ1ð1ñ ð1ñ ™4¡�=Õ)ð1ñ $ð1ñ ð1ð 
ñ1r    c                ó   <€ \         SV `  4        W0n        Wn        \	        V4      V n        W@n        W n        WPn        W`n	        \        P                  ! V 4      V n        \        P                  ! \        P                  4      V n        V P                  V P                   n        V P                  V P                   P$                  n        V P                  P(                  V P                   P$                  n        T;'       g    \        P,                  V P                   P$                  n        V P                  V P                   P0                  n        V P                  P(                  V P                   P0                  n        T;'       g    \        P,                  V P                   P0                  n        V P                  V P                   n        V P                  V P                   n        \        P6                  V P                   n        \        P:                  V P                   n        W�P                   n        R V n         T PC                  T
;'       g    . W¼4      V n"        \        PF                  ! V PD                  \        PH                  ! V P                   4      V PJ                  4      pV\        PL                  8w  d   \O        RV4      hV PJ                  PP                  PR                  \        PT                  8X  d)   V
'       d!   \V        P,                  V
9  d   \O        R4      h\        PX                  ! \        PZ                  ! V PJ                  PP                  PR                  4      4      P]                  4       V n)        R # rw  )/r¼   r    r¥  r£  r�   rž   r¦  r¤  r‰   rq  r   rû  rx  r   ry  r5   rz  r1  r•  rö   rš   r’   rh   r|  r{  r}  rB  r5  r~  r;  r  r€  rA  rk  rè  r�  r  rD  rë  rÂ   r‚  rí  rg   rJ   r˜   rì  r›   )rŸ   r£  r¤  r¥  r¦  r‰   rq  r§  r¨  rs  râ  r`  ra  r$  r©   s   &&&&&&&&&&&&& €r!   r    ÚDuplexStream.__init__  sP  ø€ ô 	‰ÑÔØ,ÔØ.ÔÜ-¨nÓ=ˆÔØ 0ÔØ!2ÔØ&ÔØ.ÔÜŸ>š>¨$Ó/ˆÔÜ×3Ò3´C×4MÑ4MÓNˆŒØ%)×%5Ñ%5ˆ�‰Ô"Ø,0×,BÑ,Bˆ�‰× Ñ Ô)Ø*.×*>Ñ*>×*DÑ*Dˆ�‰× Ñ Ô'Ø-?×-KÐ-KÄ3Ç8Á8ˆ�‰× Ñ Ô*Ø+/×+@Ñ+@ˆ�‰×ÑÔ(Ø)-×)<Ñ)<×)BÑ)Bˆ�‰×ÑÔ&Ø,=×,IÐ,IÄÇÁˆ�‰×ÑÔ)Ø37×3GÑ3Gˆ�‰Ô0Ø$(×$4Ñ$4ˆ�‰Ô!Ü'*×'BÑ'Bˆ�‰Ô$Ü'*×'BÑ'Bˆ�‰Ô$Ø"2�‰ÔØ"&ˆÔØ×*Ñ*¨8¯>¨>°r¸;ÓQˆŒÜ×#Ò#Ø�M‰Mœ3Ÿ=š=¨¯©Ó9¸4¿<¹<ó
ˆð ”S—^‘^Ô#Ü Ð!8¸&ÓAÐAØ�<‰<× Ñ ×(Ñ(¬C×,?Ñ,?Ô?ßœGŸL™L°Ô8Ü$Ð%FÓGÐGÜ—z’zÜ×#Ò# D§L¡L×$9Ñ$9×$AÑ$AÓBó
ç
‰&‹(ð 	Žr    c                ó$   <€ V ^8„  d   QhRS[ RR/# rN  )ÚDuplexCallbackGeneratorType)r’   r“   s   "€r!   r”   r©  B  s   ø€ ÷ 1ñ 1Ñ(Cð 1Èñ 1r    c                ó"   <€ \         SV `  V4      # )zèStart the audio device: playback and capture begin.
The audio data for playback is provided by the given callback generator, which is sent the
recorded audio data at the same time.
(it should already be started before passing it in)r‡  rˆ  s   &&€r!   r½  ÚDuplexStream.startB  rš  r    c          
      ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[RR/# r.  r  )r’   r“   s   "€r!   r”   r©  I  sH   ø€ ÷ Gñ GÙ—i‘iðGÙ),¯©ðGÙ;>¿9¹9ðGÙRUðGà	ñGr    c                ó²  € V P                   V P                  ,          V,          p\        V4      p\        P                  ! WcV4       V P
                  '       dT    V P
                  P                  V4      pT'       d.   \        T4      p\        P                  ! Y(\        T4      4       R # R # R #   \         d    R T n         R # \         d
    R T n        h i ; ir—   )rž   r¦  r  r   r  rA  r  r	  rF  r�  r»   )	rŸ   r/  r  r0  r1  rŒ  Úin_dataÚout_datarž  s	   &&&&&    r!   r3  ÚDuplexStream._data_callbackI  s¹   € ð ×'Ñ'¨$×*?Ñ*?Õ?À*ÕLˆÜ˜KÓ(ˆÜ�Š�G KÔ0Ø×"×"Ð"ðØ×2Ñ2×7Ñ7¸Ó@�÷ Ü =¸hÓ G�Ü—’˜F´3°}Ó3EÖFñ ñ #øô !ô Ø*.�Ô'ÚÜô Ø*.�Ô'Øðús   ÁB. Â.CÃCÃ
C)rè  rz  rx  rí  rq  rA  r¦  r¥  r¤  r£  r‰   rž   r�  rÀ   s   @@r!   r¡  r¡    sg   ù‡ € Ù7ð )5×(=Ñ(=Ø!"Ø'3×'<Ñ'<Ø !Ø Ø"Ø59Ø48Ø !Ø,0Ø&4×&<Ñ&<Ø÷1õ 1÷f1ó 1÷G÷ Gð Gr    r¡  c                óp   € V ^8„  d   QhR\         \        P                  \        \        3,          R\        /# )r…   r·   rŽ   )r   r¸   rc  rÿ   )r’   s   "r!   r”   r”   ]  s,   € ÷ 
ñ 
Ü”5—;‘;¤
¬EÐ1Õ2ð
ä
ñ
r    c                 ób  € \        V \        P                  4      '       d   \        V 4      P                  R 4      # \        V \        4      '       d#   V P                  ^8w  d   V P                  R 4      # \
        '       d1   \        V \
        P                  4      '       d   V P                  4       # V # )ÚB)Ú
isinstancer¸   rc  r  rÐ  ÚnumpyÚndarrayrÊ  r¾   s   &r!   r�  r�  ]  s{   € ô �'œ5Ÿ;™;×'Ò'Ü˜'Ó"×'Ñ'¨Ó,Ð,Ü	�GœZ×	(Ò	(¨W×-=Ñ-=ÀÔ-BØ�|‰|˜CÓ Ð ß	‹”:˜g¤u§}¡}×5Ò5Ø�‰Ó Ð Ø€Nr    c                   óx   a € ] tR tRt o RtRV 3R lR llt]P                  3V 3R lR lltV 3R lR lt	R	t
V tR
# )ÚWavFileReadStreamij  zaAn IO stream that reads as a .wav file, and which gets its pcm samples from the provided producerc                ó<   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[RR/# )r…   Úpcm_sample_genr‰   rˆ   r.  Ú
max_framesrŽ   N)rd  r�   r#   )r’   r“   s   "€r!   r”   ÚWavFileReadStream.__annotate__m  sG   ø€ ÷ ".ñ ".á5ð".ñ ð".ñ ð	".ñ
 $ð".ñ ð".ð 
ñ".r    c                óÈ  € Wn         W n        W0n        W@n        WPn        \        V4      V n        WS,          V P                  ,          ;'       g    \        P                  V n	        ^ V n
        \        P                  ! R4      p\        P                  Vn        \        P                   Vn        W6n        W&n        V P                  ^,          Vn        \        P                  ! R4      p\        P                  ! R4      p\        P                  ! R4      p	V^ 8”  d/   \        P(                  ! W—W†WS,          \        P*                  4       M&\        P,                  ! W—W†\        P*                  4       \        P.                  ! V	4       \1        \        P2                  ! V^ ,          V^ ,          4      4      V n        \        P6                  ! V^ ,          \        P*                  4       R# )r  rÁ  zvoid**úsize_t *r’  N)Ú
sample_genr‰   rˆ   r’   r¿  r�   rž   r+  ÚmaxsizeÚ	max_bytesÚ
bytes_doner   rñ   r   rÂ  rÃ  rÄ  rö   r1  r2  Ú&ma_dr_wav_init_memory_write_sequentialrh   Úma_dr_wav_init_memory_writer—  rÿ   r  Úbufferedr£  )
rŸ   r¾  r‰   rˆ   r.  r¿  rË  rý   ÚdatasizerÌ  s
   &&&&&&    r!   r    ÚWavFileReadStream.__init__m  sE  € ð )ŒØ&ÔØ"ŒØ#ŒØ$ŒÜ-¨mÓ<ˆÔØ$Õ0°4×3DÑ3DÕD×TÐTÌÏÉˆŒØˆŒä�gŠgÐ.Ó/ˆÜ×4Ñ4ˆŒÜ×.Ñ.ˆŒ
Ø ŒØ$ŒØ ×-Ñ-°Õ1ˆÔÜ�wŠw�xÓ ˆÜ—7’7˜:Ó&ˆÜ�wŠw�|Ó$ˆØ˜Œ>Ü×6Ò6Ø˜H¨:Õ+AÄ3Ç8Á8õô ×+Ò+¨D¸ÄsÇxÁxÔPÜ×Ò˜TÔ"ÜœcŸjšj¨¨a­°(¸1µ+Ó>Ó?ˆŒÜ×Ò˜4 �7¤C§H¡HÖ-r    c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r…   ÚamountrŽ   )r�   r   rÿ   )r’   r“   s   "€r!   r”   rÀ  ‘  s   ø€ ÷ ñ ™3ð ±¹%µñ r    c                óä  € V P                   V P                  8¼  g   V P                  '       g   R# \        V P                  4      V8  d;    \        V P                  4      pV ;P                  \        V4      ,          un        KT  V P                  RV pV P                  VR V n        V ;P                   \        V4      ,          un         V#   \         d    \        P                  T n          Kj  i ; i)z3Read up to the given amount of bytes from the file.r    N)
rÆ  rÅ  rÃ  r»   rÉ  rY  r�  r	  r+  rÄ  )rŸ   rÍ  r·   r$  s   &&  r!   rw  ÚWavFileReadStream.read‘  s°   € à�?‰?˜dŸn™nÔ,°D·O·O°OÙÜ�$—-‘-Ó  6Ô)ðHÜ˜tŸ™Ó/�ð
 —’Ô!>¸wÓ!GÕG—Ø—‘˜w Ð'ˆØŸ™ f gÐ.ˆŒØ�Šœ3˜v›;Õ&�Øˆøô !ô Ü"%§+¡+�”Úðús   ÁC Ã C/Ã.C/c                ó   <€ V ^8„  d   QhRR/# r€  r   )r’   r“   s   "€r!   r”   rÀ  ¢  r�  r    c                ó   € R# )zClose the fileNr   r¯   s   &r!   rƒ  ÚWavFileReadStream.close¢  r…  r    )	rÉ  rÆ  r’   rÅ  r¿  rˆ   rÃ  r‰   rž   Nr  )r   r   r   r   r   r    r+  rÄ  rw  rƒ  r   r²   r³   s   @r!   r¼  r¼  j  s0   ø‡ € Ùk÷".ò ".ðH "%§¡÷ ò ÷"ö r    r¼  c                ó$   € V ^8„  d   QhR\         /# r£   r¤   )r’   s   "r!   r”   r”   ª  s   € ÷ 8ñ 8”Sñ 8r    c                 óp   € \         P                  ! \        P                  ! 4       4      P	                  4       # )z@Returns the version string of the underlying miniaudio C library)r   r˜   r   Úma_version_stringr›   r   r    r!   Úlib_versionrÖ  ª  s#   € ä�:Š:”c×+Ò+Ó-Ó.×5Ñ5Ó7Ð7r    c                ó0   € V ^8„  d   QhR\         R\        /# ©r…   rí  rŽ   ©rJ   rÜ   )r’   s   "r!   r”   r”   ¯  s   € ÷ :ñ :¤ð :¬Dñ :r    c                óT   € \        \        P                  ! V P                  4      4      # )z~Determines whether or not the given backend is available by the compilation environment for the underlying miniaudio C library)rÜ   r   Úma_is_backend_enabledrš   ©rí  s   &r!   Úis_backend_enabledrÝ  ¯  s   € ä”×)Ò)¨'¯-©-Ó8Ó9Ð9r    c                ó:   € V ^8„  d   QhR\         \        ,          /# r£   )r   rJ   )r’   s   "r!   r”   r”   ´  s   € ÷ ?ñ ?œc¤'�lñ ?r    c                 ó°  € \         P                  ! R4      ;_uu_ 4       p \         P                  ! R4      ;_uu_ 4       p\        P                  ! V^V 4      pV\        P                  8w  d   \        R4      h\        R V^ V ^ ,            4       4      uuRRR4       uuRRR4       #   + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zkReturns the set of available backends by the compilation environment for the underlying miniaudio C libraryrÂ  zma_backend[30]z can't determine enabled backendsc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir—   )rJ   )Ú.0rñ  s   & r!   Ú	<genexpr>Ú'get_enabled_backends.<locals>.<genexpr>º  s   é € Ð>Ñ'= !”7˜1—:�:Ó'=ùs   ‚N)r   rñ   r   Úma_get_enabled_backendsrë  rÂ   Úset)Úcountrâ  r$  s      r!   Úget_enabled_backendsrç  ´  sŒ   € ä	�Š�×	Ô	 ¤s§w¢wÐ/?×'@Ô'@ÀHÜ×,Ò,¨X°r¸5ÓAˆØ”S—^‘^Ô#Ü Ð!CÓDÐDÜÑ> x°°E¸!µHÑ'=Ó>Ó>÷	 (AÑ'@×	Ò	×'@×'@ú×	×	×	Ò	ús#   ŸC¾AB'	Â
CÂ'B7Â2CÃC	c                ó0   € V ^8„  d   QhR\         R\        /# rØ  rÙ  )r’   s   "r!   r”   r”   ½  s   € ÷ =ñ =¤7ð =¬tñ =r    c                óT   € \        \        P                  ! V P                  4      4      # )z@Determines whether or not loopback mode is support by a backend.)rÜ   r   Úma_is_loopback_supportedrš   rÜ  s   &r!   Úis_loopback_supportedrë  ½  s   € ä”×,Ò,¨W¯]©]Ó;Ó<Ð<r    )Fr  )r_  r  r—   )r  )NNN)zr   Ú__version__r–  r+  rÐ   Úior¸   Úurllib.requestrµ  ÚinspectrÈ  rë  r±  Úenumr   Útypingr   r   r   r   r   r   r	   r
   Ú
_miniaudior   r   r¹  ÚImportErrorÚinit_miniaudior   r#   r0   r8   r@   rJ   rj   r{   rÿ   r  r�   rd  r…  r­  rO  rƒ   rµ   rF  rÂ   rÅ   rÙ   rë   rÔ   r  rÞ   r  r'  rÖ   r9  râ   rá   rã   rS  rY  r]  rh  rÕ   rs  rà   rß   r…  r‰  rŽ  r×   r�  rå   rä   ræ   r¯  r´  r¸  r½  rÎ  r  rð   r-  rà  r�   r)  r3  r(   r:   r9  r›   rP  r\  r`  ro  ÚABCrq  r™  r   r   r  Ú
def_externrþ  rÿ  r"  r,  r5  r;  r=  rn  r‘  r¡  r�  Ú	RawIOBaser¼  rÖ  rÝ  rç  rë  r   r    r!   Ú<module>rø     sÿ  ðñð €ó Û 
Û 	Û 	Û Û Û Û Û Û Ý ß M× MÓ Mß ðÛð × Ò Ô ô+�ô +ô �4ô  ô'�ô 'ô+�ô +ô.�Tô .ôˆdô ô(
-�Tô 
-ô!�ô !ð �5˜%Ÿ+™+Ð%Õ&€
Ø )¨*°c¸4Ð*?Õ @Ð Ø(¨¨z¸4Ð)?Õ@Ð Ø'¨
°JÀÐ(DÕEÐ ØØ!Ø Øð!õ€÷)ñ )ôX�}ô ô2	�Yô 	ô	�.ô 	õ1÷51õp)õ0)õ. õ, ÷*,)õ^#õ4#õ*2õ,2õ,2õ,2õ*2õ*2÷*"#õJ&õ6&õ*1õ41õ41õ21÷2#&õL&õ>&õ,1õ,1õ,1õ,1õ*1õ*1÷*$&õN'õ,,õ9õ+÷a-ñ a-õHDõ÷ Gð& #/×"7Ñ"7ØØØ#Ÿ™÷
ð> #/×"7Ñ"7ØØØ#Ÿ™÷
÷88'ðz #/×"7Ñ"7ØØØØ#Ÿ™Ø÷+ð` #/×"7Ñ"7ØØØØ#Ÿ™÷÷D"ôJ�s—w‘wô ô<~Ð$ô ~ðF !+× 2Ñ 2Ø".×"7Ñ"7ØØØØ#Ÿ™Ø÷/÷dðB ‡‚Óôó ðð$ ‡‚Óôó ðð. $Ÿ™÷	õ.ðD ‡‚ÓôFó ðFð ‡‚Óô+ó ð+÷Zñ ZôzB�Nô BôJIG�^ô IGôXNG�>ô NGõb
ô:˜Ÿ™ô :õ@8õ
:õ
?÷=øðEE ô ØƒEðús   ÁO6 Ï6	PÐP