grammar { start = ( an_analysis | a_response ) a_response = element response { element input {xsd:string}?& element id { xsd:string }?& element status { xsd:string }} an_analysis = element Analysis { element Decoder { attribute version {xsd:string}, attribute name {text}}, element Track { attribute version {xsd:integer}, attribute usableDuration { xsd:float }, attribute duration { xsd:float }, tags, tatums, sections, segments}} tags = element Tags { attribute numTatumsPerBeat { xsd:integer }?, attribute numSegments { xsd:integer }?, attribute pitchVariance { floats }?, attribute sizePitches { xsd:integer }?, attribute numBeats { xsd:integer }?, attribute timeSignature { xsd:integer }?, attribute tatumConfidence { xsd:float }?, attribute numSections { xsd:integer }?, attribute segmentDurationMean { xsd:float }?, attribute tempo { xsd:float }?, attribute loudness { xsd:float }?, attribute tempoConfidence { xsd:float }?, attribute numTatums { xsd:integer }?, attribute timeLoudnessMaxMean { xsd:float }?, attribute tatum { xsd:float }?, attribute startOfFadeOut { xsd:float }?, attribute pitchMean { floats }?, attribute sizeTimbre { xsd:integer }?, attribute segmentDurationVariance { xsd:float }?, attribute loudnessMaxMean { xsd:float }?, attribute loudnessMaxVariance { xsd:float }?, attribute timbreVariance { floats }?, attribute loudnessDynamicsMean { xsd:float }?, attribute timeSignatureStability { xsd:float }?, attribute beatVariance { xsd:float }?, attribute loudnessBeginMean { xsd:float }?, attribute loudnessBeginVariance { xsd:float }?, attribute endOfFadeIn { xsd:float }?, attribute timbreMean { floats }?, attribute loudnessDynamicsVariance { xsd:float }?, attribute timbreCoeff { floats }?, attribute pitches { floats }?, attribute timeLoudnessMax { xsd:float }?, attribute loudnessMax {xsd:float}?, attribute loudnessBegin {xsd:float}?, attribute loudnessEnd {xsd:float}?} floats = xsd:string tatums = element Tatums { floats }+ sections = element Section { attribute start { xsd:float }, attribute duration { xsd:float }}+ segments = element Segment { attribute start { xsd:float }, attribute duration { xsd:float }, tags}+ }