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
- wxWidgets https://www.wxwidgets.org/
- PortAudio http://www.portaudio.com/download.html
- libsndfile http://www.mega-nerd.com/libsndfile/
- Secret Rabit Code http://www.mega-nerd.com/SRC/
- Avahi-Client
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
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
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/
- Open external/live/live.workspace in Codeblocks
- Fill in the necessary global variables
- Build the workspace
- Open pam2.workspace in Codeblocks
- Fill in the necssary global variables
- Build the workspace
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
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
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.
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.
Links to these can be found here with the associated Releaes
Can be found in the wiki section