Copyright © 2024 Kees Krijnen
SONEO
Introduction
SONEO is an SR2CB application for digital audio distribution, e.g. public address, congress, intercom or stage performances. NEO is pronounced like the main character name Neo from the SciFi movie the Matrix. A data transmission rate of 20k SR2CB frames per second gives a byte channel speed of 160kb/s (20k times 8 bits) and offers 608 byte channels for 100BASE-TX and 6233 byte channels for 1000BASE-T PHYs. The 160kb/s is high enough for good audio quality APCM (32kHz voice - low latency - described in the Bluetooth A2DP specification) and Opus (48kHz voice and music) codecs - if required AES encrypted and authenticated. Multiple byte channels can be combined to distribute 48kHz companding or uncompressed audio. Downloads are located at github.com/krynentechnology/soneo.
Contents
System
An SR2CB application for digital audio distribution is composed of audio sources (e.g. call stations, microphones, intercoms, background music) and audio sinks (e.g. intercoms, amplifiers, active loudspeakers). Long distance devices could be supported by SR2CB slave RS-485 160kb/s interface connections for a maximum distance of about 1km. With 100BASE-TX PHYs based physical interface 608 byte channels are available. For a public address system a few upper (e.g. eight) byte channels could be reserved for background music what leaves about 600 channels for 160kb/s voice distribution. With a hundreds of audio channels available there is hardly any need for audio sources channel management. Audio source distribution with priority into different zones (audio sinks - zone management is required) could be based on the byte channel number where e.g. channel zero is reserved for all zones emergency calls.
APCM
APCM is a Bluetooth low-complexity, subband codec (SBC) - a software implementation can be found in the ffmpeg library (libavcodec\sbc*.*). For SONEO a four subband codec (32kHz - subbands 0-4kHz, 4-8Khz, 8-12kHz and 12-16kHz) is used to process 32 16-bit samples into a 20 byte (160 bit) APCM packet (downsampling by four, 32 -> 8, 8 sets of four subbands processed). Audio companding could be applied to process 20/24-bit audio for APCM encoding/decoding. A SONEO 160-bit APCM data (channel bus) packet consist of ten 16-bit words, starts with a word for the four 4-bit scale factors (S0/3), followed by eight sample words and ends with an authentication/CRC word. The eight sample words could be AES-128 encrypted. A sample word contains the processed audio from the four subbands. When all audio is found in the lowest 0-4kHz subband (e.g. most voice audio) the S0 scale factor is 15, indicating the sample word has 15 significant bits for a single 16-bits (15 bits + a sign bit) audio sample. The start of a APCM 160-bit data packet is given by a SR2CB 1ms timer tick status word.
Programmable Sound Generator
To produce announcement and alarm tones by e.g. an intercom, the intercom has a programmable sound generator (PSG) module. The configurable PSG is able to generate (synthesize) and mix a minimum of three tones. The PSG module is composed of several submodules: (optional) phase control/modulation (vibrato), sine wave generator, volume control/modulation (tremolo), (optional) periodic noise generator with four band equalizer and (optional) limiter with volume control/modulation. The volume of the (optional) periodic noise generator is controlled by the equalizer. A PSG minimum configuration of three tones does not mean the generated sound is limited to three tones; it is limited to three overlapping (simultaneous) tones.
The volume control of a single tone allows increase and decrease of the volume (amplitude) according to a defined envelope. The volume envelope increases from zero to a set volume with an attack rate (AR), then decreases to zero with a single decrease rate (RR) or multiple decrease rates (n x DR) where the last decrease rate to zero is named the release rate (RR). The timed volume envelope increase of decrease rates could be linear, exponential, circular or parabola shaped. One or more of the multiple decrease rates could be hold to zero, the amplitude level is sustained (SL).
Amplifier
A SONEO 160kb/s (20k times 8 bits) byte channel could deliver an APCM or Opus audio input stream. Multiple byte channels could be combined: six byte channels for companded 24-bit audio, nine byte channels for uncompressed 24-bit audio. An amplifier needs to decode an APCM or Opus audio stream. For APCM it is done by an FPGA module. For Opus it is done by a soft core CPU module which also takes care for intialization and control of the other FPGA modules. Received audio channels could be mixed and delayed. An 8-12 band equalizer could compensate for the loadspeaker frequency response. A limiter monitors and adjust the (high) output power. Selection could be made between a low or high power amplifier output. Low power output is handled by a class D I2S amplifier device. High power output is handled by 384-576kHz high resolution PWM and class D full bridge gate driver.
Intercom
An intercom offers the same functionality as an amplifier and more, except for the high output power, configurable delay and VU meter. Audio output streams are APCM or Opus encoded, generated by the PSG or as input from the MEMS microphone array. An additional four band equalizer compensates for the microphone frequency response. A display (LED, LCD) gives feedback about available menu selectable zones and indicates when to speak; after the (optionally) configured start chime - generated by the PSG - when the PTT button is pressed. The (optionally) configured end chime is played when the PTT button is released.