
    +j                         d dl Z d dlmZ d dlZd dlZd dlmZmZ  G d dej	                  Z
 G d dej	                  Z G d d	ej	                  Z G d
 dej	                  Z G d dej	                  Z G d de          ZdefdZdS )    N)override)ComfyExtensionIOc                   J    e Zd Zed             Zedej        fd            ZdS )TextEncodeAceStepAudioc                 r   t          j        ddt           j                            d          t           j                            ddd          t           j                            ddd          t           j                            dd	d
dd          gt           j                                        g          S )Nr   model/conditioningcliptagsT	multilinedynamic_promptslyricslyrics_strength      ?        g      $@{Gz?defaultminmaxstepnode_idcategoryinputsoutputs)r   SchemaClipInputStringFloatConditioningOutputclss    6/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_ace.pydefine_schemaz$TextEncodeAceStepAudio.define_schema
   s    y,)f%%	$MM	D$OO0#3DW[\\	 _++--.

 

 

 
	
    returnc                     |                     ||          }|                    |          }t          j        |d|i          }t	          j        |          S )N)r   r   )tokenizeencode_from_tokens_schedulednode_helpersconditioning_set_valuesr   
NodeOutput)r&   r
   r   r   r   tokensconditionings          r'   executezTextEncodeAceStepAudio.execute   sS    tF3388@@#;LK\^mJnoo}\***r)   N__name__
__module____qualname__classmethodr(   r   r0   r3    r)   r'   r   r   	   sV        
 
 [
 +R] + + + [+ + +r)   r   c                   J    e Zd Zed             Zedej        fd            ZdS )TextEncodeAceStepAudio15c                    t          j        ddt           j                            d          t           j                            ddd          t           j                            ddd          t           j                            dd	d	d
d          t           j                            dddd          t           j                            ddddd          t           j                            dg d          t           j                            dg dd          t           j                            dd d D                       t           j                            d!dd"d#          t           j                            d$d%dd&dd'          t           j                            d(d)dd%d*d'          t           j                            d+d,ddd*d'          t           j                            d-d	d	d.d/          t           j                            d0ddd1d2d'          gt           j	        
                                g3          S )4NzTextEncodeAceStepAudio1.5r	   r
   r   Tr   r   seedr   l    )r   r   r   control_after_generatebpmx   
   i,  )r   r   r   duration      ^@r   g     @@皙?r   timesignature)2346)optionslanguage)3arazbgbncacsdadeelenesfafifrhehihrhthuidisitjakolaltmsnenlnopaplptrorusasksrsvswtatethtltrukurviyuezhunknownrU   )rJ   r   keyscalec                 &    g | ]}d D ]	}| d| 
S ))CzC#DbDzD#EbEFzF#GbGzG#AbAzA#BbB r9   ).0qualityroots      r'   
<listcomp>z:TextEncodeAceStepAudio15.define_schema.<locals>.<listcomp>.   sT      4W  4W  4WG  wV  4W  4Wnrt4G4Gg4G4G  4W  4W  4W  4Wr)   )majorminorgenerate_audio_codeszEnable the LLM that generates audio codes. This can be slow but will increase the quality of the generated audio. Turn this off if you are giving the model an audio reference.)r   tooltipadvanced	cfg_scaleg       @g      Y@)r   r   r   r   r   temperatureg333333?r   top_pg?top_kd   )r   r   r   r   min_pr   gMbP?r   )r   r   r   r    r!   Intr"   ComboBooleanr#   r$   r%   s    r'   r(   z&TextEncodeAceStepAudio15.define_schema    s   y/)f%%	$MM	D$OOVQA;MfjkkUCRSAAz5cvTWXX8L8L8LMMz  4l  4l  4l  vz  {  {z  4W  4WWi  4W  4W  4W  X  X
  !7  PA  LP   Q  Q{CSeRU`dee}dSWbfggw&t^bccWaQC$OOw3Ce^bcc" _++--.)
 
 
 	
r)   r*   c                     |                     ||||t          |          ||	||
|||||          }|                    |          }t          j        |          S )N)r   r?   rB   rE   rK   r   r=   r   r   r   r   r   r   )r,   intr-   r   r0   )r&   r
   r   r   r=   r?   rB   rE   rK   r   r   r   r   r   r   r   r1   r2   s                     r'   r3   z TextEncodeAceStepAudio15.execute9   s    tFh^abo^p^p  |D  OW  ^b  yM  Yb  p{  CH  PU  ]b  c  c88@@}\***r)   Nr4   r9   r)   r'   r;   r;      s`        
 
 [
0 +  hj  hu + + + [+ + +r)   r;   c                   J    e Zd Zed             Zedej        fd            ZdS )EmptyAceStepLatentAudioc                     t          j        dddt           j                            ddddd	          t           j                            d
dddd          gt           j                                        g          S )Nr   zEmpty Ace Step 1.0 Latent Audiomodel/latent/audiosecondsrC   r        @@rD   r   
batch_size      )The number of latent images in the batch.r   r   r   r   r   display_namer   r   r   r   r   r"   r    r   Latentr$   r%   s    r'   r(   z%EmptyAceStepLatentAudio.define_schemaA   s    y-:)y%SfSVWW !Fq    Y%%''(
 
 
 	
