{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A chord sheet or tab for a song, written in ChordPro.",
"key": "tid",
"record": {
"properties": {
"album": {
"maxGraphemes": 200,
"maxLength": 1000,
"type": "string"
},
"artist": {
"description": "Performing artist, as credited on the recording this sheet follows.",
"maxGraphemes": 200,
"maxLength": 1000,
"type": "string"
},
"capo": {
"maximum": 12,
"minimum": 0,
"type": "integer"
},
"content": {
"maxGraphemes": 50000,
"maxLength": 100000,
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"description": {
"description": "Author's notes: strumming pattern, how the intro is played, etc.",
"maxGraphemes": 3000,
"maxLength": 10000,
"type": "string"
},
"difficulty": {
"knownValues": [
"beginner",
"intermediate",
"advanced"
],
"maxLength": 32,
"type": "string"
},
"draft": {
"default": false,
"description": "Not published yet: apps list and search only published sheets, and show a draft only to its author. Like any record, a draft is still publicly readable from the author's repo.",
"type": "boolean"
},
"forkOf": {
"description": "The sheet this one was derived from, as it was when forked.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"format": {
"default": "chordpro",
"description": "Markup of `content`. ChordPro: inline [C]hords, {directives}, and {start_of_tab} blocks.",
"knownValues": [
"chordpro"
],
"maxLength": 64,
"type": "string"
},
"key": {
"description": "Key the sheet is written in, e.g. 'G' or 'F#m'.",
"maxLength": 16,
"type": "string"
},
"kind": {
"default": "chords",
"description": "What the sheet is for: chords over lyrics, guitar tablature, ukulele chords, or bass.",
"knownValues": [
"chords",
"tab",
"ukulele",
"bass"
],
"maxLength": 64,
"type": "string"
},
"tags": {
"items": {
"maxGraphemes": 64,
"maxLength": 640,
"type": "string"
},
"maxLength": 10,
"type": "array"
},
"title": {
"description": "Song title.",
"maxGraphemes": 200,
"maxLength": 1000,
"type": "string"
},
"tuning": {
"description": "How the instrument (see `kind`) is tuned. Unset or 'standard' is that instrument's standard: EADGBE guitar, GCEA ukulele, EADG bass.",
"knownValues": [
"standard",
"eb-standard",
"d-standard",
"drop-d",
"drop-c",
"dadgad",
"open-d",
"open-g",
"open-e",
"open-c",
"low-g",
"baritone",
"five-string"
],
"maxLength": 64,
"type": "string"
},
"updatedAt": {
"format": "datetime",
"type": "string"
},
"voicings": {
"description": "Chord shapes the author chose, at most one per chord. Readers see these instead of the shapes the app would pick.",
"items": {
"ref": "#voicing",
"type": "ref"
},
"maxLength": 100,
"type": "array"
}
},
"required": [
"title",
"artist",
"content",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"voicing": {
"description": "How to play one chord of the sheet.",
"properties": {
"chord": {
"description": "The chord as written in `content`, e.g. 'C' or 'F#m7'.",
"maxLength": 64,
"type": "string"
},
"frets": {
"description": "Fret for each string, in chart order (low E side first on guitar and bass, G first on ukulele), in the sheet's tuning and relative to its capo: -1 = not played, 0 = open.",
"items": {
"maximum": 24,
"minimum": -1,
"type": "integer"
},
"maxLength": 12,
"minLength": 1,
"type": "array"
}
},
"required": [
"chord",
"frets"
],
"type": "object"
}
},
"description": "A chord sheet or tab for a song, written in ChordPro.",
"id": "fm.leadsheet.sheet",
"lexicon": 1
}