
    3j                     "   S SK r S SKrS SKrS SKrS SKJrJr  S SKJ	r	   " S S\R                  5      r " S S\	5      r " S S	\R                  5      r " S
 S\R                  5      r " S S\R                  5      r " S S\5      rS\4S jrg)    N)ComfyExtensionio)VAEEncodeAudioc                   p    \ rS rSr\S\R                  4S j5       r\S\S\R                  4S j5       r
Srg)LTXVAudioVAELoader	   returnc                     [         R                  " SSS[         R                  R                  S[        R
                  " S5      SS9/[         R                  R                  SS	9/S
9$ )Nr   zLoad LTXV Audio VAEmodel/loaders	ckpt_namecheckpointszAudio VAE checkpoint to load.)optionstooltip	Audio VAEdisplay_namenode_idr   categoryinputsoutputs)r   SchemaComboInputfolder_pathsget_filename_listVaeOutputclss    ;/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_lt_audio.pydefine_schema LTXVAudioVAELoader.define_schema
   sa    yy(.$(::=I;   VV]]]<=
 	
    r   c                 :   [         R                  " SU5      n[        R                  R	                  USS9u  p4[        R                  R                  USSS.SS9n[        R                  R                  X4S9nUR                  5         [        R                  " U5      $ )	Nr   T)return_metadatazautoencoder.vocoder.)z
