Interactive · Modulation
DMR, C4FM, NXDN and M17 all ride the same trick: four frequencies instead of two, so every shift of the carrier carries two bits instead of one. This is a live simulator — real random dibits, real pulse shaping, real noise. The bit error rate below is counted, not plotted from a formula. Turn the noise up and watch the eye close.
Symbols sent Symbol errors Bit errors Measured BER Eye opening
| Dibit | Symbol level | Deviation | Sent | Decoded wrong |
|---|---|---|---|---|
| 01 | +3 | +1,944 Hz | ||
| 00 | +1 | +648 Hz | ||
| 10 | −1 | −648 Hz | ||
| 11 | −3 | −1,944 Hz |
What this actually does. It generates random dibits, maps them to the four DMR symbol levels, upsamples and shapes them with a root-raised-cosine filter, adds white Gaussian noise, passes the result through a matched RRC filter at the receiver, samples at the symbol centres, and slices. Every error you see was made by the simulation, not looked up. The two RRC filters in cascade form a Nyquist raised-cosine response, which is why the eye closes cleanly at the sampling instant and not from inter-symbol interference — that is the entire point of shaping the pulses in the first place. Verified figures (DMR): 4,800 symbols per second, a 208 µs symbol, deviations of +1944/+648/−648/−1944 Hz — the four levels are simply ±1 and ±3 times 648 Hz — with root-raised-cosine filtering at α = 0.2. Corroborated across the Tait Radio Academy DMR guide, VK4PK's MMDVM signal notes, an open-source DMR modem implementation, and a Viavi service-monitor manual, which independently confirms the 00 dibit sitting at +648 Hz. Worth knowing: this is the discriminator-output view — the four-level eye a service monitor shows you. It is a different detection model from the ideal orthogonal-FSK curve used in the Digital Cliff explorer, and runs a couple of dB worse for the same Eb/N0. That difference is part of what the implementation-loss term over there is paying for. Static channel, no fading, no frequency error, perfect symbol timing. 73 de N6JET