Creating Custom Cardiac Rhythms
Overview
Custom Rhythm Creation lets you build any cardiac rhythm from scratch, wave by wave, for studying or teaching cardiac electrophysiology. You can start from a blank canvas or from one of the built-in system rhythms, adjust it, and save it to your own library under My Rhythms for later editing or playback in the simulator.
Anatomy of a rhythm
A rhythm is one or more cardiac cycles, played back in sequence and then repeated. Each cardiac cycle is built from waves and segments — P, PR, F, Q, R, S, ST, T, TP, and U — placed one after another along the strip. A real cycle mixes waves with actual deflections (P, Q, R, S, T) and flat segments used purely to hold a baseline for a stretch of time (PR, ST, TP):
Key wave properties
Every wave or segment is defined by five numbers: amplitude, duration, apex position, start voltage, and end voltage.
Amplitude — the peak voltage
Amplitude is the wave’s peak voltage in millivolts, drawn directly — it is not an offset added to the start or end voltage. A wave that starts and ends at 0 mV (the default) with an amplitude of 2 mV peaks at exactly 2 mV. Positive amplitude deflects the wave upward; negative amplitude deflects it downward. At 0 mV amplitude, the wave disappears into a flat line.
The range slider in the editor runs from -2 mV to 3 mV.
Duration
Duration, in milliseconds, is how long the wave or segment lasts. Flat segments (PR, ST, TP) use duration with an amplitude of (approximately) 0 to hold a baseline for a stretch of time. The editor’s duration slider runs from 0 ms to 500 ms.
Apex position
Apex position is a number from 0 to 1 that places the peak in time within the wave’s duration — 0 puts the peak at the very start, 1 at the very end, and 0.5 (the default) at the midpoint. The editor’s slider moves in 5% steps across that full 0–1 range. On either side of the peak, the curve rises and falls smoothly rather than in a straight line.
Start and stop voltage — chaining waves
Start voltage and end voltage set where a wave begins and ends, in millivolts. By default both are 0, so an isolated wave rises from baseline and returns to baseline. Set them to something else to chain waves together: end one wave away from 0 mV, and start the next wave at that same voltage, and the strip flows continuously between them instead of snapping back to baseline first.
Stacking multiple waves of the same type
A cycle isn’t limited to one wave per type. Click the same wave-type button (say, P) more than once and the editor adds another independent instance — each with its own amplitude, duration, apex position, and start/end voltage — grouped together under that type in the wave list. They render one after another, in the order you added them, so you can build a compound shape out of what would otherwise be a single labeled segment.
Multiple cycles — beats that can differ
A rhythm can have more than one cardiac cycle, and each cycle’s waves are completely independent of the others. Use Add Cycle to add another one, then build its waves from scratch — nothing is shared between cycles. The simulator plays cycle 1, then cycle 2, and so on in the order they appear, then repeats the whole sequence from cycle 1 again. This is how you model a rhythm where beats vary — an occasional PVC, a dropped beat, an escape beat — rather than one that repeats an identical beat forever.
Building it in the editor, step by step
- Open My Rhythms and select Create New Rhythm, name it, and choose a starting point: a Template (a copy of a system rhythm you can edit freely) or a Blank canvas (an empty rhythm you build up wave by wave).
- Add a cardiac cycle with Add Cycle.
- Pick a wave type (P, PR, F, Q, R, S, ST, T, TP, or U) to add an instance of it to the cycle. Click the same type again to stack a second instance of it, as above.
- Select any wave instance to reveal its five sliders — amplitude, duration, apex position, start voltage, and end voltage — with a live preview of that wave and the running strip, both updating as you drag.
- Repeat for each wave or segment the cycle needs, matching start/end voltages between adjoining waves wherever you want a continuous shape.
- Add more cycles with Add Cycle for beats that differ from each other, as above.
- Use Noise Level to add a small amount of per-sample voltage jitter, so the strip reads less like a perfect synthetic curve and closer to a real recording.
Templates
Every system rhythm shipped with the simulator (Normal Sinus, Atrial Fibrillation, Long QT Syndrome, and the rest) is available as a template. Starting from a template copies its cycles and waves into your new rhythm so you can adjust specific waves — for example, widening a QRS complex or lengthening a QT interval — without building the whole cycle from nothing.
Saving your rhythm and the My Rhythms library
Saving requires signing in — rhythms are stored per-account, so anything you build while signed out won’t persist. Saving behavior is split in two:
- Adding a cycle, deleting a cycle, adding a wave, and renaming the rhythm or a cycle save immediately.
- Adjusting a wave’s sliders, or deleting a wave, only updates your local session — click Save All Changes to persist those edits.
My Rhythms lists everything you’ve saved. From there you can search by name, open a rhythm to keep editing it, or delete it from the library.
Heart-rate (BPM) calculation
The simulator estimates a rhythm’s heart rate (BPM) from the cycles you’ve built:
- If any cycle contains an R wave, it repeats your defined cycles 20 times to build a larger sample of beats, then anchors every RR interval to the nearest R waves and averages those intervals — the same measurement a clinician would take off a real strip.
- If no cycle has an R wave yet (for example, a rhythm still under construction with only a P wave placed so far), it falls back to averaging the total duration of each cycle instead — using your defined cycles directly, without repeating them — so you still get a reasonable estimate while you build.
- Either way, BPM is
60000 ÷ average interval (ms). Asystole always reports 0 BPM.
Tips
- Amplitude is the wave’s absolute peak voltage — not an offset from its start or end voltage.
- A mismatched end/start voltage pair between two adjoining waves draws a small jump, not a smooth transition.
- You can stack more than one wave of the same type in a cycle to build compound shapes.
- Each cycle’s waves are independent — beats don’t have to look the same from one cycle to the next.
- Slider edits and wave deletions need an explicit Save All Changes; adding/removing cycles and waves, and renaming, save immediately.
- For the most accurate BPM reading, include an R wave in at least one cycle.