fm.freemix.stem

A stem (isolated track component). Top-level leaf (FM-549 s38: pulled out from under release.* ; release.stem -> stem). May optionally reference a parent track and/or a parent stems-group.

Details · record, key tid
Kindrecord
Record keytid
Authorityfreemix.fm
Indexed

Record

record · key tid

Properties

Declaration of AI involvement in creation

audioDurationMs

requiredinteger

Duration of the stem in milliseconds

audioFormat

requiredstring

Audio file format

  • maxLength: 100
  • knownValues: wav | flac | mp3

audioHash

requiredstring

SHA-256 hash of the stem audio content

  • maxLength: 200

audioSizeBytes

requiredinteger

Size of the audio file in bytes

audioUrl

string · uri

DEPRECATED (FM-508): no longer emitted. Stem audio is private (gated download / app-served preview) and is never surfaced in the portable record. Field kept (optional) to tolerate pre-FM-508 records without a putRecord rewrite. Stems never get a public clip.

  • maxLength: 3000

bpmCentis

integer

Centi-BPM (BPM × 100), integer — the Lexicon model has no float type; decode as `bpmCentis / 100` on read. Mirrors `fm.freemix.release.track`.

  • minimum: 2000
  • maximum: 99900

coverArtUrl

string · uri

URL to cover art image

  • maxLength: 3000

createdAt

requiredstring · datetime

Record creation timestamp

  • maxLength: 100

Stem description

  • maxLength: 5000

detachedAt

string · datetime

FM-504 tombstone: when the parent link was severed

  • maxLength: 100

genres

array

Genre classifications. Deliberately plural `genres` (it IS an array), NOT the track lexicon's singular `genre` — singular-for-an-array is misleading. Intentional divergence.

  • maxLength: 10
itemsstring
  • maxLength: 50

label

requiredstring

Human-readable name (e.g., 'Main Vocal', 'Acid Line', '808 Kit')

  • maxLength: 100

license

string · at-uri

AT URI of the license grant record. For child stems this is the parent track's license, copied down at creation (FM-504)

  • maxLength: 3000

Musical key (e.g., 'Am', 'F#m', 'Bb'). Deliberately named `musicalKey`, NOT the track lexicon's `key`: `key` is dangerously overloaded in a data layer (record keys, rkeys, map keys), so `musicalKey` is collision-proof and self-documenting. Intentional divergence.

  • maxLength: 10

notes

string

Generic freeform notes for this stem (FM-550, s41). Any purpose — processing notes, licensing caveats, or an ad-hoc credit like 'Drummer: Joey Beats'. Deliberately NOT the structured #trackCredits block: most credit roles are meaningless on a stem, so a freeform escape hatch covers the rare case. Stems carry no structured credits.

  • maxLength: 1000

parentGroup

string · at-uri

AT URI of the parent fm.freemix.group.stems this stem belongs to (optional). FM-549 s38: stems may carry an optional parentTrack AND an optional parentGroup back-ref — the only upward refs in the model (containers otherwise point down at members).

  • maxLength: 3000

parentGroupCid

string · cid

CID of the parent stems-group record (pins to exact version).

  • maxLength: 200

parentTrack

string · at-uri

AT URI of the parent track this stem belongs to (optional for standalone stems)

  • maxLength: 3000

parentTrackCid

string · cid

CID of the parent track record (pins to exact version)

  • maxLength: 200

position

integer

Display order position (0-indexed)

  • minimum: 0

FM-504 tombstone: CID of the former parent track record at detach time

  • maxLength: 200

previouslyAttachedToUri

string · at-uri

FM-504 tombstone: AT URI of the former parent track, set when this stem was detached (parent deleted, keep-stems path). Preserves remix-tree placement + royalty-lineage reconstructability

  • maxLength: 3000

stemType

requiredstring

Type/category of the stem

  • maxLength: 100
  • knownValues: drums | bass | vocals | synth | guitar | keys | pad | lead | fx | other | 808 | synth-strings | vocal-sample | space-echo | plate | african-percussion | surdo | kete

tags

array

Freeform tags

  • maxLength: 10
itemsstring
  • maxLength: 50

title

string

Stem title (first-class stems). `label` remains the required human-readable name; `title` is the unified-on-title field added in FM-504

  • maxLength: 300

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A stem (isolated track component) belonging to a parent track

  • A music track record on FreeMix

  • A music track record on FreeMix. Top-level leaf (FM-549 s38: pulled out from under the release.* prefix; release.track -> track).

  • A sample: a first-class leaf audio record (FM-549 s38: promoted from a DB-only concept to a real ATProto record). A building block — samples carry a 0% royalty by tier principle and no structured credits/notes (s41).

  • A music track published to the AT Protocol network.