A player walks across a wooden floor for three minutes. During that time they take about three hundred steps, and each one triggers the same footstep sample. The audio designer, aware of the problem, has provided four variations of the wood footstep. The player still hears the repetition within the second minute, because four variations at a fixed random distribution means that within any eight consecutive steps, on average every variant has played twice. The ear is very good at recognizing a pattern that repeats at a rate it can predict, even when the individual variations are different.
This is the core problem with variation systems: it is not about the number of variations. It is about the perceptual distance between them. Four variations that are separated by small amounts sound like one variation. Two variations that are separated by a large amount sound like two different sounds. The design question is not how many variations to create but how different each variation needs to be so the ear registers it as a new sound rather than a repeat.
The surface-specific footstep guide covers the design of the individual variations for one category. This article is about the system that manages them: the perceptual thresholds that determine whether a variation is noticeable, the pool size that works for each category, and the difference between varying the parameters of a sound and varying the sample itself.
How different does a variation have to be for the ear to notice it?
The perceptual thresholds for audio variation have been studied in the context of music perception and audio compression. The relevant findings are that the ear detects a change in pitch, timing, or level only when the change exceeds a minimum value. Below that value, the ear processes the two sounds as identical, regardless of whether the underlying waveforms are technically different.
The thresholds that matter for game sound effect variation are:
| Dimension | Threshold | Effect below threshold |
|---|---|---|
| Pitch | ±2 semitones | Sounds like the same sound, slightly detuned |
| Timing | ±5 ms | Sounds like the same event, not a different one |
| Level | ±1.5 dB | Sounds like the same sound at a slightly different volume |
| Duration | ±10% | Sounds like the same envelope, slightly compressed |
| Filter cutoff | ±15% | Sounds like the same timbre, slightly darker or brighter |
These are the thresholds at which the ear begins to register a change as a change. Below them, the sound is perceived as the same. The practical implication for variation systems is that random variation has to exceed the threshold to count. A pitch randomizer set to ±50 cents — a quarter tone — produces variations that the ear cannot reliably distinguish, which means the variation is present in the data but not in the perception.
The thresholds also interact. A variation that is below threshold in pitch but well above threshold in timing can still be perceived as a different sound, because the ear is combining the two dimensions. The general rule is that at least one dimension needs to be clearly above threshold, and the combined effect of all dimensions is what the ear actually perceives.
This is why the coin sound design uses a ±3 percent pitch shift for its variation — the shift is small enough to preserve the sound's identity but large enough that the ear registers the difference over repeated playbacks. The same reasoning applies to any sound with a short duration and a clear tonal identity.
What is the right pool size for each sound category?
The number of variations in a pool is not arbitrary. It depends on how often the sound plays during a gameplay session, how long the sound lasts, and how distinctive each variation is from the others. The general rule is that the pool should be large enough that no variation plays twice within the time it takes the player to notice a repeat.
The empirical values that work for most games are below. The pool sizes are the number of samples the audio designer should produce, and the playback intervals are the minimum time between two plays of the same sound.
| Category | Playback rate | Pool size | Minimum repeat interval |
|---|---|---|---|
| UI clicks | 1 to 10 per second | 3 to 5 | 2 to 3 seconds |
| Footsteps | 2 to 4 per second | 4 to 6 | 5 to 8 seconds |
| Weapon fire | 1 to 10 per second | 3 to 5 | 4 to 6 seconds |
| Impacts | 0.5 to 3 per second | 5 to 8 | 10 to 15 seconds |
| Pickups | 1 per 5 to 30 seconds | 3 to 4 | 20 to 30 seconds |
| Ambient events | 1 per 10 to 60 seconds | 5 to 10 | 60 to 120 seconds |
The minimum repeat interval is the more important number. If a footstep variation is allowed to replay within five seconds of its previous use, the player will notice the repeat regardless of how many variations exist. If the variation is suppressed for eight seconds after it plays, the player hears a sequence of distinctly different sounds even if the pool is only four samples.
The playback rate column is what makes the pool size category-specific. A sound that plays ten times per second needs a shorter minimum repeat interval than a sound that plays once per minute, because the player has less time between events and is paying less attention to each individual occurrence. Conversely, an ambient event that plays once every thirty seconds is going to be heard individually, and the pool should be large enough that the player does not learn the variations within the first few minutes.
Random selection or round-robin: which distribution is better?
Once the pool exists, the selection system has to decide which variation plays next. The two common approaches are uniform random selection and round-robin cycling, and each has a different failure mode.
Uniform random picks any variation with equal probability on each playback. The distribution is statistically correct, but the actual sequence can produce repeated picks. Over 100 plays of a 5-variation pool, the expected distribution is 20 plays per variation, but the actual variance means that some variations will be played 25 times and others 15. More importantly, the sequence can contain runs of the same variation — three consecutive picks of variation 2 are possible with probability 1 in 25 for any specific position in the sequence.
Round-robin cycles through the pool in order, which guarantees that every variation plays exactly once before any repeats. This eliminates the runs, but it introduces a different problem: the order becomes predictable. The player who hears variations 1, 2, 3, 4, 1, 2, 3, 4 will eventually anticipate variation 3 after variation 2, and the anticipation is just as noticeable as the repetition it was meant to solve.
The distribution that works best for game audio is neither of these. It is a shuffled bag: the pool is shuffled at the start, variations are played in the shuffled order, and when the pool is exhausted it is reshuffled and played again. This guarantees that every variation plays once before any repeats, but the order is different each cycle, so the player cannot predict the next sound.
A further refinement is to add a minimum-distance constraint on top of the shuffled bag. After a shuffle, the system checks whether the last variation of the previous cycle and the first variation of the new cycle are the same. If they are, the new cycle is re-shuffled until the first variation is different from the last. This prevents the boundary case where a variation plays at the end of one cycle and the start of the next, which is the one place a shuffled bag can still produce a consecutive repeat.
Parameter variation or sample variation: which should you use?
There are two distinct ways to create variations of a sound, and they have different costs and produce different perceptual results. Parameter variation uses the same sample and adjusts its pitch, volume, or filter at runtime. Sample variation uses multiple pre-recorded samples that are genuinely different from each other.
Parameter variation is cheap. It requires no additional memory, no additional file size, and no additional production time. A single footstep sample with a pitch randomizer set to ±5 percent and a volume randomizer set to ±2 dB produces four perceived variations from one sample. For most short sounds, this is enough to eliminate the mechanical quality.
Sample variation is more expensive but produces a different kind of result. Two recordings of the same footstep on the same surface, taken at different moments, are not just pitch-shifted versions of each other. They have different attack characteristics, different transient details, and different micro-timing. The ear reads these differences as genuinely different events rather than as the same event played twice.
The practical answer for most projects is a hybrid approach: three recorded samples per sound, each with parameter variation applied at runtime. The math works out to nine perceived variations — three samples times three effective parameter variations each — from three source files. This is a reasonable compromise between the memory cost of sample variation and the limited perceptual effect of parameter variation alone.
| Approach | Memory cost | Perceived variations | Best for |
|---|---|---|---|
| Parameter only | 1 sample | 3 to 4 | Short sounds, high playback rate |
| Sample only | 4 to 6 samples | 4 to 6 | Sounds where identity matters |
| Hybrid (3 × 3) | 3 samples | 7 to 9 | Most game sounds |
| Hybrid (5 × 2) | 5 samples | 8 to 10 | Frequently played sounds |
The choice between the three rows depends on how much the player is paying attention to the sound. A footstep in a fast-paced action game is heard as a texture, and the parameter-only approach is often sufficient. A weapon impact in a slow-paced tactical game is heard as a discrete event, and the sample variation is worth the memory cost. The hybrid approach works for the sounds in between.
How do you prevent the variations from becoming recognizable on their own?
A variation system that eliminates repetition of the same sound can still produce recognizable patterns at the pool level. The player who hears three variations in sequence during combat will eventually learn the three variations as a set, and the set itself becomes the pattern.
The solution is to make the variations less coherent with each other. The three variations of a footstep should share the surface character but differ in pitch, timing, and attack character by more than the perceptual threshold. A variation that is pitch-shifted by 5 percent and time-shifted by 20 milliseconds and has a slightly different attack is genuinely different from the base sound, not just a transposed version of it.
The specific dimensions that work best for making variations feel genuinely different are:
- Pitch. ±3 to ±8 percent, depending on the sound's tonal clarity. Tonal sounds tolerate less variation before they sound wrong; noise-based sounds tolerate more.
- Duration. ±5 to ±15 percent on the tail. The attack should stay consistent, but the decay can vary more than the pitch without breaking the sound's identity.
- Filter cutoff. ±10 to ±20 percent. A slightly brighter or darker version of the same sound reads as a different instance of the same event, which is exactly what the variation should be.
- Attack character. Small differences in the first 5 milliseconds of the sound, produced by a very short filter envelope or a transient shaper. This is the dimension the ear is most sensitive to, because the attack is what identifies the sound as a specific type of event.
- Micro-timing. A ±2 to ±5 millisecond offset on the start of the sound, which mimics the natural variation in human performance.
The last two dimensions — attack character and micro-timing — are the ones most variation systems miss, and they are the ones that produce the strongest perceptual effect. A sound that plays at exactly the same moment and with exactly the same attack every time is recognized as mechanical even if the pitch varies. The slight difference in when the sound starts and how it begins is what makes a sequence of variations feel like separate events rather than a loop.
The procedural footstep system generates variations at the synthesis level, which means the attack character and the micro-timing are genuinely different in every playback rather than randomized from a fixed pool. This is the reason the procedural approach eliminates repetition more thoroughly than any sample-based variation system can. The tradeoff is the CPU cost of generating the sound at runtime, which is only worth paying for the sounds that play most frequently.
What are the memory and performance costs of a variation system?
A variation system has a direct memory cost proportional to the number of samples in the pool and an indirect CPU cost proportional to the complexity of the selection logic. Both are manageable if the system is designed with the constraints in mind.
The memory cost is straightforward. A one-second stereo sample at 44.1 kHz is about 170 KB uncompressed, or about 35 KB compressed with Vorbis at 128 kbps. A pool of five variations is therefore 175 KB compressed. For a game with 200 sounds, if every sound had a pool of five variations, the memory cost would be 35 MB — which is close to the total budget for a mobile game's audio assets.
The practical solution is to give variation pools only to the sounds that play frequently enough to need them. A sound that plays once per session does not need a variation pool, because the player will never hear it twice. A sound that plays ten times per second needs a pool and needs the pool to be tuned carefully. The category table earlier in this article gives the pool sizes that correspond to each playback rate.
The CPU cost of the selection logic is negligible for any reasonable implementation. A shuffled bag with a minimum-distance constraint is a few lines of code that runs in less than a microsecond, and it can be shared across all the sounds in a category. The voice limiting system has a larger CPU footprint than the variation system does, because voice limiting has to evaluate the entire active voice list on every update.
The memory cost of the variation pool is what dominates the design decision. A pool of five variations for a frequently played sound is almost always worth the memory. A pool of ten variations for a rarely played sound is almost never worth the memory, because the player will not hear enough of the variations to notice the difference between ten and five.
How do you know when the variation system is working?
The test is whether the player notices the repetition. This is different from testing whether the sound is technically varied, because the ear's perceptual thresholds mean that many technically different sounds are perceptually identical. The only way to know whether the system works is to listen to it in the context it was designed for.
The most useful test is a solo play session with the volume turned up slightly higher than usual. The player should not be consciously listening to the audio, but with the volume higher, any repetition pattern will become more noticeable. If the player hears the audio as a continuous texture rather than a series of discrete events, the variation system is working. If the player can identify any specific sound as having played before, the system needs more variations or a longer minimum repeat interval.
The second test is to record a five-minute gameplay session and listen back to it without the visuals. The audio alone will reveal the patterns that were hidden during play, because the visual channel was providing context that masked the repetition. If the recorded audio sounds like a loop, the live experience probably does too, even if the player did not notice.
The third test is to disable the variation system and play the same content again. The comparison between the two sessions should produce a noticeable difference in how the audio feels, even if the individual sounds are technically similar. If the two sessions sound the same, the variation system is not contributing anything, because the variations are below the perceptual threshold or the pool size is too small to matter.
The final consideration is that variation is not the same as randomization. A variation system that produces a different sound every time can still be recognizably repetitive if the differences are too small. The goal is not to produce technically unique sounds on every playback; it is to produce sounds that the ear perceives as belonging to the same category without being individually recognizable. The system that achieves this is one where the variations exceed the perceptual threshold in at least two dimensions, the pool is sized for the playback rate, and the selection logic avoids both the predictable order of round-robin and the runs of uniform random.
Generate Sound Variation Pools
Open the SfxMaker generator and create the source sounds for your variation pools. For each sound that needs a pool, generate the base version first, then create the variations by adjusting the pitch, duration, and filter settings slightly. The generated files are all yours to use without licensing complications, which makes them suitable for the pool sizes described in this article.
Open SfxMaker Generator →