Home

Awesome

pam

Open Source Audio Monitoring Software designed for (but not limited to) a Raspberry Pi with touchscreen. The application provides:

PAM can take in audio from a soundcard or Pi HAT or from an AES67 stream. There is both DNS-SD and SAP discovery of AES67 streams and also an NMOS version which complies to IS04/IS05.

For more information please look at the help files contained in the documents directory

Prerequisites

Core libraries required

To install these libraries on Raspbian

On Buster and earlier

sudo apt-get update
sudo apt-get install libwxgtk3.0-dev portaudio19-dev libsndfile1-dev libsamplerate0-dev libavahi-client-dev libcap-dev libssl-dev libcurl4-openssl-dev

On Bullseye

sudo apt-get update
sudo apt-get install libwxgtk3.0-gtk3-dev portaudio19-dev libsndfile1-dev libsamplerate0-dev libavahi-client-dev libcap-dev libssl-dev libcurl4-openssl-dev

Other libraries required

PAM uses a number of small libraries. All these libraries are hosted on GitHub and are cloned automatically when running cmake.

Building PAM

Workspace and project files are supplied for Code::Blocks IDE. There are Debug and Release builds for Windows and Linux There are also CMakeLists.txt files. They have been tested on Linux using GCC

To build using CMake (currently on Linux only)

The easiest way to obtain the required GitHub libraries and build and install a PAM on Linux is by using CMake. The CMake build will clone all the required GitHub libraries if it can't find them and update them to their latest version if it can. By default it looks in your home directory. You can change this by passing in the variable DIR_BASE to cmake

cmake -DDIR_BASE=/home/user/pam_external

It is also possible to change the expected directory for each individual library

cmake -DDIR_LOG=logdir

The following directories can be defined

To build and install all applications and libraries

cd {pam directory}/build
cmake ..
cmake --build .
sudo cmake --build . --target install

This will

To build in Code::Blocks

Build live555 static libraries

Buld pam2 application and libraries

/usr/local/lib/pam2
sudo ldconfig

In order for PAM to have the correct capabilities you need to run the following

setcap cap_sys_time,cap_sys_admin,cap_net_bind_service+ep absolutepathtopam/pam2

PTPMonkey support

This is included by default.

When subscribing to an AoIP stream whose SDP defines a PTP reference PTPMonkey will listen for a Master Clock on the relevant domain and use the Master Clock's time for timestamping incoming RTP packets. The PTP plugin will also depend on this library being part of the base build

NMOS support

NMOS support can be build in to PAM allowing control of AoIP streams in to and out of the software from external devices. It is also possible to select and route NMOS compliant sources to the software for monitoring.

If you wish to include nmos in the application then run cmake .. -DNMOS=ON instead of cmake ...

Note: NMOS support is a work in progress. The Node library passes all the NMOS tests and the Client library can be used to make simple connections. Amongst other things

Setting Up

PAM expects a few files to live in a specific directory:

Prebuilt Images

Links to these can be found here with the associated Releaes

List of Plugins

Can be found in the wiki section