A playtest note comes back with one line: sometimes the heal sounds broken.
Not every time. Maybe one pickup in six. The cue is a sine body around 587 Hz, a bell partial an octave up, a filtered noise breath underneath. Pitch randomisation runs per layer, plus or minus 6 percent, each layer drawing its own value.
That last detail is the bug. The body rolls 4 percent sharp while the partial rolls 5 percent flat, and the two sit about 155 cents apart. They stop fusing into one tone. The ear hears a note and a chime arguing with it.
The cue itself was reasonable: its envelope and timing followed the usual budget for a pickup that has to register inside a third of a second, covered in health pickup cue design, and the attack landed where it should. The problem sat entirely in the pitched layers.
Identity Sits in the Interval, Not in the Hertz
A heal built as a two-note rise, root to fifth, is identified by the ratio between those notes: 1.498, seven semitones, not by the absolute frequency of either one. Move both notes by the same factor and the ratio survives. The cue reads as the same cue, sitting a little higher or lower. Move them by different factors and the ratio changes, and with it the gesture.
That explains most of the confusion about safe ranges. The question is not how many percent. It is how many percent on what, measured against what.
Two percent, about 34 cents, is the near-invisible band. A cue at 587 Hz and the same cue at 599 Hz sound like the same cue heard alone. Most listeners cannot name a pitch difference unless the two arrive back to back inside a second.
Five to eight percent, roughly 85 to 133 cents, is where the cue starts to carry colour. It stays short of the point where the gesture changes meaning, as long as the whole cue moves together. The rise is still a rise, shifted rather than rewritten.
Past about 12 percent, close to 196 cents, a tonal cue starts to break identity. A whole tone is enough to collide with another pickup in the same register, and enough that a cue designed against a fixed palette no longer sounds like a member of it. Applied to the whole cue that is the tipping point. Applied per layer it is simply a broken sound.
The Ranges, Layer by Layer
The table assumes a cue roughly between 500 Hz and 3 kHz, where most heal pickups live. Read the numbers as budgets, not specifications.
| Layer | Suggested spread | What fails first |
|---|---|---|
| Sustained body tone, sine or triangle | 0 to 2 percent | Note identity drifts, then tuning against music |
| Second note of the rise | Locked to the body | The interval changes and the gesture changes meaning |
| Harmonic partials, bell or shimmer | 0 percent, derived from the body | The stack goes inharmonic and splits into two objects |
| Filtered noise breath | 15 to 20 percent on band centre | Only the colour shifts; little structural risk |
| Attack burst, 8 to 15 ms | 10 percent on filter, 2 dB on level | Definition softens and the cue turns mushy |
| Reverb send or decay | Not a pitch decision | Space changes; identity does not |
Tolerance grows as a layer carries less pitch information. A sine body is nothing but pitch. A noise band barely has any.
One Random Value per Instance, Not per Layer
Draw one value per playback and multiply every pitched layer by it. In Web Audio that means one cents value written to OscillatorNode.detune at a shared point, or one playbackRate on the buffer source, rather than separate detune AudioParams per oscillator. In FMOD Studio, randomise the event pitch property once instead of every instrument track. In Wwise, the Randomizer belongs on the event pitch.
If the partials need their own movement, keep them integer multiples of the randomised root and modulate amplitude or a filter instead. A partial that wavers in level reads as shimmer. A partial that wavers in pitch, by even 3 or 4 percent, pulls out of the fused timbre and sounds like a second, slightly wrong bell. The wider pattern for bounded variation is covered in controlled randomness.
Where Detune Becomes Chorus, and Where It Becomes Dissonance
Two layers at once is a different problem from two instances in sequence. Sequence has no beating: the notes never overlap, so a 5 percent shift is just a higher note. Simultaneity is where detune turns into texture rather than pitch.
Beating happens at the difference in hertz. At 600 Hz, a 0.5 percent detune is 3 Hz, a slow wobble most listeners read as chorus or thickness. Three percent is 18 Hz, in the roughness band, and the layer sounds grainy. Five percent is 30 Hz, and the ear separates the tones.
The same percentages behave differently lower down. At 150 Hz, 3 percent is 4.5 Hz, still a slow beat. A sub layer can take a wider percentage before it sours, while a 3 kHz partial takes much less. Count hertz between layers, not percent.
Two Pickups in a Row
Heal cues often fire within 200 ms of each other when a player crosses a cluster of drops. If both instances draw independently, the second starts while the first is still ringing, and the two bodies beat at whatever difference they happen to have. Two 6 percent draws in opposite directions leave close to 200 cents between them.
A cheap guard is to skip the next pitch draw while any instance of the same cue is still active, or to retrigger the first one instead of layering a second. The wider architecture for that decision is covered in variation systems. For pitch, the point is narrower: overlapping instances need a tighter budget than isolated ones.
Noise and Transients Tolerate What Tonal Layers Cannot
A filtered noise breath has no fundamental, so there is no harmonic series to break. Move its band centre from 2 kHz to 2.4 kHz, about 316 cents, and it reads as a slightly different colour, not a different cue. That is why the noise layer can take 15 to 20 percent while the body cannot take three.
The attack burst sits in a similar place. Its job is timing and definition, not pitch. Randomising the filter of an 8 to 15 ms burst by 10 percent, or its level by 2 dB, adds variation without touching what the cue means. What should not move is its position in time by more than 10 to 15 ms.
Heal Cues in a Musical Key
Everything above assumes the cue plays alone. In a scored game it does not. If the score sits in D minor and the heal cue is tuned to D, a uniform 6 percent transposition puts the cue a semitone off the music.
The cue is not wrong on its own. It is wrong against the chord underneath it, and players read that as a mistake rather than as variety. Tolerance that looked generous in isolation shrinks once there is a key to disagree with.
Scale Degrees or a Fixed Pitch
Constrain the offset to scale degrees: draw from a small set, 0, plus 2 semitones, plus 3 semitones, never between them. Or fix the pitch and move the variation into filter, noise and level, which the music cannot contradict. The second is safer when the score is dense, and cheaper, because a fixed pitch can be pre-rendered once.
If the music is ambient, sparse or absent, free transposition of 5 to 8 percent across the whole cue is fine. The real question is how much the mix around it can absorb before the cue sounds like an error.
What to Change First
When a heal reads as broken, reduce the range last. Check the routing first: if every pitched layer draws its own random value, that is the fault, and it sounds wrong at 2 percent as reliably as at 12. Then check overlap, because a cue that layers on itself needs a guard before it needs a smaller range. Then check the key.
Only after those three does the size of the range matter. A cue that keeps its harmonic stack intact can move 8 percent and still read as the same heal, because the interval survived. A cue that scatters its layers sounds broken at a fraction of that. If the cue comes from a recorded base rather than a synth patch, the same trade-off appears at the sample level, and ten variants from one base covers the source-side version.
The rule worth keeping is a distinction, not a percentage: transpose the cue, do not scatter it. Everything else, from 2 percent to 8, follows from which of the two you are doing.