How-to Specify the Output File Format of your Music Master

Before you start

This guide assumes that you understand the basics of making a Music Mastering API request. We recommend completing the Getting Started with the Music Mastering API guide first.

Specify your music master output format

When you create a music master with the Music Mastering API, you can specify the output file format you want your master to be delivered in. The output file format is specified using the kind parameter within the outputs array. The kind parameter sets the container of the output file. When you choose the preferred output container for your music, the audio codec, channel count, sample rate, bit rate, and bit depth are automatically set.

Create multiple output files

You can create up to five output files and specify an output file format for each based on your music distribution requirements. You can choose one Mastering profile, along with your preferred intensity, loudness, and stereo enhancement settings that are applied to each output file. To add another output file for the Music Mastering API to generate, simply add another output definition to the outputs array of your request.

If you would like to try out different mastering profiles and settings before you create your music master files, you can learn more about the settings in the Music Mastering API guide and try out the Music Mastering Preview API in the API reference.

Supported Music Master output containers

This table shows the output containers supported by the Music Mastering API that you can choose, along with the details that are automatically set by the Music mastering API.

📘

Some compressed formats (for example, OGG and MP3) cannot inherit higher sample rates. The outputs are fixed to a 48kHz sampling rate.

Output ContainerCodecSample RateBit Rate
WAVPCMsame as input- same as input if input is lossless
- 1536 kbps when input is lossy
OGGVorbis48kHz256 kbps
MP3MPEG Audio48kHz320 kbps
MP4AAC LCsame as input256 kbps
AACAAC LCsame as input256 kbps

Code example

This code example shows you how to specify multiple music master outputs with different output formats. In the outputs array, you can specify the output container using the kind parameter.

import os
import requests

# Add your API token as an environmental variable or hard coded value.
api_token = os.getenv("DOLBYIO_API_TOKEN", "your_token_here")

# The master configurations have to be the same across all outputs.
master_configuration = {
    "dynamic_eq": {"preset": "c", "intensity": 90},
    "loudness": {"target_level": -14},
    "stereo_image": {"enable": True}
}

body = {
    "inputs": [{"source": "dlb://in/example.wav"}],
    "outputs": [
        {
            "destination": "dlb://out/example-mastered.aac",
            "master": master_configuration,
            "kind": "aac",
        },
        {
            "destination": "dlb://out/example-mastered.mp3",
            "master": master_configuration,
            "kind": "mp3",
        },
        {
            "destination": "dlb://out/example-mastered.mp4",
            "master": master_configuration,
            "kind": "mp4",
        },
        {
            "destination": "dlb://out/example-mastered.ogg",
            "master": master_configuration,
            "kind": "ogg",
        },
        {
            "destination": "dlb://out/example-mastered.wav",
            "master": master_configuration,
            "kind": "wav",
        },
    ],
}

url = "https://api.dolby.com/media/master"
headers = {
    "Authorization": "Bearer {0}".format(api_token),
    "Content-Type": "application/json",
    "Accept": "application/json"
}

response = requests.post(url, json=body, headers=headers)
response.raise_for_status()
print(response.json())
// Add your API token as an environmental variable or hard coded value.
const api_token = process.env.DOLBYIO_API_TOKEN || "your_token_here";

// The master configurations have to be the same across all outputs.
const axios = require("axios").default;

const master_config = {
  dynamic_eq: { preset: "c", intensity: 90 },
  loudness: { target_level: -14 },
  stereo_image: { enable: true },
};

const config = {
  method: "post",
  url: "https://api.dolby.com/media/master",
  headers: {
    Authorization: `Bearer ${api_token}`,
    "Content-Type": "application/json",
    Accept: "application/json",
  },
  data: {
    inputs: [{ source: "dlb://in/example.wav" }],
    outputs: [
      {
        destination: "dlb://out/example-mastered.aac",
        master: master_config,
        kind: "aac",
      },
      {
        destination: "dlb://out/example-mastered.mp3",
        master: master_config,
        kind: "mp3",
      },
      {
        destination: "dlb://out/example-mastered.mp4",
        master: master_config,
        kind: "mp4",
      },
      {
        destination: "dlb://out/example-mastered.ogg",
        master: master_config,
        kind: "ogg",
      },
      {
        destination: "dlb://out/example-mastered.wav",
        master: master_config,
        kind: "wav",
      },
    ],
  },
};

axios(config)
  .then(function (response) {
    console.log(response.data.job_id);
  })
  .catch(function (error) {
    console.log(error);
  });
# Add your API token as an environmental variable or hard coded value.
API_TOKEN=${DOLBYIO_API_TOKEN:-"your_token_here"}

# The master configurations have to be the same across all outputs.
master_config='{
    "dynamic_eq": {"preset": "c", "intensity": 90},
    "loudness": {"target_level": -14},
    "stereo_image" : {"enable": true}
}'

curl -X POST https://api.dolby.com/media/master \
    --header "Authorization: Bearer $API_TOKEN" \
    --header "Content-Type: application/json" \
    --data '{
        "inputs": [{"source": "dlb://in/example.wav"}],
        "outputs": [
            {
                "destination": "dlb://out/example-mastered.aac",
                "master": '"$master_config"',
                "kind": "aac"
            },
            {
                "destination": "dlb://out/example-mastered.mp3",
                "master": '"$master_config"',
                "kind": "mp3"
            },
            {
                "destination": "dlb://out/example-mastered.mp4",
                "master": '"$master_config"',
                "kind": "mp4"
            },
            {
                "destination": "dlb://out/example-mastered.ogg",
                "master": '"$master_config"',
                "kind": "ogg"
            },
            {
                "destination": "dlb://out/example-mastered.wav",
                "master": '"$master_config"',
                "kind": "wav"
            }
        ]
    }'

Did this page help you?