← All articles

I Gave My Intel GPU a Cat. It Got a Recording Career.

Adventures with YuE2, an Intel Arc Pro B70, and a suspicious number of songs about sneaking through the house.

There is a point in every reasonable technology experiment where you stop asking, “Can I get this running?” and start asking, “Can my cat have a cyber metal theme song?”

This is the story of crossing that line.

I started exploring YuE2 with Codex, an Intel GPU, and a fairly innocent idea: make some music locally. We worked through song requests, built a reusable song-writing skill, and eventually gave one household cat a career spanning espionage, bluegrass, metal, and the blues.

The cat did not attend any planning meetings. Management considers this normal.

First, convince the GPU it works in the music business

YuE2 takes lyrics and a description of the music you want, then generates a song. Its default planning mode can compose melody and chords before producing audio, with a score available for later editing.

My setup used an Intel Arc Pro B70 and a local checkout with XPU support. That detail matters: the upstream quick start I checked was centered on NVIDIA/CUDA, while the checkout used for this experiment also supports Intel's XPU backend. Treat the commands below as my setup notes, not a promise that every revision of the repository has identical hardware support.

I keep calling this “compiling the music machine,” although the recorded steps are more precisely an installation from local source using a prebuilt XPU version of PyTorch. There was no need to build PyTorch itself from source.

From the YuE repository directory, this was the environment setup:

python3 -m venv .venv-xpu
source .venv-xpu/bin/activate
python -m pip install --upgrade pip
python -m pip install torch==2.11.0 --index-url https://download.pytorch.org/whl/xpu
python -m pip install .

My checkout's instructions call for Python 3.12, so python3 needs to resolve to that version for this recipe. The deliberately separate .venv-xpu environment keeps the Intel dependencies together. The XPU wheel index in the PyTorch command is a particularly important part of the setup.

The model files also need to exist locally before using the offline commands below. My paths were:

/srv/data/models/yue2/YuE2-3B
/srv/data/models/yue2/YuE2-Vae

Those are directories on my machine; substitute yours. Installing the Python package does not, by itself, populate those directories with model weights.

Next came the checkup:

yue2 doctor --model /srv/data/models/yue2/YuE2-3B \
  --vae /srv/data/models/yue2/YuE2-Vae --offline --verify-hashes

The field to look for is:

"xpu_available": true

Read the report rather than relying only on the command's exit status. In this checkout, doctor reports dependencies and devices, and the extra flag checks model hashes; it does not certify that a song will generate correctly or sound good.

If XPU is unavailable, check that the intended virtual environment and XPU PyTorch build are active, then investigate the Intel driver and GPU device access. Until PyTorch can see the card, changing the chorus is unlikely to help.

With the environment ready, the test-song command is:

yue2 generate --device xpu \
  --model /srv/data/models/yue2/YuE2-3B \
  --vae /srv/data/models/yue2/YuE2-Vae --offline \
  --request examples/song.json --output outputs/arc-pro-b70

The Intel path in this checkout uses eager execution, rather than the CUDA graph or vLLM paths. I am not attaching a speed trophy to it here; this adventure is about the setup and the musical experiments, not a controlled hardware benchmark.

For a completed run, the audio lives in the output directory as audio.flac. Keep the accompanying artifacts too, especially result.json: a playable file can still be marked as truncated. Use a fresh output directory for each new experiment.

Our first assignment: something wholesome

The first custom request was a Bible-based song for children aged one to five. We wrote a request for a gentle preschool singalong about creation and Jesus welcoming children, with simple words, a repeated chorus, piano, ukulele, and light handclaps.

The file was examples/bible-kids-song.json.

This was a useful starting point because it forced us to think about the audience. A toddler song needs a different vocabulary and musical shape from a dramatic adult ballad. “Make it good” is a fairly vague instruction. “Short phrases, clear words, a repeated melody, and a reassuring mood” gives the model a more concrete target.

At this stage, the project still looked respectable.

Naturally, we built a song-request machine

Writing one JSON file led to the obvious developer response: build something reusable for writing more JSON files.

We created a Codex skill called yue2-song-json. Its workflow is simple: show the available style recipes, let me pick one, ask whether I want to provide lyrics or have original lyrics written, then save a request the library accepts.

The catalog has 22 presets, including rock, metal, country, bluegrass, spy pop, funk, jazz, blues, and kids songs. It also allows custom blends.

We made an effort to separate evidence from enthusiasm. Published model examples support some broad style families. Country and bluegrass instrumentation draws on music institutions; the spy-pop recipe draws on composer interviews; preschool guidance draws on early-childhood music resources. The exact recipes themselves are creative starting points, not a list of independently benchmarked model capabilities.

That distinction is useful. A genre menu should help you choose an arrangement without pretending the model has a certified “perfect banjo” switch.

The request files mostly use five fields: id, style, lyrics, cot, and seed. The style field describes the sound. The lyrics field contains the words and section labels. We generally kept cot at full, asking for melody and chord planning, and used a fixed seed when comparing variants.

The helper catches malformed requests and refuses accidental overwrites. The native library validation checks the request format too. Neither check can tell you whether the chorus deserves a Grammy.

That part still requires ears.

Enter the cat: “Velvet Paws, Classified”

I picked spy pop and asked for a song about my cat sneaking around the house.

The resulting lyrics treated a nighttime patrol as a serious intelligence operation. Curtains became surveillance positions. A cupboard became an objective. Missing hair ties became evidence.

The hook was:

Velvet paws, classified
Something stirs on the other side
You own the dark, you know the floor
One soft step and one closed door