audio_vae.r'   )filter_keys)sdmetadata)r   get_full_path_or_raisecomfyutilsload_torch_filestate_dict_prefix_replacer)   VAEthrow_exception_if_invalidr   
NodeOutput)r    r   	ckpt_pathr)   r*   vaes         r!   executeLTXVAudioVAELoader.execute   s     77yQ	{{229d2S[[222nbl7m{2  Ahhllbl4&&(}}S!!r$    N)__name__
__module____qualname____firstlineno__classmethodr   r   r"   strr2   r5   __static_attributes__r7   r$   r!   r   r   	   sE    
bii 
 
 " " " "r$   r   c                   z   ^  \ rS rSr\S\R                  4S j5       r\S\R                  4U 4S jj5       r	Sr
U =r$ )LTXVAudioVAEEncode%   r	   c                     [         R                  " SSS[         R                  R                  SSS9[         R                  R                  SSS	S
9/[         R
                  R                  SS9/S9$ )Nr@   zLTXV Audio VAE Encodemodel/latent/ltxvaudiozThe audio to be encoded.r   	audio_vaer   z(The Audio VAE model to use for encoding.idr   r   zAudio Latentr   r   )r   r   Audior   r   Latentr   r   s    r!   r"    LTXVAudioVAEEncode.define_schema&   sn    yy(0(w0JK"!,F   YY%%>%BC
 	
r$   c                 "   > [         TU ]  X!5      $ N)superr5   )r    rD   rF   	__class__s      r!   r5   LTXVAudioVAEEncode.execute7   s    wy00r$   r7   )r8   r9   r:   r;   r<   r   r   r"   r2   r5   r>   __classcell__)rO   s   @r!   r@   r@   %   s?    
bii 
 
  1"-- 1 1r$   r@   c                   l    \ rS rSr\S\R                  4S j5       r\S\R                  4S j5       r	Sr
g)LTXVAudioVAEDecode<   r	   c                     [         R                  " SSS[         R                  R                  SSS9[         R                  R                  SSS	S
9/[         R
                  R                  SS9/S9$ )NrS   zLTXV Audio VAE DecoderC   sampleszThe latent to be decoded.rE   rF   r   z1The Audio VAE model used for decoding the latent.rG   rI   r   r   )r   r   rJ   r   r   rI   r   r   s    r!   r"    LTXVAudioVAEDecode.define_schema=   sk    yy(0(			3NO"!,O   XX__'_:;
 	
r$   c                 8   US   nUR                   (       a  UR                  5       S   nUR                  U5      R                  SS5      R	                  UR
                  5      nUR                  R                  n[        R                  " U[        U5      S.5      $ )NrV      )waveformsample_rate)	is_nestedunbinddecodemovedimtodevicefirst_stage_modeloutput_sample_rater   r2   int)r    rV   rF   audio_latentrD   output_audio_sample_rates         r!   r5   LTXVAudioVAEDecode.executeN   s    y)!!'..04L  .66r1=@@ATATU#,#>#>#Q#Q }}!"#;<
 	
r$   r7   N)r8   r9   r:   r;   r<   r   r   r"   r2   r5   r>   r7   r$   r!   rS   rS   <   s>    
bii 
 
  
BMM 
 
r$   rS   c            	       x    \ rS rSr\S\R                  4S j5       r\S\S\S\S\R                  4S j5       r
Srg	)
LTXVEmptyLatentAudio]   r	   c                     [         R                  " SSS[         R                  R                  SSSSS[         R                  R
                  SS	9[         R                  R                  S
SSSS[         R                  R
                  SS	9[         R                  R                  SSSS[         R                  R
                  SS9[         R                  R                  SSSS9/[         R                  R                  SS9/S9$ )Nrj   zLTXV Empty Latent AudiorC   frames_numbera   rZ   i  zNumber of frames.)defaultminmaxstepdisplay_moder   
frame_rate   zNumber of frames per second.
batch_sizei   z0The number of latent audio samples in the batch.)ro   rp   rq   rs   r   rF   r   z.The Audio VAE model to get configuration from.rG   rJ   r   r   )	r   r   Intr   NumberDisplaynumberr   rJ   r   r   s    r!   r"   "LTXVEmptyLatentAudio.define_schema^   s    yy*2(#!#!1!1!8!8/    !#!1!1!8!8:    !#!1!1!8!8N   "!,L  7 B YY%%8%<=K&
 &	
r$   rm   rt   rv   c                 (   Uc   S5       eUR                   nUR                  R                  nUR                  R                  X5      n[        R
                  " X5Xv4[        R                  R                  5       S9n[        R                  " USS.5      $ )zGGenerate empty audio latents matching the reference pipeline structure.zAudio VAE model is required)rb   rD   )rV   type)latent_channelsrc   latent_frequency_binsnum_of_latents_from_framestorchzerosr,   model_managementintermediate_devicer   r2   )	r    rm   rt   rv   rF   
z_channels
audio_freqnum_audio_latentsaudio_latentss	            r!   r5   LTXVEmptyLatentAudio.execute   s     $C&CC$..
00FF
%77RRS`m%6C))==?

 }}(
 	
r$   r7   N)r8   r9   r:   r;   r<   r   r   r"   re   r2   r5   r>   r7   r$   r!   rj   rj   ]   s^    '
bii '
 '
R 

 
 	
 

 
r$   rj   c                   T    \ rS rSr\S\R                  4S j5       r\SS j5       rSr	g)LTXAVTextEncoderLoader   r	   c                 r   [         R                  " SSSS[         R                  R                  S[        R
                  " S5      S9[         R                  R                  S[        R
                  " S	5      S9[         R                  R                  S
SS/SS9/[         R                  R                  5       /S9$ )Nr   zLoad LTXV Audio Text Encoderr   zRecipes:
ltxav: gemma 3 12Btext_encodertext_encoders)r   r   r   rb   ro   cpuT)r   advanced)r   r   r   descriptionr   r   )r   r   r   r   r   r   Clipr   r   s    r!   r"   $LTXAVTextEncoderLoader.define_schema   s    yy,7$6"(::?K   (::=I   &.!   WW^^%&)
 	
r$   c                    [         R                  R                  R                  n[        R
                  " SU5      n[        R
                  " SU5      n0 nUS:X  a  [        R                  " S5      =US'   US'   [         R                  R                  XV/[        R                  " S5      XGS9n[        R                  " U5      $ )Nr   r   r   load_deviceoffload_device
embeddings)
ckpt_pathsembedding_directory	clip_typemodel_options)r,   r)   CLIPTypeLTXVr   r+   r   rb   	load_clipget_folder_pathsr   r2   )	r    r   r   rb   r   
clip_path1
clip_path2r   clips	            r!   r5   LTXAVTextEncoderLoader.execute   s    HH%%**	!88,W
!88	R
U?MR\\Z_M``M-(=9I+Jxx!!j-E[g[x[x  zF  \G  S\!  z}}T""r$   r7   N)ro   )
r8   r9   r:   r;   r<   r   r   r"   r5   r>   r7   r$   r!   r   r      s3    
bii 
 
0 # #r$   r   c                   B    \ rS rSrS\\\R                        4S jrSr	g)LTXVAudioExtension   r	   c                 @   #    [         [        [        [        [        /$ 7frM   )r   r@   rS   rj   r   )selfs    r!   get_node_list LTXVAudioExtension.get_node_list   s      "
 	
s   r7   N)
r8   r9   r:   r;   listr|   r   	ComfyNoder   r>   r7   r$   r!   r   r      s    
T$r||*<%= 
r$   r   r	   c                     #    [        5       $ 7frM   )r   r7   r$   r!   comfy_entrypointr      s     s   )r   comfy.utilsr,   comfy.model_managementr   comfy_api.latestr   r   comfy_extras.nodes_audior   r   r   r@   rS   rj   r   r   r   r7   r$   r!   <module>r      s        / 3" "81 1.
 
BF
2<< F
R&#R\\ &#R
 
   r$   