MacCapster
is a Common-Alert Protocol compliant client for Mac-OS that supports Text-to-Speech conversion, SPDT relay controls, audio playback, and MP3
/AAC
compression at standard bitrates and sample-rates.
The goal of this project is to help small independant radio stations stay compliant with FCC and CRTC regulations.
- Boost::ASIO and OpenSSL for encrypted client-server communication.
- Boost::PropertyTree for XML-parsing.
- AVFoundation Framework for Text-to-Speech conversion.
- AudioToolBox Framework for audio playback.
- Foundation and Core Foundation for data-types.
- LibMP3LAME and FDK-AAC for MP3/AAC compression.
- MSLogger for thread-safe logging.
Being a real-time application, MacCapster
makes extensive use of asynchronous and multithreaded design paradigms. It begins with listening for incoming emergency alerts from an authorized source. Upon receiving an alert, the software performs collision detection for geodetic data, ensuring the alert's geographical area does not overlap with existing warnings. Once validated, the system uses the Mac-OS native text-to-speech technology to convert the alert message into a Mono .WAV
file. Upon completion of the TTS, MacCapster
triggers a Single Pole Double Throw (SPDT) relay control through a USB
to RS232
adapter to switch the broadcast signal from regular programming to the emergency alert. Then, the alert message is played back through the radio station’s audio system, broadcasting the warning to the public before flipping the SPDT back to resume the regular broadcast. Finally, the .WAV
files are encoded to MP3
/AAC
to reduce storage.
- Implement an asynchronous archiving pipeline to archive old
XML
,MP3
/AAC
files and reduce storage. This will be built usinglibarchive
.