Heartbeat sounds

Heartbeat sound is maybe the most familiar and atavistic sound we know. It’s power, both relaxing and angsty at the same time, can be useful to obtain some involvement in the listener. Here’s a sample sound:

Human heart beating at 61 bpm (Cc-by-3.0)

Without bothering of too many details, let’s examine the typical ECG (electrocardiograph) curve: we will use this information to recreate the same curve procedurally.

Normal sinus rhythm image

As we see, the waveform is made-up of many portions (wave P, Q, R, S, T and U), each one related to the contraction/relaxation of a specific section of the heart muscle.

Each of these parts has it’s own relative amplitude and duration. We’ve based our calculations on these average values, since they vary not only from individual to individual but also from the measurement point. Thus we have drawn a qualitative graph on witch we can base our sound waveshaping.


This is a challenging work, we don’t know how it will sound at the end, but we’re sure it’s worth working on.

HeartBeater: first attempt of heartbeat sound synthesis

HeartBeater interface

HeartBeater is our first attempt to build a synthetizer producing an heartbeat sound in a procedural way.

HeartBeater synth creates the sound calculating the ECG graph in real-time according to the BPM frequency you have set.

Each curve portion is approximated usign a cosine function. This cosine is warped in different ways so it conforms to the ECG graph.

Each part duration, as well as time between them, has been parametrized so it’s possibile to vary the BPM frequency without losing the genearal waveform shape.

Here’s the sound as recorded directly from the patch. As you can hear it is slightly different from the sample sound shown at the beginning of this article.

heart sound synthetized with HeartBeater PureData patch by tracing the ECG curve shape

The main difference is that this sound doesn’t have the double beat rhythm characteristic of the sample sound and, though it has been used with interesting result (e.g. OTTO) it is necessary to improve the PuraData patch to create a more realistic one.


LovelyHeart interface

Thus, we restarted from scratch, redesigning the patch, basing no more on the ECG graph but applying a “retro-engineering” process on the sample sound!

We finally ended up with LovelyHeart, new heartbeat synthetizer that seems to sound more realistic.

As you can perceive in the samples below (recorded directly within the patch), the new sound is made up of two distinct components:

beats and murmurs mixed together

beats sounds only

murmurs sounds only


GitHub Octocat

Remember, in order to use these patches you need PureData (Vanilla version is sufficient) up and running: you can download it from the PureData official web site.

Read synth manuals for more information. Contact us for any question or suggestion. We’re looking forward for hearing from you.



If you find this article useful and you like it, please leave a comment below: let us know what do you think about it, we'd really appreciate it. Thank you very much and, as always, stay tuned for more to come!