PPROLint
Built-in rules

Required tracks

Reports a track layout that does not match the configured requirements.

PropertyValue
Idrequired-tracks
CategoryProject
Default severitywarning
Scoperequired-tracks (computed scope)

Options

OptionTypeDefaultDescription
minVideoTracksnumber0Minimum number of video tracks. 0: not checked.
minAudioTracksnumber0Minimum number of audio tracks. 0: not checked.
videoTrackNamesstring[][]Names that must exist among video tracks.
audioTrackNamesstring[][]Names that must exist among audio tracks.
tracksjson[]Per-position requirements: { "ref": "V1", "name"?, "nonEmpty"? }.

Customize it

Turn the rule on or off in the panel's Rules settings. To change its options, severity or wording, open it with its cogwheel in the rule editor and save: your copy replaces the built-in rule until you revert it. You can also copy the file below into your rules folder as required-tracks.rule.json and edit it. See Change a built-in rule.

Rule file

required-tracks.rule.json
{
  "formatVersion": 1,
  "id": "required-tracks",
  "name": {
    "en_US": "Required tracks",
    "de_DE": "Erforderliche Spuren",
    "es_ES": "Pistas obligatorias",
    "fr_FR": "Pistes requises",
    "it_IT": "Tracce obbligatorie",
    "ja_JP": "必須のトラック",
    "ko_KR": "필수 트랙",
    "pt_BR": "Trilhas obrigatórias",
    "ru_RU": "Обязательные дорожки",
    "zh_CN": "必需轨道"
  },
  "description": {
    "en_US": "Reports a track layout that does not match the configured requirements.",
    "de_DE": "Meldet ein Spurlayout, das nicht den konfigurierten Anforderungen entspricht.",
    "es_ES": "Detecta una disposición de pistas que no cumple los requisitos configurados.",
    "fr_FR": "Signale une disposition des pistes qui ne correspond pas aux exigences configurées.",
    "it_IT": "Segnala una disposizione delle tracce che non corrisponde ai requisiti configurati.",
    "ja_JP": "設定された要件と一致しないトラック構成を報告します。",
    "ko_KR": "설정된 요구 사항과 맞지 않는 트랙 구성을 보고합니다.",
    "pt_BR": "Relata uma disposição de trilhas que não corresponde aos requisitos configurados.",
    "ru_RU": "Сообщает о структуре дорожек, не соответствующей заданным требованиям.",
    "zh_CN": "报告与已配置要求不符的轨道布局。"
  },
  "category": "project",
  "scope": "required-tracks",
  "severity": "warning",
  "options": {
    "minVideoTracks": {
      "type": "number",
      "default": 0,
      "description": "Minimum number of video tracks. 0: not checked."
    },
    "minAudioTracks": {
      "type": "number",
      "default": 0,
      "description": "Minimum number of audio tracks. 0: not checked."
    },
    "videoTrackNames": {
      "type": "string[]",
      "default": [],
      "description": "Names that must exist among video tracks."
    },
    "audioTrackNames": {
      "type": "string[]",
      "default": [],
      "description": "Names that must exist among audio tracks."
    },
    "tracks": {
      "type": "json",
      "default": [],
      "description": "Per-position requirements: { \"ref\": \"V1\", \"name\"?, \"nonEmpty\"? }."
    }
  },
  "checks": [
    {
      "condition": {
        "field": "violation.kind",
        "operator": "equals",
        "value": "minVideo"
      },
      "message": {
        "en_US": {
          "count": "violation.count",
          "one": "Sequence has {violation.count} video track (at least {violation.min} required).",
          "other": "Sequence has {violation.count} video tracks (at least {violation.min} required)."
        },
        "de_DE": {
          "count": "violation.count",
          "one": "Die Sequenz hat {violation.count} Videospur (mindestens {violation.min} erforderlich).",
          "other": "Die Sequenz hat {violation.count} Videospuren (mindestens {violation.min} erforderlich)."
        },
        "es_ES": {
          "count": "violation.count",
          "one": "La secuencia tiene {violation.count} pista de vídeo (mínimo obligatorio: {violation.min}).",
          "other": "La secuencia tiene {violation.count} pistas de vídeo (mínimo obligatorio: {violation.min})."
        },
        "fr_FR": {
          "count": "violation.count",
          "one": "La séquence comporte {violation.count} piste vidéo (minimum requis : {violation.min}).",
          "other": "La séquence comporte {violation.count} pistes vidéo (minimum requis : {violation.min})."
        },
        "it_IT": {
          "count": "violation.count",
          "one": "La sequenza ha {violation.count} traccia video (almeno {violation.min} richieste).",
          "other": "La sequenza ha {violation.count} tracce video (almeno {violation.min} richieste)."
        },
        "ja_JP": "シーケンスのビデオトラックは{violation.count}個です({violation.min}個以上必要)。",
        "ko_KR": "시퀀스의 비디오 트랙이 {violation.count}개입니다(최소 {violation.min}개 필요).",
        "pt_BR": {
          "count": "violation.count",
          "one": "A sequência tem {violation.count} trilha de vídeo (mínimo exigido: {violation.min}).",
          "other": "A sequência tem {violation.count} trilhas de vídeo (mínimo exigido: {violation.min})."
        },
        "ru_RU": {
          "count": "violation.count",
          "one": "В эпизоде {violation.count} видеодорожка (требуется не менее {violation.min}).",
          "few": "В эпизоде {violation.count} видеодорожки (требуется не менее {violation.min}).",
          "many": "В эпизоде {violation.count} видеодорожек (требуется не менее {violation.min}).",
          "other": "В эпизоде {violation.count} видеодорожки (требуется не менее {violation.min})."
        },
        "zh_CN": "序列有 {violation.count} 个视频轨道(至少需要 {violation.min} 个)。"
      }
    },
    {
      "condition": {
        "field": "violation.kind",
        "operator": "equals",
        "value": "minAudio"
      },
      "message": {
        "en_US": {
          "count": "violation.count",
          "one": "Sequence has {violation.count} audio track (at least {violation.min} required).",
          "other": "Sequence has {violation.count} audio tracks (at least {violation.min} required)."
        },
        "de_DE": {
          "count": "violation.count",
          "one": "Die Sequenz hat {violation.count} Audiospur (mindestens {violation.min} erforderlich).",
          "other": "Die Sequenz hat {violation.count} Audiospuren (mindestens {violation.min} erforderlich)."
        },
        "es_ES": {
          "count": "violation.count",
          "one": "La secuencia tiene {violation.count} pista de audio (mínimo obligatorio: {violation.min}).",
          "other": "La secuencia tiene {violation.count} pistas de audio (mínimo obligatorio: {violation.min})."
        },
        "fr_FR": {
          "count": "violation.count",
          "one": "La séquence comporte {violation.count} piste audio (minimum requis : {violation.min}).",
          "other": "La séquence comporte {violation.count} pistes audio (minimum requis : {violation.min})."
        },
        "it_IT": {
          "count": "violation.count",
          "one": "La sequenza ha {violation.count} traccia audio (almeno {violation.min} richieste).",
          "other": "La sequenza ha {violation.count} tracce audio (almeno {violation.min} richieste)."
        },
        "ja_JP": "シーケンスのオーディオトラックは{violation.count}個です({violation.min}個以上必要)。",
        "ko_KR": "시퀀스의 오디오 트랙이 {violation.count}개입니다(최소 {violation.min}개 필요).",
        "pt_BR": {
          "count": "violation.count",
          "one": "A sequência tem {violation.count} trilha de áudio (mínimo exigido: {violation.min}).",
          "other": "A sequência tem {violation.count} trilhas de áudio (mínimo exigido: {violation.min})."
        },
        "ru_RU": {
          "count": "violation.count",
          "one": "В эпизоде {violation.count} аудиодорожка (требуется не менее {violation.min}).",
          "few": "В эпизоде {violation.count} аудиодорожки (требуется не менее {violation.min}).",
          "many": "В эпизоде {violation.count} аудиодорожек (требуется не менее {violation.min}).",
          "other": "В эпизоде {violation.count} аудиодорожки (требуется не менее {violation.min})."
        },
        "zh_CN": "序列有 {violation.count} 个音频轨道(至少需要 {violation.min} 个)。"
      }
    },
    {
      "condition": {
        "field": "violation.kind",
        "operator": "equals",
        "value": "missingVideoName"
      },
      "message": {
        "en_US": "No video track named \"{violation.name}\".",
        "de_DE": "Keine Videospur namens „{violation.name}“.",
        "es_ES": "No hay ninguna pista de vídeo con el nombre \"{violation.name}\".",
        "fr_FR": "Aucune piste vidéo nommée « {violation.name} ».",
        "it_IT": "Nessuna traccia video denominata \"{violation.name}\".",
        "ja_JP": "「{violation.name}」という名前のビデオトラックがありません。",
        "ko_KR": "이름이 \"{violation.name}\"인 비디오 트랙이 없습니다.",
        "pt_BR": "Nenhuma trilha de vídeo com o nome \"{violation.name}\".",
        "ru_RU": "Нет видеодорожки с именем «{violation.name}».",
        "zh_CN": "没有名为“{violation.name}”的视频轨道。"
      }
    },
    {
      "condition": {
        "field": "violation.kind",
        "operator": "equals",
        "value": "missingAudioName"
      },
      "message": {
        "en_US": "No audio track named \"{violation.name}\".",
        "de_DE": "Keine Audiospur namens „{violation.name}“.",
        "es_ES": "No hay ninguna pista de audio con el nombre \"{violation.name}\".",
        "fr_FR": "Aucune piste audio nommée « {violation.name} ».",
        "it_IT": "Nessuna traccia audio denominata \"{violation.name}\".",
        "ja_JP": "「{violation.name}」という名前のオーディオトラックがありません。",
        "ko_KR": "이름이 \"{violation.name}\"인 오디오 트랙이 없습니다.",
        "pt_BR": "Nenhuma trilha de áudio com o nome \"{violation.name}\".",
        "ru_RU": "Нет аудиодорожки с именем «{violation.name}».",
        "zh_CN": "没有名为“{violation.name}”的音频轨道。"
      }
    },
    {
      "condition": {
        "field": "violation.kind",
        "operator": "equals",
        "value": "missingTrack"
      },
      "message": {
        "en_US": "Track {violation.trackRef} is required and does not exist.",
        "de_DE": "Spur {violation.trackRef} ist erforderlich, existiert aber nicht.",
        "es_ES": "La pista {violation.trackRef} es obligatoria y no existe.",
        "fr_FR": "La piste {violation.trackRef} est requise mais n'existe pas.",
        "it_IT": "La traccia {violation.trackRef} è obbligatoria e non esiste.",
        "ja_JP": "トラック {violation.trackRef} は必須ですが、存在しません。",
        "ko_KR": "트랙 {violation.trackRef}이(가) 필요하지만 존재하지 않습니다.",
        "pt_BR": "A trilha {violation.trackRef} é obrigatória e não existe.",
        "ru_RU": "Дорожка {violation.trackRef} обязательна, но отсутствует.",
        "zh_CN": "轨道 {violation.trackRef} 为必需轨道,但不存在。"
      }
    },
    {
      "condition": {
        "field": "violation.kind",
        "operator": "equals",
        "value": "wrongName"
      },
      "message": {
        "en_US": "Track {violation.trackRef} is named \"{violation.name}\", expected \"{violation.expected}\".",
        "de_DE": "Spur {violation.trackRef} heißt „{violation.name}“, erwartet: „{violation.expected}“.",
        "es_ES": "La pista {violation.trackRef} se llama \"{violation.name}\"; se esperaba \"{violation.expected}\".",
        "fr_FR": "La piste {violation.trackRef} est nommée « {violation.name} » au lieu de « {violation.expected} ».",
        "it_IT": "La traccia {violation.trackRef} è denominata \"{violation.name}\", previsto \"{violation.expected}\".",
        "ja_JP": "トラック {violation.trackRef} の名前は「{violation.name}」ですが、「{violation.expected}」である必要があります。",
        "ko_KR": "트랙 {violation.trackRef}의 이름이 \"{violation.name}\"입니다. 필요한 이름: \"{violation.expected}\".",
        "pt_BR": "A trilha {violation.trackRef} tem o nome \"{violation.name}\", esperado \"{violation.expected}\".",
        "ru_RU": "Дорожка {violation.trackRef} называется «{violation.name}», ожидалось «{violation.expected}».",
        "zh_CN": "轨道 {violation.trackRef} 名为“{violation.name}”,应为“{violation.expected}”。"
      }
    },
    {
      "condition": {
        "field": "violation.kind",
        "operator": "equals",
        "value": "empty"
      },
      "message": {
        "en_US": "Track {violation.trackRef} (\"{violation.trackName}\") is required to carry clips and is empty.",
        "de_DE": "Spur {violation.trackRef} („{violation.trackName}“) muss Clips enthalten, ist aber leer.",
        "es_ES": "Pista {violation.trackRef} (\"{violation.trackName}\") debe contener clips y está vacía.",
        "fr_FR": "Piste {violation.trackRef} (« {violation.trackName} ») doit contenir des éléments mais est vide.",
        "it_IT": "Traccia {violation.trackRef} (\"{violation.trackName}\") deve contenere clip ed è vuota.",
        "ja_JP": "トラック {violation.trackRef}(「{violation.trackName}」)にはクリップが必要ですが、空です。",
        "ko_KR": "트랙 {violation.trackRef}(\"{violation.trackName}\")에는 클립이 있어야 하지만 비어 있습니다.",
        "pt_BR": "Trilha {violation.trackRef} (\"{violation.trackName}\") deve conter clipes e está vazia.",
        "ru_RU": "Дорожка {violation.trackRef} («{violation.trackName}») должна содержать клипы, но пуста.",
        "zh_CN": "轨道 {violation.trackRef}(“{violation.trackName}”) 必须包含剪辑,但为空。"
      }
    }
  ],
  "data": {
    "requirement": "violation.requirement",
    "found": "violation.found"
  }
}

On this page