Disband
Stems

Stems

The stem catalog, how stems relate to each other, and silent stems.

Catalog

Stems form a tree. The mix splits into vocals and instrumental, and each of those into smaller parts. Any stem can be requested on its own by its id.

IdStemPart of
vocalsVocalsthe mix
vocals.leadLead vocalsvocals
vocals.backingBacking vocalsvocals
instrumentalInstrumentalthe mix
instrumental.drumsDrumsinstrumental
instrumental.drums.kickKickinstrumental.drums
instrumental.drums.snareSnareinstrumental.drums
instrumental.drums.tomsTomsinstrumental.drums
instrumental.drums.hihatHi-hatinstrumental.drums
instrumental.drums.cymbalsCymbalsinstrumental.drums
instrumental.bassBassinstrumental
instrumental.guitarGuitarinstrumental
instrumental.pianoPianoinstrumental
instrumental.otherOtherinstrumental

GET /catalog Get the catalog

Response

{
  "stems": [
    {
      "id": "vocals",
      "name": "Vocals",
      "parent": "mix"
    },
    {
      "id": "vocals.lead",
      "name": "Lead vocals",
      "parent": "vocals"
    },
    {
      "id": "vocals.backing",
      "name": "Backing vocals",
      "parent": "vocals"
    },
    {
      "id": "instrumental",
      "name": "Instrumental",
      "parent": "mix"
    },
    {
      "id": "instrumental.drums",
      "name": "Drums",
      "parent": "instrumental"
    },
    {
      "id": "instrumental.drums.kick",
      "name": "Kick",
      "parent": "instrumental.drums"
    },
    {
      "id": "instrumental.drums.snare",
      "name": "Snare",
      "parent": "instrumental.drums"
    },
    {
      "id": "instrumental.drums.toms",
      "name": "Toms",
      "parent": "instrumental.drums"
    },
    {
      "id": "instrumental.drums.hihat",
      "name": "Hi-hat",
      "parent": "instrumental.drums"
    },
    {
      "id": "instrumental.drums.cymbals",
      "name": "Cymbals",
      "parent": "instrumental.drums"
    },
    {
      "id": "instrumental.bass",
      "name": "Bass",
      "parent": "instrumental"
    },
    {
      "id": "instrumental.guitar",
      "name": "Guitar",
      "parent": "instrumental"
    },
    {
      "id": "instrumental.piano",
      "name": "Piano",
      "parent": "instrumental"
    },
    {
      "id": "instrumental.other",
      "name": "Other",
      "parent": "instrumental"
    }
  ]
}

Returns the same tree as JSON. No key required.

Remainders

Three stems are computed as the remainder of their parent: vocals.backing is the vocals without the lead, instrumental.other is the instrumental without drums, bass, guitar and piano, and instrumental.drums.cymbals is the drums without kick, snare, toms and hi-hat. A remainder contains everything its siblings don't, so a stem's children always add up to the stem, and all stems together add up to the song.

Silent stems

A stem with no audio in the song, for example piano in a guitar band, is returned as {"silent": true} without files. A stem is silent when its loudest 100 ms are more than 50 dB below the song's loudest 100 ms. Quiet parts above that threshold are delivered as files. Silent stems are charged like any other stem.

Quality

  • Separation is not perfect. Dense mixes leave some bleed of one stem in another, depending on the song.
  • Guitar and piano separate less cleanly than drums and bass. Remainders contain whatever the other stems missed.
  • Drum kit parts are split from the drums stem. Sounds without a part of their own, such as claps or shakers, are returned in the part they sound closest to.
  • Lead and backing vocals are separated by how the voices sit in the mix. A doubled lead, or harmonies as loud as the lead, can end up in the other stem.
  • Stems keep the song's level. They are scaled down together only if one would clip, so they still add up to the song.