fm.leadsheet.sheet

leadsheet.fm

Schema Diff

+35 -0

From

CID
bafyreigs7vu3sfq...
Indexed At
2026-09-24 20:52 UTC
View this version

To

CID
bafyreigqjoyjwya...
Indexed At
2026-09-24 23:45 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@