Skip to content

Commit c514890

Browse files
Refactor io to IO in nodes_ace.py (Comfy-Org#13485)
1 parent 543e9fb commit c514890

1 file changed

Lines changed: 52 additions & 52 deletions

File tree

comfy_extras/nodes_ace.py

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,136 +3,136 @@
33

44
import comfy.model_management
55
import node_helpers
6-
from comfy_api.latest import ComfyExtension, io
6+
from comfy_api.latest import ComfyExtension, IO
77

88

9-
class TextEncodeAceStepAudio(io.ComfyNode):
9+
class TextEncodeAceStepAudio(IO.ComfyNode):
1010
@classmethod
1111
def define_schema(cls):
12-
return io.Schema(
12+
return IO.Schema(
1313
node_id="TextEncodeAceStepAudio",
1414
category="conditioning",
1515
inputs=[
16-
io.Clip.Input("clip"),
17-
io.String.Input("tags", multiline=True, dynamic_prompts=True),
18-
io.String.Input("lyrics", multiline=True, dynamic_prompts=True),
19-
io.Float.Input("lyrics_strength", default=1.0, min=0.0, max=10.0, step=0.01),
16+
IO.Clip.Input("clip"),
17+
IO.String.Input("tags", multiline=True, dynamic_prompts=True),
18+
IO.String.Input("lyrics", multiline=True, dynamic_prompts=True),
19+
IO.Float.Input("lyrics_strength", default=1.0, min=0.0, max=10.0, step=0.01),
2020
],
21-
outputs=[io.Conditioning.Output()],
21+
outputs=[IO.Conditioning.Output()],
2222
)
2323

2424
@classmethod
25-
def execute(cls, clip, tags, lyrics, lyrics_strength) -> io.NodeOutput:
25+
def execute(cls, clip, tags, lyrics, lyrics_strength) -> IO.NodeOutput:
2626
tokens = clip.tokenize(tags, lyrics=lyrics)
2727
conditioning = clip.encode_from_tokens_scheduled(tokens)
2828
conditioning = node_helpers.conditioning_set_values(conditioning, {"lyrics_strength": lyrics_strength})
29-
return io.NodeOutput(conditioning)
29+
return IO.NodeOutput(conditioning)
3030

31-
class TextEncodeAceStepAudio15(io.ComfyNode):
31+
class TextEncodeAceStepAudio15(IO.ComfyNode):
3232
@classmethod
3333
def define_schema(cls):
34-
return io.Schema(
34+
return IO.Schema(
3535
node_id="TextEncodeAceStepAudio1.5",
3636
category="conditioning",
3737
inputs=[
38-
io.Clip.Input("clip"),
39-
io.String.Input("tags", multiline=True, dynamic_prompts=True),
40-
io.String.Input("lyrics", multiline=True, dynamic_prompts=True),
41-
io.Int.Input("seed", default=0, min=0, max=0xffffffffffffffff, control_after_generate=True),
42-
io.Int.Input("bpm", default=120, min=10, max=300),
43-
io.Float.Input("duration", default=120.0, min=0.0, max=2000.0, step=0.1),
44-
io.Combo.Input("timesignature", options=['2', '3', '4', '6']),
45-
io.Combo.Input("language", options=["en", "ja", "zh", "es", "de", "fr", "pt", "ru", "it", "nl", "pl", "tr", "vi", "cs", "fa", "id", "ko", "uk", "hu", "ar", "sv", "ro", "el"]),
46-
io.Combo.Input("keyscale", options=[f"{root} {quality}" for quality in ["major", "minor"] for root in ["C", "C#", "Db", "D", "D#", "Eb", "E", "F", "F#", "Gb", "G", "G#", "Ab", "A", "A#", "Bb", "B"]]),
47-
io.Boolean.Input("generate_audio_codes", default=True, tooltip="Enable 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.", advanced=True),
48-
io.Float.Input("cfg_scale", default=2.0, min=0.0, max=100.0, step=0.1, advanced=True),
49-
io.Float.Input("temperature", default=0.85, min=0.0, max=2.0, step=0.01, advanced=True),
50-
io.Float.Input("top_p", default=0.9, min=0.0, max=2000.0, step=0.01, advanced=True),
51-
io.Int.Input("top_k", default=0, min=0, max=100, advanced=True),
52-
io.Float.Input("min_p", default=0.000, min=0.0, max=1.0, step=0.001, advanced=True),
38+
IO.Clip.Input("clip"),
39+
IO.String.Input("tags", multiline=True, dynamic_prompts=True),
40+
IO.String.Input("lyrics", multiline=True, dynamic_prompts=True),
41+
IO.Int.Input("seed", default=0, min=0, max=0xffffffffffffffff, control_after_generate=True),
42+
IO.Int.Input("bpm", default=120, min=10, max=300),
43+
IO.Float.Input("duration", default=120.0, min=0.0, max=2000.0, step=0.1),
44+
IO.Combo.Input("timesignature", options=['2', '3', '4', '6']),
45+
IO.Combo.Input("language", options=["en", "ja", "zh", "es", "de", "fr", "pt", "ru", "it", "nl", "pl", "tr", "vi", "cs", "fa", "id", "ko", "uk", "hu", "ar", "sv", "ro", "el"]),
46+
IO.Combo.Input("keyscale", options=[f"{root} {quality}" for quality in ["major", "minor"] for root in ["C", "C#", "Db", "D", "D#", "Eb", "E", "F", "F#", "Gb", "G", "G#", "Ab", "A", "A#", "Bb", "B"]]),
47+
IO.Boolean.Input("generate_audio_codes", default=True, tooltip="Enable 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.", advanced=True),
48+
IO.Float.Input("cfg_scale", default=2.0, min=0.0, max=100.0, step=0.1, advanced=True),
49+
IO.Float.Input("temperature", default=0.85, min=0.0, max=2.0, step=0.01, advanced=True),
50+
IO.Float.Input("top_p", default=0.9, min=0.0, max=2000.0, step=0.01, advanced=True),
51+
IO.Int.Input("top_k", default=0, min=0, max=100, advanced=True),
52+
IO.Float.Input("min_p", default=0.000, min=0.0, max=1.0, step=0.001, advanced=True),
5353
],
54-
outputs=[io.Conditioning.Output()],
54+
outputs=[IO.Conditioning.Output()],
5555
)
5656

5757
@classmethod
58-
def execute(cls, clip, tags, lyrics, seed, bpm, duration, timesignature, language, keyscale, generate_audio_codes, cfg_scale, temperature, top_p, top_k, min_p) -> io.NodeOutput:
58+
def execute(cls, clip, tags, lyrics, seed, bpm, duration, timesignature, language, keyscale, generate_audio_codes, cfg_scale, temperature, top_p, top_k, min_p) -> IO.NodeOutput:
5959
tokens = clip.tokenize(tags, lyrics=lyrics, bpm=bpm, duration=duration, timesignature=int(timesignature), language=language, keyscale=keyscale, seed=seed, generate_audio_codes=generate_audio_codes, cfg_scale=cfg_scale, temperature=temperature, top_p=top_p, top_k=top_k, min_p=min_p)
6060
conditioning = clip.encode_from_tokens_scheduled(tokens)
61-
return io.NodeOutput(conditioning)
61+
return IO.NodeOutput(conditioning)
6262

6363

64-
class EmptyAceStepLatentAudio(io.ComfyNode):
64+
class EmptyAceStepLatentAudio(IO.ComfyNode):
6565
@classmethod
6666
def define_schema(cls):
67-
return io.Schema(
67+
return IO.Schema(
6868
node_id="EmptyAceStepLatentAudio",
6969
display_name="Empty Ace Step 1.0 Latent Audio",
7070
category="latent/audio",
7171
inputs=[
72-
io.Float.Input("seconds", default=120.0, min=1.0, max=1000.0, step=0.1),
73-
io.Int.Input(
72+
IO.Float.Input("seconds", default=120.0, min=1.0, max=1000.0, step=0.1),
73+
IO.Int.Input(
7474
"batch_size", default=1, min=1, max=4096, tooltip="The number of latent images in the batch."
7575
),
7676
],
77-
outputs=[io.Latent.Output()],
77+
outputs=[IO.Latent.Output()],
7878
)
7979

8080
@classmethod
81-
def execute(cls, seconds, batch_size) -> io.NodeOutput:
81+
def execute(cls, seconds, batch_size) -> IO.NodeOutput:
8282
length = int(seconds * 44100 / 512 / 8)
8383
latent = torch.zeros([batch_size, 8, 16, length], device=comfy.model_management.intermediate_device(), dtype=comfy.model_management.intermediate_dtype())
84-
return io.NodeOutput({"samples": latent, "type": "audio"})
84+
return IO.NodeOutput({"samples": latent, "type": "audio"})
8585

8686

87-
class EmptyAceStep15LatentAudio(io.ComfyNode):
87+
class EmptyAceStep15LatentAudio(IO.ComfyNode):
8888
@classmethod
8989
def define_schema(cls):
90-
return io.Schema(
90+
return IO.Schema(
9191
node_id="EmptyAceStep1.5LatentAudio",
9292
display_name="Empty Ace Step 1.5 Latent Audio",
9393
category="latent/audio",
9494
inputs=[
95-
io.Float.Input("seconds", default=120.0, min=1.0, max=1000.0, step=0.01),
96-
io.Int.Input(
95+
IO.Float.Input("seconds", default=120.0, min=1.0, max=1000.0, step=0.01),
96+
IO.Int.Input(
9797
"batch_size", default=1, min=1, max=4096, tooltip="The number of latent images in the batch."
9898
),
9999
],
100-
outputs=[io.Latent.Output()],
100+
outputs=[IO.Latent.Output()],
101101
)
102102

103103
@classmethod
104-
def execute(cls, seconds, batch_size) -> io.NodeOutput:
104+
def execute(cls, seconds, batch_size) -> IO.NodeOutput:
105105
length = round((seconds * 48000 / 1920))
106106
latent = torch.zeros([batch_size, 64, length], device=comfy.model_management.intermediate_device(), dtype=comfy.model_management.intermediate_dtype())
107-
return io.NodeOutput({"samples": latent, "type": "audio"})
107+
return IO.NodeOutput({"samples": latent, "type": "audio"})
108108

109-
class ReferenceAudio(io.ComfyNode):
109+
class ReferenceAudio(IO.ComfyNode):
110110
@classmethod
111111
def define_schema(cls):
112-
return io.Schema(
112+
return IO.Schema(
113113
node_id="ReferenceTimbreAudio",
114114
display_name="Reference Audio",
115115
category="advanced/conditioning/audio",
116116
is_experimental=True,
117117
description="This node sets the reference audio for ace step 1.5",
118118
inputs=[
119-
io.Conditioning.Input("conditioning"),
120-
io.Latent.Input("latent", optional=True),
119+
IO.Conditioning.Input("conditioning"),
120+
IO.Latent.Input("latent", optional=True),
121121
],
122122
outputs=[
123-
io.Conditioning.Output(),
123+
IO.Conditioning.Output(),
124124
]
125125
)
126126

127127
@classmethod
128-
def execute(cls, conditioning, latent=None) -> io.NodeOutput:
128+
def execute(cls, conditioning, latent=None) -> IO.NodeOutput:
129129
if latent is not None:
130130
conditioning = node_helpers.conditioning_set_values(conditioning, {"reference_audio_timbre_latents": [latent["samples"]]}, append=True)
131-
return io.NodeOutput(conditioning)
131+
return IO.NodeOutput(conditioning)
132132

133133
class AceExtension(ComfyExtension):
134134
@override
135-
async def get_node_list(self) -> list[type[io.ComfyNode]]:
135+
async def get_node_list(self) -> list[type[IO.ComfyNode]]:
136136
return [
137137
TextEncodeAceStepAudio,
138138
EmptyAceStepLatentAudio,

0 commit comments

Comments
 (0)