Three games, three completely different approaches to the same problem. Animal Crossing's Animalese is a full synthetic language that the player learns to read by ear. Undertale's dialogue blips are a single short square wave per character, pitched to distinguish one speaker from another. Balatro's UI sounds are a dense percussion layer that turns every card selection and score calculation into a rhythmic event. Each approach solves the same problem — giving text a voice without recording a voice — and each one produces a result that the other two could not.
The three are worth comparing because they represent the three design axes that a dialogue blip system can move along. Animalese is at one extreme: maximum complexity, maximum information, maximum synthesis. Undertale is in the middle: minimal synthesis, but careful per-character mapping. Balatro is at the other extreme: almost no dialogue, but a dense rhythmic feedback layer that carries the game's personality through sound instead of words.
The generic typewriter blip guide covers the implementation patterns that all three games share. This article is about what each game does differently, and what a developer building a new dialogue system can take from each approach.
What makes Animalese sound like a language instead of a series of beeps?
Animalese is the synthesized voice that Animal Crossing characters speak in. It is not a recording, and it is not a single repeated blip. Each letter of the displayed text produces a short vocal-like sound, and the sequence of sounds tracks the rhythm of the sentence being “spoken.” The result is a voice that the player cannot understand as words but can understand as tone, emphasis, and emotion.
The synthesis is simpler than it sounds. Animalese is generated by a formant synthesizer that produces one short sound per character, with the pitch and formants determined by the character and by the character's personality. The original Animal Crossing on GameCube used a formant synthesizer built into the game's audio engine; later entries in the series have refined the synthesis but kept the same principle.
| Parameter | Animalese behavior |
|---|---|
| Synthesis type | Formant synthesis (vowel-like tones) |
| Per-character mapping | Vowels have distinct formants; consonants are shorter |
| Pitch range | Varies by character personality; higher for energetic characters |
| Timing | Matches the text reveal rate; pauses at punctuation |
| Length per character | Roughly 40 to 80 milliseconds |
The key design decision is that Animalese maps vowels differently from consonants. A vowel character (a, e, i, o, u) produces a longer, sustained formant tone. A consonant produces a shorter, noisier sound. The ear reads this pattern as speech even though the words are nonsense, because the pattern of long-vowel-short-consonant is the pattern of real language.
The personality variation is the second design decision. Each character has a different “voice” determined by the pitch range and the formant frequencies. A cheerful character speaks with higher formants; a grumpy character speaks with lower ones. The player learns to recognize these voices within the first few minutes, which is why the game can get away with no voice acting at all.
The takeaway for a developer is not to replicate Animalese. The takeaway is the principle: a blip system that varies the sound by character type (vowel vs consonant, stressed vs unstressed) produces a voice that the ear reads as speech, even when the individual sounds are nonsense. A single blip per character, played at the same pitch every time, does not.
How does Undertale use a single square wave to give every character a distinct voice?
Undertale's dialogue blips are the opposite of Animalese. They are a single short square wave played once per character of text, with a duration of roughly 30 to 50 milliseconds. The waveform is not formant-synthesized; it is the simplest possible pulse. What changes between characters is the pitch, and only the pitch.
| Character | Relative pitch | Character quality |
|---|---|---|
| Sans | Low | Relaxed, understated |
| Papyrus | High | Energetic, loud |
| Toriel | Mid, soft | Warm, maternal |
| Flowey | Mid-high, sharp | Unsettling, bright |
| Narrator | None (silent) | Neutral, descriptive |
The narrator's silence is the design decision that makes the rest of the system work. Undertale's narrator is a distinct voice from the characters, and it is the only voice that does not produce a blip. The result is that the player learns to associate blips with spoken dialogue and silence with description. When a character speaks, the blips tell the player “this is a character talking”; when the narrator speaks, the absence of blips tells the player “this is description.”
The second design decision is that Undertale's blips are quieter than the music and the sound effects. The blips are present, but they are not foreground. They sit underneath the dialogue text and above the background music, which is the same placement that the visual novel blip guide recommends. The difference is that Undertale uses the blips to identify characters, not to carry the emotional weight of the scene. The music does that.
The takeaway is that pitch alone is enough to distinguish a small cast. Undertale has a dozen major characters and uses pitch as the only distinguishing parameter, with the narrator's silence as the reference point. A developer building a dialogue system with a small cast can use the same approach without any synthesis complexity. The blip does not need to sound like a voice; it needs to sound like the character.
Why does Balatro's UI audio feel like part of the game's personality?
Balatro has almost no dialogue. The game is a poker roguelike with card selection, chip scoring, and multiplier chains, and the text on screen is mostly numbers and card names. The audio is not a dialogue blip system; it is a UI feedback system. But it is the most instructive of the three for a developer building a dialogue system, because it shows how short sounds can carry a game's personality when there is no voice to carry it.
Balatro's audio is built from short, punchy, synthesized sounds. Card selection produces a click with a slight pitch rise. Chip scoring produces a sequence of short tones that rise in pitch as the score increases. The multiplier sound is a short, bright, metallic ping. Every sound is under 100 milliseconds, and every sound is deliberately satisfying in a way that most UI audio is not.
| Event | Sound character | Duration |
|---|---|---|
| Card select | Short click with upward pitch bend | 40–60 ms |
| Chip score increment | Ascending sequence of short tones | ~30 ms per tone |
| Multiplier trigger | Bright metallic ping with fast decay | 80–120 ms |
| Hand played | Layered impact with a short tail | 150–250 ms |
| Game over | Descending pitch with a long decay | 500–800 ms |
The design principle that Balatro demonstrates is escalation. The sounds escalate with the score. A small hand produces a small sequence of tones; a large hand produces a longer sequence that climbs higher in pitch. The player hears the score growing, not just sees it, and the audio reinforces the dopamine loop that the friendly/hostile tone design guide describes.
The second principle is timing. Balatro's sounds are tightly synchronized with the visual events. The card select sound plays at the moment of selection, not on the next frame. The chip score sound plays on each increment, not on the final total. The result is that the audio feels connected to the action rather than layered on top of it.
The takeaway for a dialogue system is that the same principles apply. A dialogue blip that escalates with the character's emotional intensity, or that plays at the exact moment of each character reveal, produces a more satisfying result than a blip that plays at a fixed pitch and a fixed rate. The escalation does not need to be complex. A small pitch rise across a single line is enough to make the line feel like it is going somewhere.
What do the three approaches have in common, and what does that tell us?
The three games are wildly different in synthesis, in cast size, in genre, and in the role that dialogue plays. But they share three design decisions that are worth naming explicitly, because those decisions are what make the blips work in each case.
| Principle | Animalese | Undertale | Balatro |
|---|---|---|---|
| The blip is tied to the character, not to the text | Each character has a distinct formant profile | Each character has a distinct pitch | Each event has a distinct sound character |
| The blip rate tracks the reveal, not the character | Blips stop at punctuation and pauses | Blips stop at punctuation and pauses | Sounds play on events, not on a timer |
| The blip is short enough to overlap without muddying | 40–80 ms per character | 30–50 ms per character | 30–120 ms per event |
The first principle — the blip is tied to the character — is the one that makes the three games feel different from each other. Animalese's blips are tied to the character through formants, Undertale's through pitch, Balatro's through sound character. In each case, the player learns to identify the source of the sound within a few playbacks, and the blip becomes a shorthand for “this is who is speaking” or “this is what is happening.”
The second principle — the blip rate tracks the reveal — is the one that most tutorials get wrong. A blip that plays at a fixed rate, regardless of the text speed, sounds mechanical. A blip that tracks the reveal, with pauses at punctuation and at explicit wait tags, sounds like speech. The typewriter blip guide covers the specific implementation; the principle is the same in all three games.
The third principle — the blip is short enough to overlap — is the one that determines whether the blips sound like a voice or like a malfunctioning machine. A blip that is longer than the gap between characters will overlap with the next blip, and the result is a muddled wash rather than a series of distinct sounds. All three games keep their blips under 120 milliseconds, which is the range that allows overlap without muddying.
How does a developer decide which approach to use?
The choice between the three approaches is not a choice between good and bad. It is a choice about what the dialogue system is supposed to do, and what the game's other audio is doing. A game with a large cast and a strong music score can use Undertale's minimal approach because the music carries the emotional weight. A game with a small cast and a strong emphasis on character voice can use Animalese's synthesis because the blips are the voice. A game with no dialogue but a strong interface identity can use Balatro's event-based sounds because the interface is the game.
| Project characteristic | Recommended approach | Reason |
|---|---|---|
| Large cast, strong music | Undertale-style (pitch per character) | Music carries emotion; blips identify speaker |
| Small cast, voice-first aesthetic | Animalese-style (formant synthesis) | Blips are the voice; no other audio competes |
| Minimal dialogue, strong interface | Balatro-style (event feedback) | The interface is the game; sounds carry identity |
| Voice acting present | Disable blips or duck them heavily | Voice and blips serve the same function; playing both is muddled |
| Mobile or handheld target | Undertale-style with a frequency check | Small speakers reproduce mid-range well; high-pitch blips disappear |
The voice-acting row is the one that most projects get wrong. A game that has full voice acting does not need dialogue blips; the voice is already doing the work that the blips would do. A game with partial voice acting (grunts, exclamations, short phrases) can keep the blips at full volume because the voice and the blips are not competing for the same role. The ducking guide covers the sidechain approach; for a dialogue system, the simplest approach is a boolean that disables the blips on voiced lines.
The mobile row is the one that most projects underestimate. A phone speaker has almost no output below 200 Hz and a peak around 1 kHz. A blip at 2.5 kHz will be loud and piercing; a blip at 400 Hz will be inaudible. The mobile app blip guide covers the specific frequency ranges that work on phone speakers; the principle is that a blip designed on headphones can be inaudible or painful on a phone.
What can a developer building a new dialogue system take from these three games?
The most useful lesson is that the three games made three different choices about the same set of parameters, and each choice is defensible in its context. A developer who is building a dialogue system should make the same kind of choice deliberately, rather than defaulting to one approach and hoping it works.
The first decision is the cast size. A game with three speaking characters can use pitch as the only distinguishing parameter. A game with thirty needs a more complex system, either a formant synthesis like Animalese or a layered per-character sound set. The threshold is roughly eight to ten characters; below it, pitch is enough, above it, the player starts to lose track of which pitch is which.
The second decision is the emotional range. A game that is comedic and light can use a fixed-pitch blip for each character, because the pitch does not need to carry emotion. A game that is dramatic and varied needs the blip to escalate with the scene, which means the pitch has to change within a single line, not just between characters. Balatro's escalation principle applies here.
The third decision is the audio budget. A game with a full music score and a lot of sound effects can afford a minimal blip system, because the blips are not carrying the audio. A game with minimal music and minimal effects needs the blips to carry more, which means a more complex synthesis. Animalese is the extreme case; most games land somewhere in between.
The fourth decision is the voice acting. A game with voice acting should disable the blips, or duck them heavily. A game without voice acting should use the blips as the voice. The two cannot coexist at full volume, because they are doing the same job.
These four decisions are the ones that determine the shape of the dialogue blip system. The randomized variation guide covers the per-playback variation; the layering guide covers the case where the blip needs to be combined with other layers. The three games in this article are the reference points for the decisions that come before those implementation details.
The final observation is that none of the three games treats the blip as a decoration. In each case, the blip is doing a specific job — identifying a character, carrying a personality, or reinforcing an interface event — and the design decisions follow from that job. A developer who starts with “what job is this blip doing” will make better decisions than a developer who starts with “what sound should this blip make,” because the job determines the sound, not the other way around.
Create a Blip Set for Your Own Dialogue System
Open the SfxMaker blip generator and create a reference set for your project. Start with three blips at different pitches for a three-character cast, and test them in a dialogue scene. The reference set is the starting point for the four decisions described in this article.
Open Blip Sound Generator →