IAMCCS Drama 3 · CUDA Codec
The Drama 3 codec loader with one dropdown and a lot of opinions
- DRAMA3_CODEC
A one-dropdown node that people will still manage to get wrong, because the dropdown is empty by default and the reason is a filename.
IAMCCS_Drama3GPUCodecLoader is the "CUDA Codec" member of the Drama 3 family in IAMCCS-nodes. Its entire job is to load the Drama 3 audio codec and hand it out as a DRAMA3_CODEC object. Two other nodes consume that object: the GPU Performance node needs it to turn generated codec frames back into a waveform, and the Voice ID node needs it to encode a reference voice into the model's own voice space. Same codec, two directions.
How it works
The mechanism is a filename scan, and knowing that explains 90% of what goes wrong. The input is built like this:
choices('vae', 'drama3_codec')
which means: ask ComfyUI for every file in the vae model folder, keep the ones whose basename starts with drama3_codec, and offer those. Subfolders are fine - it compares only the last path segment. Case matters, because a startswith check is a startswith check.
Once you've picked one, the node resolves the full path, calls the upstream Drama3CodecLoader from the pinned ComfyUI-Drama3 runtime, and then does one extra check the upstream doesn't: it verifies the loaded patcher's device is cuda and raises DRAMA 3 codec requires CUDA; CPU fallback refused if not. That refusal is the whole personality of this IAMCCS wrapper family - the audio generation path in ComfyUI is full of silent slow-path surprises, so these nodes would rather fail loudly.
An empty dropdown, then, is not a bug - it's the honest report that nothing in models/vae matched the prefix.
Inputs and outputs
One input, codec_name, chosen from what's above. One output, DRAMA3_CODEC, which goes to:
IAMCCS_Drama3GPUEncodeVoice→ thecodecsocket, andIAMCCS_Drama3GenerateGPU→ thecodecsocket.
That's it. There's no dtype or offload option to tune, and you shouldn't want one - the runtime owns quantization decisions, and the pack's docstring is explicit that model math, quantization, codec and expert streaming all belong upstream.
Installing it
Pack first, via ComfyUI Manager (search IAMCCS Nodes) or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Then the two things this specific node needs beyond the pack:
- The pinned ComfyUI-Drama3 runtime installed as its own custom node pack. Without it you get
Install the pinned ComfyUI-Drama3 runtime and restart ComfyUI: missing Drama3CodecLoader. - The codec weight file dropped into
ComfyUI/models/vaewith a filename that beginsdrama3_codec- for exampledrama3_codec_fp16.safetensors. Keep the name the download came with if it already follows that convention.
Restart ComfyUI after adding files; the enum is built when the graph is validated, not when the folder changes.
Where people get burned
Empty dropdown. You put the codec in diffusion_models, or renamed it to something descriptive like Drama3-Audio-Codec-v2.safetensors. This node reads vae only, and the basename must start with the lowercase drama3_codec. Rename, restart, done.
Loading fine but generating noise. A codec and a model from mismatched releases. Treat the model file and the codec file as one pair - take them from the same release, don't mix a checkpoint you downloaded in September with a codec you grabbed in October.
"requires CUDA" on a machine with a perfectly good GPU. You're on a CPU-only launch (--cpu) or the CUDA build isn't what ComfyUI picked up. The pack reads the torch device ComfyUI itself selected, so this isn't a per-node setting you can override.
Two copies of the pack in custom_nodes. The README calls this out and it's the classic cause of a node loading an old definition. One copy only, then hard-refresh the browser.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| codec_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| DRAMA3_CODEC | DRAMA3_CODEC | — |