module Music.MusicXml (
Score(..),
ScoreHeader(..),
Identification(..),
Creator(..),
Defaults(..),
ScoreAttrs(..),
PartAttrs(..),
MeasureAttrs(..),
PartList,
PartListElem(..),
Music,
MusicElem(..),
Attributes(..),
TimeSignature(..),
ClefSign(..),
Note(..),
FullNote(..),
IsChord,
noChord,
Tie(..),
noTies,
NoteProps(..),
mapNoteProps,
mapNoteProps2,
Notation(..),
Articulation(..),
Ornament(..),
Technical(..),
Direction(..),
Lyric(..),
Pitch(..),
DisplayPitch(..),
PitchClass,
Semitones(..),
noSemitones,
Octaves(..),
Fifths(..),
Line(..),
Mode(..),
Accidental(..),
Duration(..),
NoteType(..),
Divs(..),
NoteVal(..),
NoteSize(..),
Beat(..),
BeatType(..),
Dynamics,
StemDirection(..),
NoteHead(..),
LineType(..),
Level(..),
BeamType(..),
StartStop(..),
StartStopChange(..),
StartStopContinue(..),
StartStopContinueChange(..),
toXml,
showXml
) where
import Text.XML.Light hiding (Line)
import Music.MusicXml.Score
import Music.MusicXml.Time
import Music.MusicXml.Pitch
import Music.MusicXml.Dynamics
import Music.MusicXml.Read
import Music.MusicXml.Write
import Music.MusicXml.Write.Score
showXml :: Score -> String
showXml = ppTopElement . toXml
toXml :: Score -> Element
toXml = fromSingle . write
fromSingle :: [a] -> a
fromSingle [x] = x
fromSingle _ = error "fromSingle: non-single list"