Nodes/ComfyUI-Easy-Media/MultiTrack Project
ComfyUI Node

MultiTrack Project

The node that does the looping for you

By yolain·Created 4 months ago·Updated a day ago· 186
MultiTrack Project
  • tracks_info
  • model_loader
  • model_loader_2nd
  • sampler
  • sampler_2nd
  • sigmas
  • sigmas_2nd
  • PROJECT_NAME
  • LOCKED_AUDIO
project_name
project_saveoverride
segment_start_number1
segment_count-1
seed42
sampling_planlight
sampling_mode
1st_pass_onlyfalse
disable_2nd_noisefalse
upscale_by1.250
upscale_modelNone
enabled_tiling

If you've ever built a "generate 12 segments in a loop" workflow, you know the pain: a chain of loaders, samplers, and latent-save nodes all wired to a single task_index, forever fighting the cache. easy multitrackProject is Easy-Media's answer, and it's the node that makes the pack's whole MultiTrack pitch click. You feed it the TRACKS_INFO output of the MultiTrack Editor, it expands each task into a full encode → sample → decode → save pipeline for you, in order, with optional two-pass (dual) sampling, and hands back a PROJECT_NAME for the combine node at the end. No segment loop, no manual index math.

One honest caveat first: this node currently runs MiniMax H3 only. The source refuses anything that isn't a MiniMaxH3 model config. The editor stays model-agnostic; the project executor is H3-shaped.

What it does with a timeline

The README lays out the internal flow, and it's worth knowing because it explains every input:

  1. Read the task, load its media on demand (v1.3.0's lazy-loading - nothing is decoded until a segment needs it).
  2. Build conditioning for the task's mode - text-to-video, image-to-video, first/last frame, or multimedia reference - plus audio/video latents.
  3. First pass at the editor's dimensions.
  4. Optional second pass: multiply by upscale_by, align to the nearest multiple of 32, upscale the latent, sample again.
  5. Decode, trim the context overlap, save the segment, carry context to the next, repeat.

Shot vs Context continuity is per-segment: Shot starts fresh, Context inherits the previous segment's audio/video tail. The pipeline passes context between segments automatically - you never wire up your own Save/Resume Latent nodes.

The inputs that matter

  • tracks_info - from the MultiTrack Editor. This is the whole plan: tasks, prompts, media, continuity modes.
  • model_loader - a FAST_MODEL_LOADER from easy modelLoaderPack: H3 model + CLIP + video VAE + audio VAE (audio VAE is required for video projects, because H3 generates audio jointly).
  • project_name - names the folder under ComfyUI/output/easy_media/projects/. Reuse the same name to resume.
  • segment_start_number / segment_count - start segment counts from 1 (unlike the zero-based task_index in MultiTrack Task Output - an easy way to confuse yourself). segment_count = -1 means "process everything remaining."
  • project_save - new keeps old results and adds versions for regenerated segments (so you can A/B compare); override replaces them.
  • sampling_plan - built-in presets (ultra_light, light, medium, high) that pick samplers and sigma schedules for Turbo vs non-Turbo H3, or custom for manual.
  • sampling_mode - single or dual (first pass + upscale + second pass).
  • upscale_by - second-pass scale relative to editor dims, default 1.250. 1.000 skips resizing but still allows a second pass.
  • 1st_pass_only - run and checkpoint only the first pass of the first selected segment; turn it off next run to resume at pass two. Great for previewing speed.
  • upscale_model - H3 latent upscaler weights for direct latent upscaling, or None to go through a VAE decode → resize → re-encode path.

Outputs are just two: PROJECT_NAME (feed it to easy multitrackProjectVideoCombine) and LOCKED_AUDIO (the original audio, if you locked it, without regenerating).

Installation

The pack itself, plus FFmpeg (the README insists FFmpeg is installed before the pack - it is a hard dependency for media handling):

# system FFmpeg first
# then:
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Media

Restart ComfyUI, or install via ComfyUI Manager by searching "ComfyUI-Easy-Media". The pack's pyproject.toml declares zero Python dependencies - the heavy stuff is optional and per-feature. For dual sampling you need one of two upscale paths: ComfyUI-KJNodes (for ImageResizeKJv2 when upscale_model is None), or the H3 latent upscaler plus its weights in ComfyUI/models/latent_upscale_models/. Then the MiniMax H3 weights themselves (~42.5GB, under a community licence that geofences the US, EU, UK and Korea out of local use). torchaudio is needed if you lock audio from a file that isn't already at the VAE's sample rate.

Troubleshooting

  • "currently supports only MiniMaxH3 models" - you wired a non-H3 model into model_loader. That's the guard working.
  • "requires ImageResizeKJv2 from ComfyUI-KJNodes" - upscale_model is None in dual mode and KJNodes isn't installed. Install it, or select real upscaler weights. Selecting weights without the latent-upscaler pack raises an error rather than silently switching paths - that's deliberate.
  • Context resolution errors when resuming - if you change editor dimensions, upscale_by, or a previous segment's version, the saved context chain can no longer match. Regenerate the affected earlier segments first; later Context segments won't fix themselves.
  • Nothing in the output folder - check segment_start_number. It's 1-based, and segment_count = -1 in override mode deletes saved segments from the start point onward before regenerating. That deletion is the point, but it will eat results if you weren't expecting it.

The project's expanded graph contains the internal _EasyUse/H3 nodes (h3SegmentSamplingStart, h3ContextMediaTrim, h3ProjectArtifact, …) - you'll see them if you inspect the queue. Leave them alone; they're the pipeline's organs, not yours to rewire.

CategoryEasyUse/MultiTrackEditor

Inputs (19)

NameTypeDefaultDescription
tracks_infoTRACKS_INFO
model_loaderFAST_MODEL_LOADER
project_nameSTRING
project_saveCOMBOoverride2 options: new, override
segment_start_numberINT11–2147483647The task segment start number.
segment_countINT-1-1–2147483647Maximum task segments in this queue. When set to -1, override mode deletes saved segments from segment_start_number onward before regeneration; new mode preserves existing video and latent files.
seedINT420–18446744073709550000
sampling_planCOMBOlight5 options: custom, ultra_light, light, medium, high
sampling_modeCOMBO3 options: [object Object], [object Object], [object Object]
1st_pass_onlyBOOLEANfalseRun and save only the first selected segment's first pass. Turn this off on the next run to resume directly from that checkpoint at pass two.
disable_2nd_noiseBOOLEANfalseDisable noise in second-pass for dual-sampling
upscale_byFLOAT1.2501–8
upscale_modelCOMBONone1 options: None
enabled_tilingCOMBOEnable shared high-resolution H3 spatial tiling.
model_loader_2ndoptFAST_MODEL_LOADEROptional second-pass model. Encoding and VAE components remain from the first-pass loader.
sampleroptSAMPLER
sampler_2ndoptSAMPLEROptional second-pass sampler.
sigmasoptSIGMAS
sigmas_2ndoptSIGMASOptional second-pass sigmas.

Outputs (2)

NameTypeDescription
PROJECT_NAMESTRING
LOCKED_AUDIOAUDIO