{"bits_per_symbol":4,"carrier_band_hz":[1000,3000],"code_bands":10,"data_rate_bps":8,"detector":{"decode":"accumulate symbols across the ~5 s message and vote across the 10 redundant bands to recover the ID + timestamp","front_end":"mic -> ADC -> sliding FFT over the 1-3 kHz band","symbol":"per code-band, find which of the 18 tone bins holds energy; map the 16 data bins to a 4-bit symbol; SYNC aligns the message, STOP ends it"},"message_repeats_per_min":[12,13],"message_update":"once per minute","name":"CBET \u2014 Critical Band Encoding Technology (Arbitron/Nielsen PPM)","payload":"station/distributor identity + timestamp","principle":"An inaudible watermark embedded in the program audio before broadcast, hidden beneath the ear's psychoacoustic masking threshold so listeners can't hear it but the meter can.","redundancy":"all 10 bands carry the same message; each bit uses a different tone per band, so the code survives EQ, noise, and a phone mic across the room","sources":["Arbitron CBET Audio Encoding System \u2014 Technical Overview (Jan 2004, Rev D)","US10095843B2 / US20160203297A1 \u2014 Nielsen payload encoding & decoding","sigidwiki.com/wiki/CBET"],"the_catch":"The per-symbol tone-frequency table is the one proprietary piece. The structure above is public \u2014 which means the watermark is fully visible as spectral energy in ten narrow 1-3 kHz bands, and a station can confirm its own code is present (or being stripped/spoofed) without Nielsen at all.","tones_meaning":"16 data tones (4 bits/symbol) + 1 SYNC + 1 STOP","tones_per_band":18}
