fm.leadsheet.sheet
Schema Diff
+35 -0
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 10 non-breaking changes.
Breaking Changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "fm.leadsheet.sheet#voicing", src: "fm.leadsheet.sheet#voicing", tgt: "fm.leadsheet.sheet#voicing.chord", kind: "prop", name: Some("chord") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "fm.leadsheet.sheet#voicing", src: "fm.leadsheet.sheet#voicing", tgt: "fm.leadsheet.sheet#voicing.frets", kind: "prop", name: Some("frets") }
Non-Breaking Changes (10)
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing" }
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing.chord" }
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing.frets" }
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing.frets:items" }
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet:body.voicings" }
- AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet:body.voicings:items" }
- AddedEdge AddedEdge { src: "fm.leadsheet.sheet#voicing.frets", tgt: "fm.leadsheet.sheet#voicing.frets:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.voicings", kind: "prop", name: Some("voicings") }
- AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body.voicings", tgt: "fm.leadsheet.sheet:body.voicings:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body.voicings:items", tgt: "fm.leadsheet.sheet#voicing", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing" }AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing.chord" }AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing.frets" }AddedVertex { vertex_id: "fm.leadsheet.sheet#voicing.frets:items" }AddedVertex { vertex_id: "fm.leadsheet.sheet:body.voicings" }AddedVertex { vertex_id: "fm.leadsheet.sheet:body.voicings:items" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "fm.leadsheet.sheet#voicing", src: "fm.leadsheet.sheet#voicing", tgt: "fm.leadsheet.sheet#voicing.chord", kind: "prop", name: Some("chord") }
- Breaking: RequiredEdgeAdded { vertex_id: "fm.leadsheet.sheet#voicing", src: "fm.leadsheet.sheet#voicing", tgt: "fm.leadsheet.sheet#voicing.frets", kind: "prop", name: Some("frets") }
- Non-breaking: AddedEdge { src: "fm.leadsheet.sheet#voicing.frets", tgt: "fm.leadsheet.sheet#voicing.frets:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.voicings", kind: "prop", name: Some("voicings") }
- Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body.voicings", tgt: "fm.leadsheet.sheet:body.voicings:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body.voicings:items", tgt: "fm.leadsheet.sheet#voicing", kind: "ref", 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
"forkOf": {
50
50
"description": "The sheet this one was derived from, as it was when forked.",
51
51
"ref": "com.atproto.repo.strongRef",
52
52
"type": "ref"
53
53
},
54
54
"format": {
55
55
"default": "chordpro",
56
56
"description": "Markup of `content`. ChordPro: inline [C]hords, {directives}, and {start_of_tab} blocks.",
57
57
"knownValues": [
58
58
"chordpro"
59
59
],
60
60
"maxLength": 64,
61
61
"type": "string"
62
62
},
63
63
"key": {
64
64
"description": "Key the sheet is written in, e.g. 'G' or 'F#m'.",
65
65
"maxLength": 16,
66
66
"type": "string"
67
67
},
68
68
"kind": {
69
69
"default": "chords",
70
70
"description": "What the sheet is for: chords over lyrics, guitar tablature, ukulele chords, or bass.",
71
71
"knownValues": [
72
72
"chords",
73
73
"tab",
74
74
"ukulele",
75
75
"bass"
76
76
],
77
77
"maxLength": 64,
78
78
"type": "string"
79
79
},
80
80
"tags": {
81
81
"items": {
82
82
"maxGraphemes": 64,
83
83
"maxLength": 640,
84
84
"type": "string"
85
85
},
86
86
"maxLength": 10,
87
87
"type": "array"
88
88
},
89
89
"title": {
90
90
"description": "Song title.",
91
91
"maxGraphemes": 200,
92
92
"maxLength": 1000,
93
93
"type": "string"
94
94
},
95
95
"tuning": {
96
96
"knownValues": [
97
97
"standard",
98
98
"eb-standard",
99
99
"d-standard",
100
100
"drop-d",
101
101
"drop-c",
102
102
"dadgad",
103
103
"open-d",
104
104
"open-g",
105
105
"open-e",
106
106
"open-c"
107
107
],
108
108
"maxLength": 64,
109
109
"type": "string"
110
110
},
111
111
"updatedAt": {
112
112
"format": "datetime",
113
113
"type": "string"
114
+
},
115
+
"voicings": {
116
+
"description": "Chord shapes the author chose, at most one per chord. Readers see these instead of the shapes the app would pick.",
117
+
"items": {
118
+
"ref": "#voicing",
119
+
"type": "ref"
120
+
},
121
+
"maxLength": 100,
122
+
"type": "array"
114
123
}
115
124
},
116
125
"required": [
117
126
"title",
118
127
"artist",
119
128
"content",
120
129
"createdAt"
121
130
],
122
131
"type": "object"
123
132
},
124
133
"type": "record"
134
+
},
135
+
"voicing": {
136
+
"description": "How to play one chord of the sheet.",
137
+
"properties": {
138
+
"chord": {
139
+
"description": "The chord as written in `content`, e.g. 'C' or 'F#m7'.",
140
+
"maxLength": 64,
141
+
"type": "string"
142
+
},
143
+
"frets": {
144
+
"description": "Fret for each string, lowest-pitched first, in the sheet's tuning and relative to its capo: -1 = not played, 0 = open.",
145
+
"items": {
146
+
"maximum": 24,
147
+
"minimum": -1,
148
+
"type": "integer"
149
+
},
150
+
"maxLength": 12,
151
+
"minLength": 1,
152
+
"type": "array"
153
+
}
154
+
},
155
+
"required": [
156
+
"chord",
157
+
"frets"
158
+
],
159
+
"type": "object"
125
160
}
126
161
},
127
162
"description": "A chord sheet or tab for a song, written in ChordPro.",
128
163
"id": "fm.leadsheet.sheet",
129
164
"lexicon": 1
130
165
}