This document specifies a means of communicating information through the use of "beeps", a series of "b", "e", "i", and "p" characters similar to the onomatopoeic words for electronic noises.
A "beep" is a single value of information, either a 0, 1, or 2. These are represented by one or two printed characters.
A "blip" are the individual characters that make up a beep. All of them are single printed characters, except for one.
A "beepstring" is a series of one or more beeps, followed by stop blips.
Beepstring := Beep+ StopBlips
This blip is used as an indicator that you are reading a beepstring, and to separate beeps from each other.
StartBlip := "b"
Beeps are the blips that represent data. All beeps are preceeded by a start blip as a separator.
There are three beeps:
A 0 value is represented by only a start blip.
A 1 value is represented by a start blip and an e
blip.
A 2 value is represented by a start blip and an i
blip.
Beep: StartBlip (ZeroBlip | OneBlip | TwoBlip)
ZeroBlip := ""
OneBlip := "e"
TwoBlip := "i"
All beepstrings must signal their end by repeating the previous blip and adding a final p
blip.
StopBlips := (ZeroBlip | OneBlip | TwoBlip) FinalBlip
FinalBlip := "p"
An example of a beepstring that sends a single "1" value:
beep
b e e p
StartBlip OneBlip StopBlips(OneBlip FinalBlip)
An example of a beepstring that sends "0101":
bbebbebbeep
b _ b e b _ b e e p
StartBlip ZeroBlip StartBlip OneBlip StartBlip ZeroBlip StartBlip OneBlip StopBlips(OneBlip FinalBlip)
An example of a beepstring that sends "012012":
bbebibbebiip
b _ b e b i b _ b e b i i p
StartBlip ZeroBlip StartBlip OneBlip StartBlip TwoBlip StartBlip ZeroBlip StartBlip OneBlip StartBlip TwoBlip StopBlips(TwoBlip FinalBlip)