A gimmick for VRChat avatars

HeartBeat

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.

Modular Avatar support VRChat Contact-driven 2-bit synced parameters
Chest contact zone and audio rangeA cross-section showing the 0.2-meter-radius detection zone on the avatar's chest (Chest bone) and the heartbeat's attenuation range, which reaches only up to 0.17 meters from its center.OriginHeadDetection radius 0.20 mAudio reaches up to 0.17 mAuto-follows the Chest bone
The heartbeat plays when someone's head enters the detection zone on the chest (radius 0.20 m). Since the sound itself carries only up to 0.17 m, it's audible only to that person, and only while they're touching.
Features

A quiet heartbeat, only when touched

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.

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.

Sound confined to close range

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.

Four heartbeat sounds included

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.

Drag-and-drop setup

Built on Modular Avatar components. Just drop it onto your avatar — the menu, parameters, and FX layer are all merged automatically on upload.

Auto-follows the Chest bone

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.

Toggle on/off from the menu

Adds one toggle to your Expressions menu. Turn the whole gimmick off when you don't want it (defaults to ON, saved).

Setup

Setup steps

If your Unity project already has Modular Avatar installed, this works in 3 steps.

Install Modular Avatar

First, install Modular Avatar into your project. Without it, the menu and parameters won't be merged in.

Add the prefab to your avatar

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.

Adjust position and range for your body

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.

To change the heartbeat sound. Swap the AudioClip on Origin's AudioSource for one of HB_Chimera1 through HB_Chimera4. HB_Chimera1 is set by default.
Sounds

Included heartbeat sounds (4 variations)

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.

HB_Chimera1 Default
A calm, low, steady heartbeat

A calm, low heartbeat kept to a perfectly steady rhythm. The highest audio quality in the series.

Format
MP3 / 48,000 Hz / Stereo / 320 kbps
Length
Approx. 6.24 s (looped)
Rhythm
Approx. 63 bpm, 6 beats
HB_Chimera2
A slight variation on Chimera 1

Another take at the same tempo as Chimera1, mixed for a lighter, more natural texture. Also has a smaller file size.

Format
MP3 / 48,000 Hz / Stereo / 128 kbps
Length
Approx. 6.29 s (looped)
Rhythm
Approx. 63 bpm, 6 beats
HB_Chimera3
A human × large-animal fusion heartbeat

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.

Format
MP3 / 48,000 Hz / Stereo / 320 kbps
Length
6.240 s (looped)
Rhythm
2.08 s cycle (approx. 29 bpm), 3 beats
Composition
Large animal (base) + human (mix ratio 0.55)
HB_Chimera4
A triple-layered fusion heartbeat

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.

Format
MP3 / 48,000 Hz / Stereo / 320 kbps
Length
6.240 s (looped)
Rhythm
1.56 s cycle (approx. 38.5 bpm), 4 beats
Composition
Large animal (1.0) + mid-range heartbeat (0.7) + human (0.5)
Unity import settings (common to all 4 files)
ItemValueRationale
Load TypeDecompress On LoadEliminates delay at playback start. Memory cost is low, since the loop is short
Compression FormatVorbis / Quality 1Keeps avatar size down while preserving the low end of the heartbeat
Force To MonoOffStays stereo, so spatial positioning isn't lost
NormalizeOnEvens out loudness across the 4 variations
Load In BackgroundOnDoesn't block world loading
Spatialize (3D)OnPositions the sound as if it's coming from the chest
How it works

Driven by two independent layers

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.

HeartBeat control flowThe Expressions menu toggle switches the HeartBeat parameter, and the HeartBeat layer controls whether the Origin object is active. In parallel, the Contact Receiver switches the HeartBeat_Contact parameter, and the HeartBeat_Contact layer controls whether the AudioSource is enabled.Menu toggleExpressions MenuHeartBeatbool, synced, saved, default ONHeartBeat layerOn.anim / Off.animHead touches chestContact ReceiverHeartBeat_Contactbool, synced, not savedHeartBeat_Contact layerPlay.anim / Stop.anim→ Shows/hides Origin→ Enables/disables AudioSourceThe two layers are independent. If the menu is OFF, Origin itself disappears, so contact won't trigger sound.
Reference

Parameters and configuration

Only two synced parameters are used on the avatar (two bools = 2 bits).

Expression parameters
NameTypeSyncedSavedDefaultRole
HeartBeatboolYesYesONTurns the whole gimmick on/off. Controlled from the menu toggle
HeartBeat_ContactboolYesNoOFFWhether a head is touching. Written automatically by the Contact Receiver
Key adjustable values (on Origin)
ComponentItemDefaultDescription
VRC Contact ReceiverRadius0.2Radius of the sphere that detects a head (m). Larger makes it easier to trigger
VRC Contact ReceiverPositionZ +0.03An offset that pushes the detection sphere slightly in front of the chest
VRC Contact ReceiverCollision TagsHeadThe body part it reacts to. Limited to the head only
VRC Contact ReceiverAllow Self / OthersBoth onReacts to both your own head and other players' heads
VRC Spatial Audio SourceNear0.12No attenuation up to this distance — plays at full volume (m)
VRC Spatial Audio SourceFar0.17Beyond this distance, it becomes inaudible (m)
VRC Spatial Audio SourceGain10Volume. Since the audible range is extremely narrow, this keeps close-range presence strong
AudioSourceAudioClipHB_Chimera1The heartbeat sound to play. Choose and swap from the 4 variations
AudioSourceLoopOnRepeats while contact is maintained
Included files
FileContents
HeartBeat.prefabThe gimmick itself. Includes a full set of Modular Avatar components
HB_Chimera1-4.mp3The 4 heartbeat sounds
HeartBeat.controllerAnimatorController (2 layers)
On.anim / Off.animGimmick on/off
Play.anim / Stop.animHeartbeat play/stop
Menu.asset / Params.assetExpressions menu and parameters, for merging manually without the prefab
Notes

Before you install

Due to how Contact and spatial audio work in VRChat, there are situations where it simply won't function.

Won't trigger if the other person's Contact is disabled

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.

Modular Avatar is required

Menu, parameter, and FX layer integration is handled by Modular Avatar. Uploading without it installed won't work.

Requires an avatar with a Chest bone

MA Bone Proxy attaches to the Humanoid Chest bone. On rigs where Chest isn't assigned, there's nowhere for it to follow to.

The sounds are entirely fictional

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.