Quantify muscle activity and fatigue from surface EMG (sEMG). Adjust MVC level, sampling rate, band-pass, fatigue and electrode noise to watch RMS amplitude, median frequency (MDF), SNR and motor-unit firing rate update in real time.
Parameters
Muscle Force (%MVC)
%
Fraction of maximum voluntary contraction
Fatigue Level
%
100% drops MDF by 25 Hz (fast-twitch dropout)
Sampling Rate fs
Hz
SENIAM recommends ≥ 1000 Hz
RMS Window
ms
Shorter = better time resolution, longer = smoother
Band-pass Low
Hz
Removes motion artefacts
Band-pass High
Hz
Upper edge of the sEMG main band
Electrode Noise
dBV
Baseline noise of electrodes + amplifier
Results
—
Estimated RMS (μV)
—
Median Freq MDF (Hz)
—
Mean Freq MNF (Hz)
—
SNR (dB)
—
MU Firing Rate (Hz)
—
Samples in RMS Window
—
Muscle Cross-section & Electrodes — EMG Signal
Differential electrodes on the skin pick up the MUAP superposition (green raw waveform) and a sliding-window RMS envelope (orange). Increasing fatigue lowers the MDF readout.
RMS is the effective value of N samples in a window — an instantaneous muscle-activity index. MDF splits the power spectrum P(f) into two equal halves and captures the low-frequency shift caused by fatigue.
MNF is the power-weighted mean frequency; SNR is the ratio of signal to noise voltage in dB. MDF is more robust against outliers, which is why it is the preferred fatigue index in practice.
The sampling rate fs should leave at least a 20% margin over 2·fmax. The number of samples N_win in the RMS window must be large enough to keep its variance low.
EMG Signal Processing — RMS and Median Frequency
🙋
EMG means there is real electricity coming out of muscles? How is that different from an ECG?
🎓
Right — when a muscle fibre contracts, its membrane goes through a depolarisation that leaks out as a Motor Unit Action Potential, or MUAP. An ECG looks at the heart's synchronised contraction beat-by-beat in the millivolt range, while a surface EMG looks at many motor units firing asynchronously, so it shows a noisy oscillating waveform of 0.1-1 mV in the 20-450 Hz band. The ECG has clean P-QRS-T waves, the EMG looks like noise.
🙋
If it looks like noise, how do you read off "muscle force" from it?
🎓
That is exactly what RMS (Root Mean Square) is for. You square the signal inside a short window of 100-250 ms, average it, take the square root, and the positive/negative swings collapse into a single effective value. More MUAPs mean a larger amplitude, so RMS grows roughly in proportion to %MVC. Push the "Muscle Force" slider on the left and you will see the RMS μV stat scale almost linearly.
🙋
Then what is the median frequency (MDF) telling us? Isn't it the same muscle activity?
🎓
RMS tells you "how strong"; MDF tells you "how fast". When a muscle fatigues, the fast Type IIb fibres drop out first, leaving the slow Type I behind. Fast fibres have higher conduction velocity and put more energy in the high-frequency end of the spectrum, so losing them shifts the entire power spectrum to the left. MDF splits the spectrum at the half-power point and captures that shift in one number. A healthy biceps sits near 85 Hz, and at 100% fatigue this tool drops it to about 60 Hz.
🙋
The defaults are 2000 Hz sampling and 20-450 Hz band-pass — is there a real reason for those numbers?
🎓
Those come from the SENIAM European EMG standardisation and standard biomedical-engineering texts. sEMG energy lives in 20-450 Hz; below 20 Hz you mostly get skin-electrode motion artefacts and above 500 Hz it is essentially thermal noise, so you band-pass them away. 2000 Hz sampling gives a comfortable 20% headroom over the Nyquist limit (≥ 900 Hz), so nothing aliases. Try a 500 Hz sampling rate in the tool — to keep the Nyquist check green you will have to drop the upper band-pass below 200 Hz.
🙋
Finally, the SNR shows 22.97 dB at defaults. Is that a good value?
🎓
Above 20 dB the muscle signal is at least ten times the noise floor and is fine for both RMS and MDF analysis; below 10 dB you cannot reliably tell whether the muscle is even active. If your SNR is low, prep the skin (abrade, wipe with alcohol) to bring electrode impedance under 5 kΩ, place the electrodes 20 mm apart on the muscle belly, and add a 50/60 Hz notch filter to kill mains pick-up. Drag the "Electrode Noise" slider toward -20 dBV in the tool and you will see the verdict flip to a warning even though the RMS amplitude is unchanged.
FAQ
RMS (Root Mean Square) is the effective value of the signal amplitude inside a time window, computed as RMS = sqrt(1/N · Sum(x²)). EMG is an oscillatory waveform that swings positive and negative, so a plain average tends toward zero; squaring before averaging captures "how much the signal is fluctuating" in a single number. As more motor unit action potentials (MUAPs) fire, EMG amplitude grows, and RMS rises roughly in proportion to muscle force (%MVC). That is why RMS is the standard quantitative index of muscle activity. Typical windows are 100-250 ms; this tool defaults to 200 ms.
When a muscle fatigues, the fast-twitch Type IIb fibres that produce high-velocity force drop out first, leaving the slower Type I fibres. Fast-twitch motor units have higher action-potential conduction velocity and broader high-frequency spectral content, so their loss shifts the whole power spectrum toward lower frequencies. MDF (Median Frequency) — the frequency at which the spectrum is split into two equal-power halves — captures that shift in one number. A healthy biceps rests around MDF ≈ 85 Hz; sustaining an MVC contraction until fatigue typically lowers MDF by 10-25 Hz.
Surface EMG energy lies mainly in 20-450 Hz, so a band-pass with a 20 Hz lower cut-off (to remove motion artefacts and reduce 50/60 Hz mains pick-up) and a 400-500 Hz upper cut-off is standard. Sampling must meet Nyquist (at least twice the upper cut-off), but a 1000-2000 Hz sampling rate is preferred to leave margin against aliasing — SENIAM recommends ≥ 1000 Hz. This tool defaults to 2000 Hz / 20-450 Hz and flags the design when the Nyquist headroom fs / (2·fmax) drops below 1.2.
As a rule of thumb, SNR > 20 dB (signal at least ten times the noise floor) is needed for stable RMS and MDF estimates. Between 10 and 20 dB amplitude is still usable but MDF becomes noisy; below 10 dB even detecting muscle activity is unreliable. To improve SNR: (1) prep the skin (abrade, wipe with alcohol) to bring electrode-skin impedance below 5 kΩ, (2) place electrodes 20 mm apart on the muscle belly, (3) use a differential amplifier, and (4) add a 50/60 Hz notch filter.
Real-world Applications
Rehabilitation and physical therapy: For post-stroke hemiplegia, biofeedback training places sEMG electrodes on the affected side (e.g. tibialis anterior) and displays the RMS bar in real time. The patient consciously activates the muscle to "raise the bar", reinforcing motor learning. The therapist watches the MDF trend to detect fatigue and tune the training load so the patient does not over-work.
Myoelectric prostheses: The classic myoelectric hand uses one or two electrodes on residual muscles. When the RMS crosses a threshold, the gripper closes. Combining several electrode RMS patterns with machine learning allows several gestures — pinch, point, palmar grasp — to be classified. Wearable bands such as the Myo Armband and the CASIO / Gakken EMG suit work on the same principle.
Ergonomics and sports physiology: Long PC sessions raise the RMS of the upper trapezius, and the rate at which the MDF drifts down quantifies how a different chair or desk height changes fatigue. In sport, EMG is used for pitching-form stability, left-right symmetry of the quadriceps in runners, and core-muscle activation in weight-lifting — all of which feed back into form correction and injury prevention.
Neurology and muscle disease: In ALS or muscular dystrophy, motor-unit dropout and fibre replacement give EMG an amplitude and spectral signature that differs from healthy controls. Needle EMG is required for the definitive diagnosis, but non-invasive sEMG is widely used for longitudinal screening. From a CAE viewpoint, sEMG also provides validation data for multi-scale bioelectrical simulations that go from cell membrane to whole-muscle surface potential.
Common Misconceptions and Pitfalls
The biggest mistake is to read "absolute EMG RMS as a direct force in Newtons". The same true muscle force can change the RMS by 30% or more when the electrode shifts a few millimetres off the muscle belly. Subcutaneous fat changes the coupling, and every re-application of the electrode invalidates the previous calibration. Always normalise the RMS to that subject's MVC measured on the same day with the same electrode placement. The tool asks for "%MVC" for exactly this reason; comparing absolute μV values across devices is essentially meaningless.
Second, the assumption that "a higher sampling rate is always better". Because sEMG energy is confined to 20-450 Hz, sampling at 5000 Hz and then low-passing at 500 Hz delivers no more information than sampling at 1000 Hz, while inflating data volume and high-frequency noise (amplifier thermal noise, ADC quantisation). Do not confuse needle EMG (which needs ≥ 10 kHz) with sEMG (1-2 kHz is plenty). Raise the sampling rate in this tool and you will see SNR is unchanged — only the window-sample count grows.
Third, do not assume that "a falling MDF always means fatigue". MDF also drops when (1) the electrode moves and skin-electrode impedance increases, (2) low-frequency motion artefacts contaminate the band, or (3) the lower band-pass edge is set too high and chops the base frequencies. Always inspect MDF together with RMS and the raw waveform, and discard epochs with obvious artefacts. Skin temperature matters too — a cold lab or a contact-cooling device slows conduction velocity and lowers MDF, mimicking fatigue.
How to Use
Set muscle force as percentage of maximum voluntary contraction (MVC): 0–100% represents isometric contraction intensity from rest to maximal effort.
Adjust fatigue level (0–100%) to simulate metabolic byproduct accumulation; higher fatigue shifts median frequency (MDF) downward and increases RMS amplitude.
Configure sampling rate (500–4000 Hz) matching your sEMG hardware; typical clinical systems use 1000 Hz, while research-grade equipment uses 2048 Hz.
Set RMS window duration (10–500 ms) for root-mean-square calculation; 100 ms windows are standard for real-time muscle fatigue monitoring.
Read outputs: RMS quantifies overall signal amplitude, MDF/MNF track frequency domain shifts, SNR indicates noise rejection, motor unit firing rate reflects recruitment patterns.
Worked Example
Biceps brachialis contraction at 60% MVC with 45% fatigue using 1000 Hz sampling: RMS = 185 μV indicates moderate activation; MDF drops from baseline ~95 Hz to 68 Hz confirming metabolic fatigue; MNF = 72 Hz; SNR = 22 dB ensures signal quality above 50 Hz powerline noise floor. Motor unit firing rate = 18 Hz reflects sustained recruitment. RMS window of 100 ms captures 100 samples, sufficient for Fourier-based frequency analysis without excessive latency in real-time biofeedback systems.
Practical Notes
For dynamic movements (non-isometric), increase RMS window to 200–250 ms to average across contraction transients; static holds tolerate 50–100 ms windows.
MDF fatigue threshold varies by muscle: deltoid shows 15–20% frequency drop before failure, whereas soleus (fatigue-resistant) drops only 8–10%.
SNR below 18 dB indicates electrode placement issues or cross-talk; reposition electrodes 2 cm apart along muscle fiber direction, perpendicular to motor point.
Account for 20–40 Hz band-pass filter roll-off; MDF computed from 20–500 Hz band avoids DC offset and high-frequency noise contamination.