The requested arrangement was cinematic: dark strings, brass swells, twangy guitar, an expressive female vocal, and a slow-building chorus at 88 BPM. The musical direction was dramatic enough for international intrigue; the actual mission involved the sink.

Near the end, the suspect curls up on my knee. An excellent alibi, especially when the investigator is also responsible for providing dinner.

One cat, four career phases

Once we had the lyrics, I started changing the arrangement.

For these variants, we preserved the words and seed. That kept the comparison focused, but it did not lock the melody: we were requesting fresh compositions without supplying a shared score. Think of them as different musical interpretations of the same lyric sheet.

The bluegrass request traded orchestral drama for rolling banjo, mandolin chops, fiddle, acoustic guitar, upright bass, and close vocal harmonies at 132 BPM. The cat's surveillance operation now had the instrumentation of a very energetic porch gathering.

Then came cyber metal: down-tuned guitar riffs, industrial synth textures, double-kick drums, and a powerful clean female lead at 140 BPM.

Same cupboard. Considerably more firepower in the rhythm section.

Finally, I asked Codex to choose a style, with one requirement: a male vocal. It chose electric blues, with a warm, gravelly baritone, guitar responses, piano, and a laid-back shuffle at 88 BPM.

Of course the cat could sing the blues. Someone had closed a door. Somewhere, a food bowl might be only mostly full.

These descriptions are the arrangements we asked for. Listen to the tracks to judge how closely each rendition follows the brief; a BPM or vocal description in a prompt is a request, not an exact production control.

Spy Pop - Velvet Paws Classified

{
  "id": "velvet-paws-classified",
  "style": "English, cinematic spy pop, dark low strings, dramatic brass swells, twangy electric guitar, prowling bass and restrained drums, steady 4/4 pulse, poised expressive female lead vocal, intimate suspenseful verses building to a grand melodic chorus, minor-key atmosphere, playful feline intrigue delivered with elegant deadpan seriousness, clear diction, 88 BPM",
  "lyrics": "[Verse]\nThe kitchen clock says half past two\nA strip of moonlight catches you\nYou pause beneath the dining chair\nThen slip away like empty air\nYour whiskers test the bedroom door\nYour shadow spills across the floor\nI hear a creak and hold my breath\nYou freeze with one paw on the step\n\n[Chorus]\nVelvet paws, classified\nSomething stirs on the other side\nYou own the dark, you know the floor\nOne soft step and one closed door\nEvery secret, every room\nFalls beneath your quiet rule\n\n[Verse]\nBehind the curtains, out of sight\nYou watch the garden for a light\nThen cross the rug without a sound\nWhere missing hair ties may be found\nThe cupboard holds your next campaign\nYou tap the handle once again\nOne little nudge, a sudden clink\nI catch you posing by the sink\n\n[Chorus]\nVelvet paws, classified\nSomething stirs on the other side\nYou own the dark, you know the floor\nOne soft step and one closed door\nEvery secret, every room\nFalls beneath your quiet rule\n\n[Bridge]\nI turn the light on, there you sit\nBeside the evidence of it\nA toppled cup, a stolen string\nYou blink as if you've seen nothing\nThen curl up softly on my knee\nThe perfect place to hide from me\n\n[Chorus]\nVelvet paws, classified\nSomething stirs on the other side\nYou own the dark, you know the floor\nOne soft step and one closed door\nEvery secret, every room\nFalls beneath your quiet rule\n\n[Outro]\nThe kitchen clock says half past three\nOne eye opens, watching me\nI close my eyes, you leave my side\nVelvet paws, classified",
  "cot": "full",
  "seed": 831001
}

For anyone following along, the files are:

Request File
Spy pop Download
Bluegrass Download
Cyber metal Download
Male blues Download

To run one on the same Intel setup, keep the device and model arguments and change the request and output paths:

yue2 generate --device xpu \
  --model /srv/data/models/yue2/YuE2-3B \
  --vae /srv/data/models/yue2/YuE2-Vae --offline \
  --request examples/velvet-paws-bluegrass.json \
  --output outputs/velvet-paws-bluegrass

The quiet experiment: “Night Compile”

After giving the cat several possible recording contracts, I wanted something for actual work: instrumental music for a late-night coding session.

We called the request Night Compile. The intended sound was ambient electronica at 96 BPM, with warm pads, muted arpeggios, soft percussion, subtle changes, and an even pulse. Music that could sit behind a debugging session without demanding its own incident ticket.

This experiment exposed a real limitation. The library accepts an empty lyrics string, but that does not guarantee an instrumental result. Other users have reported unwanted vocals in instrumental requests.

Our JSON uses empty lyrics and explicit no-vocal instructions. It passed native request validation, but vocal-free output remains something to verify by listening. We did not discover a magic parameter that forces silence from the singer.

The request is night-compile-instrumental.json.

What made this worth doing

The enjoyable part was being able to keep the creative idea small while changing the musical setting around it. I did not need an elaborate story or a whole album concept. I needed a cat, a closed cupboard, and a willingness to ask what would happen if we added banjo.

Keeping the requests as files also gave the experiment a useful paper trail. We could see exactly which words and musical directions went into each version. The fixed lyrics made comparisons interesting; the separate outputs kept one experiment from trampling another.

There is still judgment involved at every stage. Read the lyrics aloud. Check the actual GPU report. Look for truncation. Listen for whether the voice and arrangement follow the brief. Keep the version you enjoy, rather than the one whose prompt sounds most impressive.

And perhaps watch the cat.

Mine has a theme song, multiple genre identities, and access to the kitchen after midnight. I cannot prove those things are connected, but the hair ties are still missing.