{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tune.toys/schemas/platform/media-vocabulary.schema.json",
  "title": "MediaVocabulary",
  "description": "The closed vocabularies of the Sounds catalog as one document (served to editors and used as the zero-shot tag prompts). The long lists (`Instrument`, `Genre`, `Mood`) are defined here; the short ones reference enums.schema.json. Generated TypeScript exports each titled list as a type and an as-const array.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "instruments": {
      "type": "array",
      "maxItems": 147,
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/Instrument"
      }
    },
    "genres": {
      "type": "array",
      "maxItems": 44,
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/Genre"
      }
    },
    "moods": {
      "type": "array",
      "maxItems": 24,
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/Mood"
      }
    },
    "soundTypes": {
      "type": "array",
      "maxItems": 8,
      "uniqueItems": true,
      "items": {
        "$ref": "enums.schema.json#/$defs/SoundType"
      }
    },
    "modes": {
      "type": "array",
      "maxItems": 7,
      "uniqueItems": true,
      "items": {
        "$ref": "enums.schema.json#/$defs/MusicalMode"
      }
    },
    "relationKinds": {
      "type": "array",
      "maxItems": 7,
      "uniqueItems": true,
      "items": {
        "$ref": "enums.schema.json#/$defs/RelationKind"
      }
    },
    "renditionKinds": {
      "type": "array",
      "maxItems": 10,
      "uniqueItems": true,
      "items": {
        "$ref": "enums.schema.json#/$defs/RenditionKind"
      }
    },
    "analysisStates": {
      "type": "array",
      "maxItems": 5,
      "uniqueItems": true,
      "items": {
        "$ref": "enums.schema.json#/$defs/AnalysisState"
      }
    }
  },
  "required": [
    "instruments",
    "genres",
    "moods",
    "soundTypes",
    "modes",
    "relationKinds",
    "renditionKinds",
    "analysisStates"
  ],
  "$defs": {
    "Instrument": {
      "title": "Instrument",
      "description": "Instrument tag id. The first 128 are the General MIDI level 1 programs in program order (index = program number), so `instruments[program]` maps a MIDI program; the rest name sources General MIDI has no program for (drum parts, vocals, recordings, synth roles).",
      "type": "string",
      "enum": [
        "acoustic-grand-piano",
        "bright-acoustic-piano",
        "electric-grand-piano",
        "honky-tonk-piano",
        "electric-piano-1",
        "electric-piano-2",
        "harpsichord",
        "clavinet",
        "celesta",
        "glockenspiel",
        "music-box",
        "vibraphone",
        "marimba",
        "xylophone",
        "tubular-bells",
        "dulcimer",
        "drawbar-organ",
        "percussive-organ",
        "rock-organ",
        "church-organ",
        "reed-organ",
        "accordion",
        "harmonica",
        "tango-accordion",
        "acoustic-guitar-nylon",
        "acoustic-guitar-steel",
        "electric-guitar-jazz",
        "electric-guitar-clean",
        "electric-guitar-muted",
        "overdriven-guitar",
        "distortion-guitar",
        "guitar-harmonics",
        "acoustic-bass",
        "electric-bass-finger",
        "electric-bass-pick",
        "fretless-bass",
        "slap-bass-1",
        "slap-bass-2",
        "synth-bass-1",
        "synth-bass-2",
        "violin",
        "viola",
        "cello",
        "contrabass",
        "tremolo-strings",
        "pizzicato-strings",
        "orchestral-harp",
        "timpani",
        "string-ensemble-1",
        "string-ensemble-2",
        "synth-strings-1",
        "synth-strings-2",
        "choir-aahs",
        "voice-oohs",
        "synth-voice",
        "orchestra-hit",
        "trumpet",
        "trombone",
        "tuba",
        "muted-trumpet",
        "french-horn",
        "brass-section",
        "synth-brass-1",
        "synth-brass-2",
        "soprano-sax",
        "alto-sax",
        "tenor-sax",
        "baritone-sax",
        "oboe",
        "english-horn",
        "bassoon",
        "clarinet",
        "piccolo",
        "flute",
        "recorder",
        "pan-flute",
        "blown-bottle",
        "shakuhachi",
        "whistle",
        "ocarina",
        "lead-square",
        "lead-sawtooth",
        "lead-calliope",
        "lead-chiff",
        "lead-charang",
        "lead-voice",
        "lead-fifths",
        "lead-bass-lead",
        "pad-new-age",
        "pad-warm",
        "pad-polysynth",
        "pad-choir",
        "pad-bowed",
        "pad-metallic",
        "pad-halo",
        "pad-sweep",
        "fx-rain",
        "fx-soundtrack",
        "fx-crystal",
        "fx-atmosphere",
        "fx-brightness",
        "fx-goblins",
        "fx-echoes",
        "fx-sci-fi",
        "sitar",
        "banjo",
        "shamisen",
        "koto",
        "kalimba",
        "bagpipe",
        "fiddle",
        "shanai",
        "tinkle-bell",
        "agogo",
        "steel-drums",
        "woodblock",
        "taiko-drum",
        "melodic-tom",
        "synth-drum",
        "reverse-cymbal",
        "guitar-fret-noise",
        "breath-noise",
        "seashore",
        "bird-tweet",
        "telephone-ring",
        "helicopter",
        "applause",
        "gunshot",
        "drums",
        "percussion",
        "kick",
        "snare",
        "hi-hat",
        "clap",
        "cymbal",
        "tom",
        "vocals",
        "field-recording",
        "foley",
        "ambience",
        "noise",
        "fx",
        "synth-lead",
        "synth-pad",
        "synth-bass",
        "synth-pluck",
        "synth-keys"
      ]
    },
    "Genre": {
      "title": "Genre",
      "description": "Genre tag id.",
      "type": "string",
      "enum": [
        "ambient",
        "blues",
        "breakbeat",
        "chillout",
        "cinematic",
        "classical",
        "country",
        "dance",
        "deep-house",
        "disco",
        "drum-and-bass",
        "dub",
        "dubstep",
        "electronic",
        "experimental",
        "folk",
        "funk",
        "garage",
        "gospel",
        "grime",
        "hardcore",
        "hip-hop",
        "house",
        "indie",
        "industrial",
        "jazz",
        "latin",
        "lo-fi",
        "metal",
        "orchestral",
        "pop",
        "punk",
        "reggae",
        "reggaeton",
        "rnb",
        "rock",
        "soul",
        "soundtrack",
        "synthwave",
        "techno",
        "trance",
        "trap",
        "trip-hop",
        "world"
      ]
    },
    "Mood": {
      "title": "Mood",
      "description": "Mood tag id; the CLAP zero-shot prompts use the same list.",
      "type": "string",
      "enum": [
        "aggressive",
        "bright",
        "calm",
        "cold",
        "dark",
        "dreamy",
        "energetic",
        "epic",
        "euphoric",
        "gritty",
        "happy",
        "haunting",
        "hopeful",
        "intense",
        "melancholic",
        "mysterious",
        "nostalgic",
        "playful",
        "relaxed",
        "romantic",
        "sad",
        "tense",
        "uplifting",
        "warm"
      ]
    }
  }
}
