o
    i@                     @   s   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 dej	Z
G dd dej	ZG dd	 d	ej	ZG d
d dej	ZG dd dej	ZG dd deZdefddZdS )    N)override)ComfyExtensionioc                   @   ,   e Zd Zedd ZedejfddZdS )TextEncodeAceStepAudioc                 C   sX   t jddt jdt jjddddt jjddddt jjdd	d
dddgt j gdS )Nr   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cls r%   4/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_ace.pydefine_schema
   s   

z$TextEncodeAceStepAudio.define_schemareturnc                 C   s2   |j ||d}||}t|d|i}t|S )N)r   r   )tokenizeencode_from_tokens_schedulednode_helpersconditioning_set_valuesr   
NodeOutput)r$   r   r	   r   r   tokensr   r%   r%   r&   execute   s   

zTextEncodeAceStepAudio.executeN__name__
__module____qualname__classmethodr'   r   r-   r/   r%   r%   r%   r&   r   	   s
    
r   c                   @   r   )TextEncodeAceStepAudio15c                 C   s8  t jddt jdt jjddddt jjddddt jjdd	d	d
ddt jjdddddt jjddddddt jjdg ddt jjdg ddt jjddd dD dt jjd dd!dd"t jjd#d$dd%ddd&t jjd'd(dd$d)dd&t jjd*d+ddd)dd&t jjd,d	d	d-dd.t jjd/ddd0d1dd&gt j	
 gd2S )3Nz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)enjazhesdefrptruitnlpltrvicsfaidkoukhuarsvroelkeyscalec                 S   s$   g | ]}d D ]	}| d| qqS ))CzC#DbDzD#EbEFzF#GbGzG#AbAzA#BbB r%   ).0qualityrootr%   r%   r&   
<listcomp>.   s   $ z:TextEncodeAceStepAudio15.define_schema.<locals>.<listcomp>)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   rr   temperatureg333333?r   top_pg?top_kd   )r   r   r   rr   min_pr   gMbP?r   )r   r   r   r   r   Intr    ComboBooleanr!   r"   r#   r%   r%   r&   r'       s*   

z&TextEncodeAceStepAudio15.define_schemar(   c                 C   s>   |j ||||t|||	||
|||||d}||}t|S )N)r   r8   r;   r>   rD   r\   r6   rp   rs   rt   ru   rv   rx   )r)   intr*   r   r-   )r$   r   r	   r   r6   r8   r;   r>   rD   r\   rp   rs   rt   ru   rv   rx   r.   r   r%   r%   r&   r/   9   s   *

z TextEncodeAceStepAudio15.executeNr0   r%   r%   r%   r&   r5      s
    
r5   c                   @   r   )EmptyAceStepLatentAudioc                 C   D   t jdddt jjdddddd	t jjd
dddddgt j gdS )Nr}   zEmpty Ace Step 1.0 Latent Audiolatent/audiosecondsr<   r        @@r=   r   
batch_size      )The number of latent images in the batch.r   r   r   rq   r   display_namer   r   r   r   r   r    r   ry   Latentr"   r#   r%   r%   r&   r'   A      

z%EmptyAceStepLatentAudio.define_schemar(   c                 C   s@   t |d d d }tj|dd|gtj d}t|ddS )NiD  i         deviceaudiosamplestype)r|   torchzeroscomfymodel_managementintermediate_devicer   r-   r$   r   r   lengthlatentr%   r%   r&   r/   P   s   zEmptyAceStepLatentAudio.executeNr0   r%   r%   r%   r&   r}   @   
    
r}   c                   @   r   )EmptyAceStep15LatentAudioc                 C   r~   )NzEmptyAceStep1.5LatentAudiozEmpty Ace Step 1.5 Latent Audior   r   r<   r   r   r   r   r   r   r   r   r   r   r   r#   r%   r%   r&   r'   X   r   z'EmptyAceStep15LatentAudio.define_schemar(   c                 C   s:   t |d d }tj|d|gtj d}t|ddS )Ni  i  @   r   r   r   )roundr   r   r   r   r   r   r-   r   r%   r%   r&   r/   g   s   z!EmptyAceStep15LatentAudio.executeNr0   r%   r%   r%   r&   r   W   r   r   c                   @   s.   e Zd Zedd ZeddejfddZdS )ReferenceAudioc                 C   s8   t jdddddt jdt jjdddgt j gd	S )
NReferenceTimbreAudiozReference Audiozadvanced/conditioning/audioTz3This node sets the reference audio for ace step 1.5r   r   )optional)r   r   r   is_experimentaldescriptionr   r   )r   r   r!   r   r   r"   r#   r%   r%   r&   r'   n   s   
zReferenceAudio.define_schemaNr(   c                 C   s,   |d urt j|d|d gidd}t|S )Nreference_audio_timbre_latentsr   T)append)r+   r,   r   r-   )r$   r   r   r%   r%   r&   r/      s   
zReferenceAudio.executeNr0   r%   r%   r%   r&   r   m   s
    
r   c                   @   s(   e Zd Zedeeej  fddZdS )AceExtensionr(   c                    s   t ttttgS r   )r   r}   r5   r   r   )selfr%   r%   r&   get_node_list   s   zAceExtension.get_node_listN)	r1   r2   r3   r   listr   r   	ComfyNoder   r%   r%   r%   r&   r      s    r   r(   c                      s   t  S r   )r   r%   r%   r%   r&   comfy_entrypoint   s   r   )r   typing_extensionsr   comfy.model_managementr   r+   comfy_api.latestr   r   r   r   r5   r}   r   r   r   r   r%   r%   r%   r&   <module>   s    !