Plays on contact
A VRChat Contact Receiver detects the Head tag (a player's head). It plays only while touching, and stops the moment contact is broken.
Heartbeat Gimmick
A quiet heartbeat that plays only when someone's head touches your chest. This VRChat avatar gimmick includes 4 "chimera heartbeats" — hearts of a large animal and a human layered into one.
It doesn't play continuously. The heartbeat is heard, at a volume confined to close range, only while someone's head is touching your chest.
A VRChat Contact Receiver detects the Head tag (a player's head). It plays only while touching, and stops the moment contact is broken.
Attenuation is set to Near 0.12 m / Far 0.17 m. It never reaches bystanders further away, so it won't intrude on the surrounding soundscape.
Original sounds that layer the heartbeats of a large animal and a human into a single pulse. Four variations, each with a different weight and tempo, are ready — just swap the AudioClip to choose.
Built on Modular Avatar components. Just drop it onto your avatar — the menu, parameters, and FX layer are all merged automatically on upload.
MA Bone Proxy attaches to the avatar's Chest bone at runtime. The positioning on the chest is preserved even if the base body changes.
Adds one toggle to your Expressions menu. Turn the whole gimmick off when you don't want it (defaults to ON, saved).
If your Unity project already has Modular Avatar installed, this works in 3 steps.
First, install Modular Avatar into your project. Without it, the menu and parameters won't be merged in.
Drag and drop HeartBeat.prefab anywhere under your avatar in the Hierarchy. The exact position doesn't matter — it moves to the Chest bone automatically at runtime.
Select the child object Origin and position it at the center of the chest. If the detection zone is too wide or too narrow, adjust Radius (default 0.2) on the VRC Contact Receiver.
To change how far the sound carries, adjust Far (default 0.17) on the same Origin's VRC Spatial Audio Source.
AudioClip on Origin's AudioSource for one of HB_Chimera1 through HB_Chimera4. HB_Chimera1 is set by default.All four are original "Chimera" series sounds, synthesized from the heartbeats of a large animal and a human. Each differs in weight, tempo, and density. Loop lengths are matched, so swapping between them leaves no seam.
A calm, low heartbeat kept to a perfectly steady rhythm. The highest audio quality in the series.
Another take at the same tempo as Chimera1, mixed for a lighter, more natural texture. Also has a smaller file size.
Built on the low, heavy heartbeat of a large animal, with a human's fast, high-pitched heartbeat layered on top like an overtone. Tempo follows the large animal's — a slow, heavy pulse.
The densest sound in the series, stacking a large animal's low heartbeat with a mid-range body resonance and a human's bright overtones. Slightly faster than Chimera3.
| Item | Value | Rationale |
|---|---|---|
| Load Type | Decompress On Load | Eliminates delay at playback start. Memory cost is low, since the loop is short |
| Compression Format | Vorbis / Quality 1 | Keeps avatar size down while preserving the low end of the heartbeat |
| Force To Mono | Off | Stays stereo, so spatial positioning isn't lost |
| Normalize | On | Evens out loudness across the 4 variations |
| Load In Background | On | Doesn't block world loading |
| Spatialize (3D) | On | Positions the sound as if it's coming from the chest |
Whether the gimmick itself is on, and whether someone is currently touching, are handled by two separate layers. Turn it off from the menu and it stays silent even on contact.
Only two synced parameters are used on the avatar (two bools = 2 bits).
| Name | Type | Synced | Saved | Default | Role |
|---|---|---|---|---|---|
| HeartBeat | bool | Yes | Yes | ON | Turns the whole gimmick on/off. Controlled from the menu toggle |
| HeartBeat_Contact | bool | Yes | No | OFF | Whether a head is touching. Written automatically by the Contact Receiver |
| Component | Item | Default | Description |
|---|---|---|---|
| VRC Contact Receiver | Radius | 0.2 | Radius of the sphere that detects a head (m). Larger makes it easier to trigger |
| VRC Contact Receiver | Position | Z +0.03 | An offset that pushes the detection sphere slightly in front of the chest |
| VRC Contact Receiver | Collision Tags | Head | The body part it reacts to. Limited to the head only |
| VRC Contact Receiver | Allow Self / Others | Both on | Reacts to both your own head and other players' heads |
| VRC Spatial Audio Source | Near | 0.12 | No attenuation up to this distance — plays at full volume (m) |
| VRC Spatial Audio Source | Far | 0.17 | Beyond this distance, it becomes inaudible (m) |
| VRC Spatial Audio Source | Gain | 10 | Volume. Since the audible range is extremely narrow, this keeps close-range presence strong |
| AudioSource | AudioClip | HB_Chimera1 | The heartbeat sound to play. Choose and swap from the 4 variations |
| AudioSource | Loop | On | Repeats while contact is maintained |
| File | Contents |
|---|---|
| HeartBeat.prefab | The gimmick itself. Includes a full set of Modular Avatar components |
| HB_Chimera1-4.mp3 | The 4 heartbeat sounds |
| HeartBeat.controller | AnimatorController (2 layers) |
| On.anim / Off.anim | Gimmick on/off |
| Play.anim / Stop.anim | Heartbeat play/stop |
| Menu.asset / Params.asset | Expressions menu and parameters, for merging manually without the prefab |
Due to how Contact and spatial audio work in VRChat, there are situations where it simply won't function.
If Contact is turned off by the other person's settings or Safety state, touching won't get a response. It only works with people who have contact enabled.
Menu, parameter, and FX layer integration is handled by Modular Avatar. Uploading without it installed won't work.
MA Bone Proxy attaches to the Humanoid Chest bone. On rigs where Chest isn't assigned, there's nowhere for it to follow to.
They aren't recordings or processing of real biological data — every sound is a synthesized creation. They aren't intended for medical or biometric use.