Audio Pitch Shift β‘π ‘π π £π
Move the key up or down in semitones, duration untouched
- audio
- AUDIO
The mirror image of AudioTimeStretch: this one changes pitch and leaves duration alone, instead of the other way around. One knob, one job.
Inputs and outputs
audio- the clip to shift.n_steps- semitones to shift, -12 to 12, integer, default 0. Twelve steps is a full octave; the sign tells you the direction (negative = down, positive = up).
Output is a single AUDIO.
When you'd reach for it
Two real uses in this pack's context. First, mood: pitching a source clip up reads brighter and thinner, pitching it down reads darker and heavier - a fast, non-destructive way to test a different feel for a track before committing to a full regeneration. Second, and more specific to this pack: ACE-Step cover/style-transfer workflows sometimes benefit from transposing a source clip before feeding it in as semantic guidance, if you want the output in a different key than the source.
Because this only touches pitch, your frame-count math from AudioInfo stays valid - duration doesn't move, so anything you've already synced to the clip's length keeps working. That's the real advantage over just changing the sample rate to fake a pitch shift: a naive rate change drags duration along with the pitch, which is exactly the coupling this node exists to avoid.
n_steps being an integer means you're limited to whole semitones - no microtonal or fractional-cent shifts here. For most creative use that's plenty of resolution; if you need finer control than a semitone, this node isn't built for it.
Installing it
ComfyUI Manager: search RyanOnTheInside, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt
No model downloads for this one.
Where people get burned
Pitch-shifting algorithms have to guess at formants - the resonances that make a voice sound like a specific person rather than a generic tone - and that guess gets worse the further you push it. Large shifts (getting close to the Β±12 semitone limits) on vocal-heavy material tend to sound obviously processed, sometimes robotic, because the algorithm can't perfectly separate "pitch" from "the character of the voice" at extreme shifts. If you just want a subtle mood change rather than an obviously different-sounding track, Β±1 to Β±3 semitones goes a long way and stays natural - save the bigger shifts for material where you're deliberately going for a processed or unusual effect, or for instrumental content without vocals, which tends to tolerate large shifts better.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Input audio to be processed | |
| n_steps | INT | 0-12β12 | Amount of pitch shift in semitones (-12 to 12) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | β |