NDI Audio Levels
Making Sense of NDI and Professional Audio Levels
Introduction
Given the historical specification of NDI floating-point audio levels in terms of dBu (an analog, voltage-based measurement having no direct connection to either integer or floating-point digital values) there has been significant confusion related to proper NDI audio levels. This document aims to explain the original NDI audio level specification, why it does not make sense in a multi-format world, and what to do instead.
What is a dB?
A dB or decibel is a logarithmic unit used to measure sound intensity or magnitude. The decibel represents a ratio between two values and is therefore unitless. The decibel values most typically used in professional audio production are root-power quantities (amplitude or voltage) calculated using the following formula:
Where and are the two values being compared. Typically, is the value being measured and represents the 0.0 dB reference level.
Reference Level
As the decibel is a unitless measure, the ratio scale needs to be anchored or indexed to a specific level, referred to here as the reference level. This specified level represents 0.0 dB.
Program Reference Level
In addition to the 0.0 dB anchor of the reference level, audio workflows also have a separate program reference level, sometimes referred to as alignment level. This level is the signal amplitude that represents the “typical” signal level when mixing, which would normally equal 0.0 dBVU on an audio mixing console. In other words, the standard signal level which all inputs are aligned to for mixing.
The program reference level is sometimes defined by standards (eg: the SMPTE program reference level for integer audio samples is -20.0 dBFS) but is really workflow specific. Different audio productions use various program reference levels based on the specific task and required results. For example, mixing workflows typically operate with more headroom than would be needed or desired for something like generating a CD master where given the 16-bit output format and 96 dB dynamic range, the headroom from the mix output is typically reduced in order to improve the noise floor. The program reference level is also sometimes intentionally modified to affect perceived loudness, see for example: Loudness War
Standard Reference Levels & Program Reference Levels
A variety of decibel-based units of measurement are used in audio production. Several common units and their relationship with each other and NDI are listed here.
dBu
Voltage relative to the RMS voltage that would dissipate 0dBm (1 mW) in a 600 ohm load:
Program reference level: +4.0 dBu (SMPTE per RP-155)
Program reference level: 0.0 dBu (EBU)
Commonly used to specify professional audio levels on XLR audio connections.
dBV
Voltage relative to 1.0 volt RMS:
Program reference level: -10.0 dBV (Consumer line level)
Commonly used to specify consumer audio levels on RCA audio connections.
dBFS
A unit of measurement for amplitude levels in digital systems which have a defined maximum peak level. Used in digital audio production where PCM audio values are represented by fixed length integer values, typically 16, 24, or 32 bits in length.
Full-Scale
A full-scale sine wave has positive peaks with a value of 7FFFFF (hex) and negative peaks with a value of 800000 (hex) in a 24-bit digital audio system. For other bit depths, refer to the appropriate standard.
Reference level (24-bit): 0x800000-0x7FFFFF
SMPTE Levels
Program reference level is -20dB (1/10 of Reference Level) per SMPTE RP-155:2014
Program Reference Level (24-bit): 0xF33333-0x0CCCCD
EBU Levels
Program reference level is 1/8 of reference level (approximately -18.0618dB) per EBU R68-2000
Program Reference Level (24-bit): 0xF00000-0x0FFFFF
dBNDI
A sensible modern definition of NDI audio levels.
Reference Level: Normalized sine wave with peaks of -1.0 to +1.0
Program reference level: 0.0 dBNDI
dBNDI (Legacy)
The historical definition of NDI audio levels and a source of significant confusion.
Reference Level: Normalized sine wave with peaks of -1.0 to +1.0 = +4.0 dBu
Program reference level: Undefined
Legacy NDI Audio Levels
Since at least 4.x, NDI has defined audio levels such that a normalized floating-point sine wave is equal to +4.0 dBu. In a SMPTE workflow this means that an NDI program reference level signal is equal to a normalized -1.0 to +1.0 floating-point sine wave, -20 dBFS digital signal, and +4.0 dBu analog signal.
Problems arise, however, when trying to interface with non-SMPTE audio workflows. EBU program reference levels differ from SMPTE by -4.0 dBu and approximately +2.0 dBFS. If the NDI program reference level is really +4.0 dBu, conversion between NDI audio levels and EBU (or any non-SMPTE) based audio levels becomes very confusing. For instance, an EBU analog audio signal "properly" converted to NDI would have a program reference level of -4.0 dBNDI while a similarly converted SMPTE audio signal would have a program reference level of 0.0 dBNDI, making it impossible to properly mix NDI signals without knowing the signal's origin.
In addition, specifying a floating-point audio reference level using dBu does not really make sense. NDI floating-point audio values are at least two steps removed from the analog voltage reference used by dBu, and one step removed from the fixed-point values used by dBFS. A more sensible solution is to define NDI floating-point audio levels in terms of the audio signal itself.
Essentially, the original specification for NDI audio levels that a normalized sine wave is equal to +4.0 dBu was a United States and SMPTE-centric attempt to specify NDI audio levels in terms of program reference level. No effort was made to allow for alternate audio level workflows, and software and products sold by NewTek (and later by Vizrt) made no distinction between SMPTE, EBU, or other audio level standards.
Modern NDI Audio Levels
To address the legacy NDI issues above, the reference to +4.0 dBu is removed from the definition of NDI audio levels and a normalized -1.0 to +1.0 sine wave is specified as both the reference level and the program reference level for NDI audio (see dBNDI, above). This allows proper mixing NDI audio sources regardless of origin or destination and makes conversion to and from NDI floating-point audio straightforward.
Rather than confusing and unspecified conversions based on analog voltage levels, converting to and from NDI audio levels becomes a straight-forward conversion between clearly defined program reference levels. Whether SMPTE, EBU, or other reference levels are used in a workflow, the conversions to and from NDI can be clearly defined by simply matching the desired program reference level to NDI's normalized sine wave.
Other Floating-Point Standards
There are other audio level standards for floating-point audio. One common standard used by ffmpeg and Premiere is to equate a normalized floating-point sine wave with what ffmpeg refers to as "full volume level" or what would be 0 dBFS if using integers:
Reference Level: Normalized sine wave with peaks of -1.0 to +1.0
Program reference level: Varies, typically -20 dBFS (SMPTE) or -18 dBFS (EBU)
This format is referred to as Audio_float_dBFS_ref in the conversions below.
Conversions
With NDI audio levels defined by program reference level, conversion to other formats becomes more straight-forward. Refer to the following examples for several common conversions needed between fixed point and NDI floating-point audio levels.
SMPTE
EBU
Real-World Complications
Given the confusing original specification for NDI floating-point audio levels (particularly for non-SMPTE workflows) and the existence of popular floating-point formats with different reference level specifications there are many existing workflows where audio levels are not handled as specified here.
This creates situations where there may not always be a single correct method to properly align audio levels. In such situations, for maximum flexibility and consistency of user experience, it is recommended that the user is provided with a means to adjust the gain or pad setting used for that conversion. If possible, the user would be presented with the choices below. The discrete options are expected to cover most of the common cases, and a custom option for anything else.
NDI Audio Conversion Gain Options
20 dB or 10x gain/pad: Local program reference level is SMPTE (Default)
18 dB or 8x gain/pad: Local program reference level is EBU
0 dB or 0x gain/pad: No change to audio levels, matching incorrect behavior in some applications which directly passed audio data between NDI and ffmpeg or Premiere without properly adjusting for program reference level
Custom : User can adjust for anything not covered by the above options
Otherwise, when details about the NDI audio reference level and/or the local program reference level are unknown, it is recommended that the SMPTE formulas above are used for any needed conversions. This most closely matches the historical handling of audio levels in NDI applications.
Last updated
Was this helpful?

