HeartMuLa Generate Music
Full Songs With Vocals, on Your Machine
- audio_output
- filepath
- metadata_json
This is the node that actually makes the song. HeartMuLa Generate Music takes your lyrics and a comma-separated list of tags, runs them through the official heartlib pipeline, and writes a lossless .wav of a full song with vocals to your ComfyUI output folder. It's the middle of the pack's recommended three-node workflow - Song Spec → this → Lyrics Compliance - and the only one that touches the heavy weights.
The important quirk up front. HeartMuLa accepts exactly two conditioning inputs: lyrics and tags. No BPM dial, no key picker, no duration slider at the model level. Everything else you want - tempo, key, mood, structure - has to ride along inside the tags as comma-separated tokens. That's why the pack's Song Spec node exists: it maps your BPM and key into 120bpm and c major style tags for you. If you're feeding this node directly, you're doing that mapping by hand, and the defaults in the box (anthemic,pop,clear vocals,120bpm,c major) show you the house style.
Inputs that matter. You'll actually set four of them:
lyrics- multiline text,[Verse]/[Chorus]section markers welcome.tags- comma-separated conditioning tokens.max_audio_length_ms- 10,000 ms (10 s) up to 600,000 ms (10 min), step 1000. Keep it realistic; long generations are slow.seed- a fixed value reproduces a song,-1rolls dice.
The rest are generator internals worth knowing but rarely touching: topk (50), temperature (1.0), cfg_scale (1.8), runtime_profile (auto), keep_model_loaded (true), auto_download_models (false - deliberate), and filename_prefix (heartmula_song) for the output file.
Outputs. Three:
audio_output(AUDIO) - preview it or feed it to HeartMuLa Lyrics Compliance.filepath(STRING) - the.wav's location in your output folder.metadata_json(STRING) - model pair used, profile, seed, the full generation settings. Your reproducibility trail.
What it needs. The 3B line only - the 7B checkpoint isn't released, despite the marketing. Drop the model folders into ComfyUI/models/HeartMuLa keeping the official names:
cd /path/to/ComfyUI/models
hf download HeartMuLa/HeartMuLaGen --local-dir ./HeartMuLa
hf download HeartMuLa/HeartMuLa-oss-3B --local-dir ./HeartMuLa/HeartMuLa-oss-3B
hf download HeartMuLa/HeartCodec-oss --local-dir ./HeartMuLa/HeartCodec-oss
The pack auto-detects the best compatible pair it finds, preferring HeartMuLa-RL-oss-3B-20260123 + HeartCodec-oss-20260123 when present. Install the node itself the usual way:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/MPC2026/ComfyUI-MPC-HeartMuLa.git
cd ComfyUI-MPC-HeartMuLa
python -m pip install -r requirements.txt
Restart, search "HeartMuLa," import the included workflow, edit, run.
Realistic expectations. HeartMuLa quality is genuinely "ok" - the community is honest that it trails Suno, but it's free, local, and has vocals, which is more than most open models manage. It also wants real hardware: roughly 16 GB VRAM on a consumer card at full precision, and on Apple Silicon the pack targets something like an M-series with serious unified memory. Don't expect it to sing your lyrics verbatim either - upstream lowercases text and lyric fidelity is model-limited. That's the whole reason the compliance node exists.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| lyrics | STRING | [Verse] Write your lyrics here | — |
| tags | STRING | anthemic,pop,clear vocals,120bpm,c major | — |
| max_audio_length_ms | INT | 6000010000–600000 | — |
| runtime_profile | COMBO | auto | 5 options: auto, apple_silicon_fast, apple_silicon_safe, cuda, cpu |
| seed | INT | 0-1–2147483647 | — |
| topk | INT | 501–200 | — |
| temperature | FLOAT | 1.000.1–2 | — |
| cfg_scale | FLOAT | 1.81–6 | — |
| keep_model_loaded | BOOLEAN | true | — |
| auto_download_models | BOOLEAN | false | — |
| filename_prefix | STRING | heartmula_song | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio_output | AUDIO | — |
| filepath | STRING | — |
| metadata_json | STRING | — |