r)   r*   c                    t          |dz  dz  dz            }t          j        |dd|gt          j                                        t          j                                                  }t          j        |dd          S )NiD  i         devicedtypeaudio)samplestype)	r   torchzeroscomfymodel_managementintermediate_deviceintermediate_dtyper   r0   r&   r   r   lengthlatents        r'   r3   zEmptyAceStepLatentAudio.executeP   s    Wu_s*Q.//j!R8AWAkAkAmAmuz  vL  v_  v_  va  va  b  b  b}AABBBr)   Nr4   r9   r)   r'   r   r   @   s]        
 
 [
 CR] C C C [C C Cr)   r   c                   J    e Zd Zed             Zedej        fd            ZdS )EmptyAceStep15LatentAudioc                     t          j        dddt           j                            ddddd	          t           j                            d
dddd          gt           j                                        g          S )NzEmptyAceStep1.5LatentAudiozEmpty Ace Step 1.5 Latent Audior   r   rC   r   r   r   r   r   r   r   r   r   r   r   r%   s    r'   r(   z'EmptyAceStep15LatentAudio.define_schemaX   s    y0:)y%SfSWXX !Fq    Y%%''(
 
 
 	
r)   r*   c                     t          |dz  dz            }t          j        |d|gt          j                                        t          j                                                  }t          j        |ddd          S )Ni  i  @   r   r   i  )r   r   downscale_ratio_temporal)	roundr   r   r   r   r   r   r   r0   r   s        r'   r3   z!EmptyAceStep15LatentAudio.executeg   s    %$.00j"f5e>T>h>h>j>jrw  sI  s\  s\  s^  s^  _  _  _}^bccdddr)   Nr4   r9   r)   r'   r   r   W   s]        
 
 [
 eR] e e e [e e er)   r   c                   L    e Zd Zed             Zeddej        fd            ZdS )ReferenceAudioc                     t          j        dddddt           j                            d          t           j                            dd          gt           j                                        g	          S )
NReferenceTimbreAudiozReference Audiozadvanced/conditioning/audioTz3This node sets the reference audio for ace step 1.5r2   r   )optional)r   r   r   is_experimentaldescriptionr   r   )r   r   r#   r    r   r$   r%   s    r'   r(   zReferenceAudio.define_scheman   so    y**2 M%%n55	488
 &&((
 
 
 	
r)   Nr*   c                 n    | t          j        |d|d         gid          }t          j        |          S )Nreference_audio_timbre_latentsr   T)append)r.   r/   r   r0   )r&   r2   r   s      r'   r3   zReferenceAudio.execute   s]    '?Oorx  zC  sD  rE  OF  OS  T  T  TL}\***r)   Nr4   r9   r)   r'   r   r   m   s[        
 
 [
  + +2= + + + [+ + +r)   r   c                   L    e Zd Zedeeej                          fd            ZdS )AceExtensionr*   c                 F   K   t           t          t          t          t          gS r   )r   r   r;   r   r   )selfs    r'   get_node_listzAceExtension.get_node_list   s!       ##$%
 	
r)   N)	r5   r6   r7   r   listr   r   	ComfyNoder   r9   r)   r'   r   r      sE        
T$r|*<%= 
 
 
 X
 
 
r)   r   r*   c                  "   K   t                      S r   )r   r9   r)   r'   comfy_entrypointr      s      >>r)   )r   typing_extensionsr   comfy.model_managementr   r.   comfy_api.latestr   r   r   r   r;   r   r   r   r   r   r9   r)   r'   <module>r      s    & & & & & &         / / / / / / / /+ + + + +R\ + + +,+ + + + +r| + + +BC C C C Cbl C C C.e e e e e e e e,+ + + + +R\ + + +0	
 	
 	
 	
 	
> 	
 	
 	
      r)   