fm.leadsheet.sheet
Schema Diff
+10 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links" }
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links:items" }
- AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.links", kind: "prop", name: Some("links") }
- AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body.links", tgt: "fm.leadsheet.sheet:body.links:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links" }AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.links", kind: "prop", name: Some("links") }
- Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body.links", tgt: "fm.leadsheet.sheet:body.links:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "A chord sheet or tab for a song, written in ChordPro.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"album": {
10
10
"maxGraphemes": 200,
11
11
"maxLength": 1000,
12
12
"type": "string"
13
13
},
14
14
"artist": {
15
15
"description": "Performing artist, as credited on the recording this sheet follows.",
16
16
"maxGraphemes": 200,
17
17
"maxLength": 1000,
18
18
"type": "string"
19
19
},
20
20
"capo": {
21
21
"maximum": 12,
22
22
"minimum": 0,
23
23
"type": "integer"
24
24
},
25
25
"content": {
26
26
"maxGraphemes": 50000,
27
27
"maxLength": 100000,
28
28
"type": "string"
29
29
},
30
30
"createdAt": {
31
31
"format": "datetime",
32
32
"type": "string"
33
33
},
34
34
"description": {
35
35
"description": "Author's notes: strumming pattern, how the intro is played, etc.",
36
36
"maxGraphemes": 3000,
37
37
"maxLength": 10000,
38
38
"type": "string"
39
39
},
40
40
"difficulty": {
41
41
"knownValues": [
42
42
"beginner",
43
43
"intermediate",
44
44
"advanced"
45
45
],
46
46
"maxLength": 32,
47
47
"type": "string"
48
48
},
49
49
"draft": {
50
50
"default": false,
51
51
"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.",
52
52
"type": "boolean"
53
53
},
54
54
"forkOf": {
55
55
"description": "The sheet this one was derived from, as it was when forked.",
56
56
"ref": "com.atproto.repo.strongRef",
57
57
"type": "ref"
58
58
},
59
59
"format": {
60
60
"default": "chordpro",
61
61
"description": "Markup of `content`. ChordPro: inline [C]hords, {directives}, and {start_of_tab} blocks.",
62
62
"knownValues": [
63
63
"chordpro"
64
64
],
65
65
"maxLength": 64,
66
66
"type": "string"
67
67
},
68
68
"key": {
69
69
"description": "Key the sheet is written in, e.g. 'G' or 'F#m'.",
70
70
"maxLength": 16,
71
71
"type": "string"
72
72
},
73
73
"kind": {
74
74
"default": "chords",
75
75
"description": "What the sheet is for: chords over lyrics, guitar tablature, ukulele chords, or bass.",
76
76
"knownValues": [
77
77
"chords",
78
78
"tab",
79
79
"ukulele",
80
80
"bass"
81
81
],
82
82
"maxLength": 64,
83
83
"type": "string"
84
84
},
85
+
"links": {
86
+
"description": "Where to hear the recording this sheet follows: YouTube, Bandcamp, SoundCloud, a streaming service. http(s) URLs.",
87
+
"items": {
88
+
"format": "uri",
89
+
"maxLength": 2000,
90
+
"type": "string"
91
+
},
92
+
"maxLength": 5,
93
+
"type": "array"
94
+
},
85
95
"tags": {
86
96
"items": {
87
97
"maxGraphemes": 64,
88
98
"maxLength": 640,
89
99
"type": "string"
90
100
},
91
101
"maxLength": 10,
92
102
"type": "array"
93
103
},
94
104
"title": {
95
105
"description": "Song title.",
96
106
"maxGraphemes": 200,
97
107
"maxLength": 1000,
98
108
"type": "string"
99
109
},
100
110
"tuning": {
101
111
"description": "How the instrument (see `kind`) is tuned. Unset or 'standard' is that instrument's standard: EADGBE guitar, GCEA ukulele, EADG bass.",
102
112
"knownValues": [
103
113
"standard",
104
114
"eb-standard",
105
115
"d-standard",
106
116
"drop-d",
107
117
"drop-c",
108
118
"dadgad",
109
119
"open-d",
110
120
"open-g",
111
121
"open-e",
112
122
"open-c",
113
123
"low-g",
114
124
"baritone",
115
125
"five-string"
116
126
],
117
127
"maxLength": 64,
118
128
"type": "string"
119
129
},
120
130
"updatedAt": {
121
131
"format": "datetime",
122
132
"type": "string"
123
133
},
124
134
"voicings": {
125
135
"description": "Chord shapes the author chose, at most one per chord. Readers see these instead of the shapes the app would pick.",
126
136
"items": {
127
137
"ref": "#voicing",
128
138
"type": "ref"
129
139
},
130
140
"maxLength": 100,
131
141
"type": "array"
132
142
}
133
143
},
134
144
"required": [
135
145
"title",
136
146
"artist",
137
147
"content",
138
148
"createdAt"
139
149
],
140
150
"type": "object"
141
151
},
142
152
"type": "record"
143
153
},
144
154
"voicing": {
145
155
"description": "How to play one chord of the sheet.",
146
156
"properties": {
147
157
"chord": {
148
158
"description": "The chord as written in `content`, e.g. 'C' or 'F#m7'.",
149
159
"maxLength": 64,
150
160
"type": "string"
151
161
},
152
162
"frets": {
153
163
"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.",
154
164
"items": {
155
165
"maximum": 24,
156
166
"minimum": -1,
157
167
"type": "integer"
158
168
},
159
169
"maxLength": 12,
160
170
"minLength": 1,
161
171
"type": "array"
162
172
}
163
173
},
164
174
"required": [
165
175
"chord",
166
176
"frets"
167
177
],
168
178
"type": "object"
169
179
}
170
180
},
171
181
"description": "A chord sheet or tab for a song, written in ChordPro.",
172
182
"id": "fm.leadsheet.sheet",
173
183
"lexicon": 1
174
184
}