Skip to content
/ pam Public
forked from martim01/pam

Audio Monitoring Software designed to run on a Raspberry pi with touchscreen

License

Notifications You must be signed in to change notification settings

oyvv/pam

 
 

Repository files navigation

pam

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

  • A number of useful audio monitoring tools, including:
    • Digital meters of various flavours (BBC PPM, EBU, Nordic, VU etc)
    • "Moving Coil" meters of various flavours
    • Lissajou
    • Spectrum Analyser
    • R128 Loudness
    • Scope
  • A number of audio test tools, including:
    • Channel delay measurement
    • Distortion measurements
    • Level monitoring
    • Peak Sample Count
    • Recording of incoming audio
    • LTC detection
  • An audio generator that can output audio from a number of sources, including:
    • The input source
    • A file
    • A simple tone
    • A tone sequence
    • LTC

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

For UpdateManager

For UpdateWebServer

To install these libraries on Raspbian
sudo apt-get update
sudo apt-get install libwxgtk3.0-dev portaudio19-dev libsndfile1-dev libsamplerate0-dev libavahi-client-dev libcurl4-openssl-dev libmicrohttpd-dev

Other libraries required

PAM uses a number of small libraries that I have developed. All these libraries are included in the project tree as git submodules and therefore should update automatically.

  • log a simple streaming log class
  • dnssd a cross platform wrapper around Bonjour and Avahi for service browsing and publishing
  • [sapserver] a library to detect and publish SAP
  • ptpmonkey an optional library to allow PAM to decode and analyse PTP messages and also sync to a PTP grandmaster
  • nmos an optional library to allow PAM to advertise itself as an NMOS node and also act as an NMOS client

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

Codeblocks http://www.codeblocks.org/

To build in Code::Blocks

Build live555 static libraries

  • Open external/live/live.workspace in Codeblocks
  • Fill in the necessary global variables
  • Build the workspace

Buld pam2 application and libraries

  • Open pam2.workspace in Codeblocks
  • Fill in the necssary global variables
  • Build the workspace

To build using CMake (currently on Linux only)

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

This will install the executable pam2 in /usr/local/bin and all necessary libraries in /usr/local/lib/pam2

It is possible that /usr/local/lib is not in your path. If so then do the following:

  • Create a file called pam2.conf in directory /etc/ld.so.conf.d
  • Add the following line to the file
/usr/local/lib/pam2
  • Run the following command to update the library path
sudo ldconfig

PTPMonkey support

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

The CMake project will clone the PTPMonkey code from GitHub to external/ptpmonkey and build and install the library.

Note that the first run of CMake will possibly fail saying that PTPMonkey can't find the Asio library. Simply rerunning cmake .. -DoptionPTP=ON again will build the make instructions

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

Note: If you wish to use PTPMonkey with PAM on Linux then you will need to run PAM using authbind or with higher privileges as the application will need to open network ports 319 and 320

NMOS support

forthcoming

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 .. -DoptionNMOS=ON instead of cmake ...

The CMake project will clone the nmos code from GitHub to external/nmos and build and install the library.

Setting Up

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

  • If it doesn't exist create a directory called pam in your home directory.
  • Copy the contents of the document directory to the pam directory.

Prebuilt Images

Links to these can be found here with the associated Releaes

List of Plugins

Can be found in the wiki section

About

Audio Monitoring Software designed to run on a Raspberry pi with touchscreen

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 90.8%
  • HTML 3.9%
  • Makefile 3.7%
  • CMake 1.2%
  • C 0.4%