Skip to content

pmd_tool is a command line utility that converts between different representations of SMPTE RDD49 metadata and Serial ADM metadata. PMD Studio is an authoring tool for such metadata.



Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.

pmd_tool (dlb_pmd_lib)

version 1.7.4

This project provides applications and libraries to assist with conversion between various professional audio metadata formats and containers.

pmd_tool is a command line utility that converts between the following representations of professional audio metadata:

  • ADM/Serial ADM Metadata as defined in ITU Rec. BS. 2076/2125 and SMPTE ST 2116
  • PMD as defined in SMPTE RDD49 metadata

PMD Studio is an application that provides a user interface for authoring professional audio metadata in either file or streaming formats.

For more information see the release notes.

Getting Started

These instructions will help you get a copy of the project up and running on your local machine for development and testing purposes.

Folder Structure

  • This file.

  • Release notes.

  • Quick Start Guide for PMD Studio.

  • LICENSE Terms of use.

  • dlb_buffer/ Buffer management component.

  • dlb_octfile/ This component defines a wrapper around the stdio FILE type which allows file operations to work on octets, rather than chars. On platforms where CHAR_BIT is >8, the top bits in each char will be zero padded.

  • dlb_pmd/ Main front-end applications and core conversion modules.

  • dlb_socket/ Cross-platform socket component.

  • dlb_wave/ Component providing read/write to Microsoft (broadcast) audio WAV format.

  • dlb_xmllib/ XML parser.

  • dlb_st2110/ IP stream management layer

  • googletest/ C++ test framework from Google.

  • Lawo/ Ember+ console integration library from Lawo.

  • libui/ Cross-platform GUI library.

  • portaudio/ Portable real-time audio library.

  • xerces/ Another XML parser used by the test framework.

  • zlib/ General purpose compression library.


For Linux and OSX, the library and tool can be built using GNU makefiles. For Windows, Visual Studio 2015 and 2017 projects and solutions are provided. For all platforms, 64-bit targets are supported. For Linux, 32-bit platforms are supported.

Professional Sound Card

The following packages are required when building under Ubuntu/Debian and using a professional sound card:

sudo apt-get install build-essential libgtk-3-dev libasound2-dev libjack-dev


When using an NVidia ConnectX SMARTNIC ethernet card the appropriate NVIDIA ConnectX ethernet driver and Rivermax SDK must be installed. Please contact NVIDIA regarding the Rivermax SDK and installation instructions. In addition the following packages are required when building under Ubuntu/Debian

sudo apt-get install build-essential linuxptp libgtk-3-dev python libavahi-client-dev

Before running the application, the linux machine must be configured to use PTP (Precision Time Protocol). This will vary depending on the distribution used with the insructions here being for Ubuntu.

  1. Disable NTP. This is found in Settings->Details->Date&Time. Set automatic setting of time and date to off.

  2. Edit the system service unit file for ptp4l using sudo systemctl edit ptp4l using the following or similar. Edit the ptp4l.conf file with the correct PTP settings for your network.

ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp/ptp4l.conf -i enp3s0f0
  1. Repeat for the phc2sys service with the following for the unit file:
ExecStart=/usr/sbin/phc2sys -s enp3s0f0 -w -m -n 0
  1. Apply the settings and restart the services:
sudo systemctl daemon-reload
sudo systemctl enable ptp4l phc2sys
sudo systemctl restart ptp4l phc2sys
systemctl status ptp4l phc2sys

Verify that the last status command shows the services running with stable clock updates.

Build instructions

Using the GNU makefiles

Use the makefiles located in dlb_pmd/make. Go to the appropriate directory and run GNU make. Release and debug executables are created in the same directory as the makefile. When using a professional sound card supporting the ALSA or Core Audio interfaces use the makefile in the pmd_studio directory. When using an NVidia ConnectX SMARTNIC ethernet card, use the makefile in the pmd_studio_rivermax directory.

Using Microsoft Visual Studio (on Windows)

Go to the 64 bit Windows MSVS directory under dlb_pmd/make/pmd_tool. In Visual Studio 2015 or 2017, open the corresponding solution file (.sln). Select build solution in MSVS.

Alternatively, run msbuild from the Windows command line:

>call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat"
>msbuild pmd_tool_2015.sln /property:Configuration=debug
>msbuild pmd_tool_2015.sln /property:Configuration=release

Running the applications

Several applications are available. However, we think the following two are the most useful.

PMD Tool

pmd_tool is a command line utility and detailed usage is provided by running the tool with no options. This should be used for file conversion operations. This application does not provide any real-time or streaming funcionality other than writing wav files that may be streamed by another application.

PMD Studio

PMD Studio is an application for authoring professional metadata. It provides a simple user interface for configuring audio beds, objects and presentations. The authored metadata may be saved as an XML file in either sADM or PMD formats or streamed using a professional sound card.

Please see the PMD Studio Quick Start Guide

Basic usage of the command line when launching PMD Studio is obtained using '-h'.

Screenshot of PMD Studio

Testing the library

To test the basic functionality of the library, there is an additional pmd_test tool. The build makefiles and projects are found under dlb_pmd/make/pmd_test, and the test suite can be built in the same manner as the pmd_tool.

pmd_test is built on top of the googletest framework, so the complete suite can be run simply by running the executable without arguments. Note that the tests take a long time to start up, and take several hours to run.

pmd_fuzz is an experimental model-based fuzzer that generates random models and tests that serialization/deserialization works correctly.

Known Limitations

The ADM XML output does not support or use common definitions as defined in ITU.R BS 2094.

Release Notes

See the Release Notes file for details, including information on additional applications and features.


This project is licensed under the BSD-3 License - see the LICENSE file for details


pmd_tool is a command line utility that converts between different representations of SMPTE RDD49 metadata and Serial ADM metadata. PMD Studio is an authoring tool for such metadata.







No releases published


No packages published