-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Library to handle abstract music
--
-- This library consists on abstract music manipulation. It also supports
-- interfaces with MusicXML.
@package hamusic
@version 0.1.1
-- | This module implements chords
module Music.Analysis.Chord
data Mode
Major :: Mode
Minor :: Mode
-- | Implements interface to Lilypond
module Music.Analysis.Lilypond
-- | This module implements lite interface to Haskore
--
-- Bugs: - Chords - more than one Divisions(changes duration)
module Music.Analysis.Haskore
module Script
data Script
Script :: Script_Attrs -> [Action] -> Script
data Script_Attrs
Script_Attrs :: (Maybe String) -> (Maybe String) -> (Maybe String) -> Script_Attrs
scriptAuthor :: Script_Attrs -> (Maybe String)
scriptDate :: Script_Attrs -> (Maybe String)
scriptDescription :: Script_Attrs -> (Maybe String)
data Action
Action :: Action_Attrs -> [(OneOf7 Filter Reification Stat Parttime Timepart Haskore Midi)] -> Action
data Action_Attrs
Action_Attrs :: String -> (Maybe String) -> (Maybe Action_warnings) -> Action_Attrs
actionInput :: Action_Attrs -> String
actionOutput :: Action_Attrs -> (Maybe String)
actionWarnings :: Action_Attrs -> (Maybe Action_warnings)
data Action_warnings
Action_warnings_yes :: Action_warnings
Action_warnings_no :: Action_warnings
data Filter
Filter :: Filter_select -> (Maybe Filter_mode) -> Filter
filterSelect :: Filter -> Filter_select
filterMode :: Filter -> (Maybe Filter_mode)
data Filter_select
Filter_select_note :: Filter_select
Filter_select_note_grace :: Filter_select
Filter_select_note_cue :: Filter_select
Filter_select_note_normal :: Filter_select
data Filter_mode
Filter_mode_yes :: Filter_mode
Filter_mode_no :: Filter_mode
data Reification
Reification :: Reification_value -> Reification
reificationValue :: Reification -> Reification_value
data Reification_value
Reification_value_1 :: Reification_value
Reification_value_2 :: Reification_value
Reification_value_3 :: Reification_value
Reification_value_4 :: Reification_value
Reification_value_5 :: Reification_value
data Stat
Stat :: Stat_Attrs -> [Count] -> Stat
data Stat_Attrs
Stat_Attrs :: (Maybe Stat_verbose) -> Stat_Attrs
statVerbose :: Stat_Attrs -> (Maybe Stat_verbose)
data Stat_verbose
Stat_verbose_yes :: Stat_verbose
Stat_verbose_no :: Stat_verbose
data Count
Count :: Count_select -> Count
countSelect :: Count -> Count_select
data Count_select
Count_select_part :: Count_select
Count_select_measure :: Count_select
Count_select_music_data :: Count_select
Count_select_note :: Count_select
Count_select_note_grace :: Count_select
Count_select_note_cue :: Count_select
Count_select_note_normal :: Count_select
data Parttime
Parttime :: Parttime
data Timepart
Timepart :: Timepart
data Haskore
Haskore :: Haskore
data Midi
Midi :: (Maybe Midi_play) -> Midi
midiPlay :: Midi -> (Maybe Midi_play)
data Midi_play
Midi_play_yes :: Midi_play
Midi_play_no :: Midi_play
instance Eq Midi_play
instance Show Midi_play
instance Eq Midi
instance Show Midi
instance Eq Haskore
instance Show Haskore
instance Eq Timepart
instance Show Timepart
instance Eq Parttime
instance Show Parttime
instance Eq Count_select
instance Show Count_select
instance Eq Count
instance Show Count
instance Eq Stat_verbose
instance Show Stat_verbose
instance Eq Stat_Attrs
instance Show Stat_Attrs
instance Eq Stat
instance Show Stat
instance Eq Reification_value
instance Show Reification_value
instance Eq Reification
instance Show Reification
instance Eq Filter_mode
instance Show Filter_mode
instance Eq Filter_select
instance Show Filter_select
instance Eq Filter
instance Show Filter
instance Eq Action_warnings
instance Show Action_warnings
instance Eq Action_Attrs
instance Show Action_Attrs
instance Eq Action
instance Show Action
instance Eq Script_Attrs
instance Show Script_Attrs
instance Eq Script
instance Show Script
instance XmlAttrType Midi_play
instance XmlAttributes Midi
instance XmlContent Midi
instance HTypeable Midi
instance XmlContent Haskore
instance HTypeable Haskore
instance XmlContent Timepart
instance HTypeable Timepart
instance XmlContent Parttime
instance HTypeable Parttime
instance XmlAttrType Count_select
instance XmlAttributes Count
instance XmlContent Count
instance HTypeable Count
instance XmlAttrType Stat_verbose
instance XmlAttributes Stat_Attrs
instance XmlContent Stat
instance HTypeable Stat
instance XmlAttrType Reification_value
instance XmlAttributes Reification
instance XmlContent Reification
instance HTypeable Reification
instance XmlAttrType Filter_mode
instance XmlAttrType Filter_select
instance XmlAttributes Filter
instance XmlContent Filter
instance HTypeable Filter
instance XmlAttrType Action_warnings
instance XmlAttributes Action_Attrs
instance XmlContent Action
instance HTypeable Action
instance XmlAttributes Script_Attrs
instance XmlContent Script
instance HTypeable Script
-- | This module implements common types
module Music.Analysis.Base
-- | Number is Double
type Number = Double
-- | Delta type is a number
type Delta = Number
-- | Text is String
type Text = String
-- | Integer Number definition
type IntegerNumber = Int
-- | Ratio Number definition
type RatioNumber = Ratio IntegerNumber
-- | wrapper to get Integer Number
toInteger :: Number -> IntegerNumber
-- | wrapper to get Ratio Number
toRatio :: IntegerNumber -> RatioNumber
-- | Invariant class specification
class Invariant a
invariant :: (Invariant a) => a -> Bool
-- | like unzip
unzipMaybe :: [Maybe (a, b)] -> ([Maybe a], [Maybe b])
-- | like zip
zipMaybe :: ([Maybe a], [Maybe b]) -> [Maybe (a, b)]
module Music.Analysis.ABC
data ABCMusic
ABCMusic :: ABCMetaData -> [ABCMusicData] -> ABCMusic
data ABCMetaData
ABCMetaData :: ABCIndex -> ABCTitle -> ABCMeter -> ABCKey -> ABCMetaData
data ABCIndex
ABCIndex :: ABCIndex
data ABCTitle
ABCTitle :: ABCTitle
data ABCMeter
ABCMeter :: ABCMeter
data ABCKey
ABCKey :: ABCKey
data ABCMusicData
Single :: ABCNote -> ABCMusicData
Tuplet :: Int -> [ABCMusicData] -> ABCMusicData
Chord :: [ABCMusicData] -> ABCMusicData
Tie :: ABCMusicData -> ABCMusicData -> ABCMusicData
Slur :: [ABCMusicData] -> ABCMusicData
Staccato :: ABCMusicData -> ABCMusicData
GraceNotes :: [ABCNote] -> ABCMusicData -> ABCMusicData
Symbol :: String -> ABCNote -> ABCMusicData
data ABCNote
Pitch :: Pitch -> Octave -> Accident -> Duration -> Dotted -> ABCNote
Rest :: Bool -> Duration -> ABCNote
data Pitch
C :: Pitch
D :: Pitch
E :: Pitch
F :: Pitch
G :: Pitch
A :: Pitch
B :: Pitch
data Accident
Accident :: (Maybe Accidental) -> Accident
data Accidental
Sharp :: (Number, Int) -> Accidental
Natural :: Accidental
Flat :: (Number, Int) -> Accidental
data Dotted
Increase :: Int -> Dotted
Decrease :: Int -> Dotted
type Octave = Int
data Duration
Duration :: (Int, Int) -> Duration
instance Eq Duration
instance Eq Dotted
instance Eq Accidental
instance Eq Accident
instance Show Pitch
instance Eq Pitch
instance Eq ABCNote
instance Eq ABCMusicData
instance Eq ABCKey
instance Show ABCKey
instance Eq ABCMeter
instance Show ABCMeter
instance Eq ABCTitle
instance Show ABCTitle
instance Eq ABCIndex
instance Show ABCIndex
instance Eq ABCMetaData
instance Eq ABCMusic
instance Show Duration
instance Show Dotted
instance Show Accidental
instance Show Accident
instance Show ABCNote
instance Show ABCMusicData
instance Show ABCMusic
module Music.Analysis.MusicXML.Level1
type Score_Partwise = [Music_Data]
data Music_Data
Music_Data_1 :: Note -> Music_Data
type Note = (Note_, Maybe Type, [Dot], Maybe Accidental)
data Note_
Note_3 :: Full_Note -> Note_
type Full_Note = Full_Note_
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Pitch = (Step, Maybe Alter, Octave)
data Step
C :: Step
D :: Step
E :: Step
F :: Step
G :: Step
A :: Step
B :: Step
type Alter = Number
type Octave = IntegerNumber
type Rest = ()
type Type = Type_
data Type_
Long :: Type_
Breve :: Type_
Whole :: Type_
Half :: Type_
Quarter :: Type_
Eighth :: Type_
Th16 :: Type_
Th32 :: Type_
Th64 :: Type_
Th128 :: Type_
Th256 :: Type_
type Dot = ()
type Accidental = Accidental_
data Accidental_
Sharp :: Accidental_
Natural :: Accidental_
Flat :: Accidental_
Double_Sharp :: Accidental_
Sharp_Sharp :: Accidental_
Flat_Flat :: Accidental_
Natural_Sharp :: Accidental_
Natural_Flat :: Accidental_
Quarter_Sharp :: Accidental_
Quarter_Flat :: Accidental_
Three_Quarters_Sharp :: Accidental_
Three_Quarters_Flat :: Accidental_
instance Eq Accidental_
instance Show Accidental_
instance Ord Accidental_
instance Enum Accidental_
instance Eq Type_
instance Show Type_
instance Ord Type_
instance Enum Type_
instance Eq Step
instance Show Step
instance Ord Step
instance Enum Step
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
module Music.Analysis.MusicXML.Level1Num
type Score_Partwise = [Music_Data]
data Music_Data
Music_Data_1 :: Note -> Music_Data
type Note = (Note_, Maybe Type, [Dot], Maybe Accidental)
data Note_
Note_3 :: Full_Note -> Note_
type Full_Note = Full_Note_
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Pitch = (IntegerNumber, Maybe Alter)
type Alter = Number
type Rest = ()
type Type = Type_
type Type_ = IntegerNumber
type Dot = ()
type Accidental = Accidental_
type Accidental_ = IntegerNumber
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
-- | This module implements Point-Free library
module Music.Analysis.PF
-- | split
split :: (a -> b) -> (a -> c) -> a -> (b, c)
-- | product
(><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d)
-- | the 0-adic split
(!) :: a -> ()
-- | fst
p1 :: (a, b) -> a
-- | snd
p2 :: (a, b) -> b
-- | Left
i1 :: a -> Either a b
-- | Right
i2 :: b -> Either a b
-- | sum
(-|-) :: (a -> b) -> (c -> d) -> Either a c -> Either b d
-- | McCarthy's conditional:
cond :: (b -> Bool) -> (b -> c) -> (b -> c) -> b -> c
-- | ap
ap :: (a -> b, a) -> b
-- | expn
expn :: (b -> c) -> (a -> b) -> a -> c
-- | guard
grd :: (a -> Bool) -> a -> Either a a
-- | swap
swap :: (a, b) -> (b, a)
-- | assoc right
assocr :: ((a, b), c) -> (a, (b, c))
-- | assoc left
assocl :: (a, (b, c)) -> ((a, b), c)
-- | dist right
distr :: (a, Either b c) -> Either (a, b) (a, c)
-- | undist right
undistr :: Either (a, b) (a, c) -> (a, Either b c)
-- | flat right
flatr :: (a, (b, c)) -> (a, b, c)
-- | flat left
flatl :: ((a, b), c) -> (a, b, c)
-- | unflat right
unflatr :: (a, b, c) -> (a, (b, c))
-- | unflat left
unflatl :: (a, b, c) -> ((a, b), c)
-- | pair with nil
pwnil :: a -> (a, ())
-- | coswap
coswap :: Either a b -> Either b a
-- | coassoc right
coassocr :: Either (Either a b) c -> Either a (Either b c)
-- | maybe 2 Either
maybe2either :: Maybe a -> Either () a
-- | either 2 maybe
either2maybe :: Either () a -> Maybe a
-- | Binding to either2maybe
e2m :: Either () a -> Maybe a
-- | Binding to maybe2either
m2e :: Maybe a -> Either () a
-- | out
outL :: [a] -> Maybe (a, [a])
-- | catamorphism
cataL :: (Maybe (a, c) -> c) -> [a] -> c
-- | in
inL :: Maybe (a, [a]) -> [a]
-- | anamorphism
anaL :: (c -> Maybe (a, c)) -> c -> [a]
-- | hylomorphism
hyloL :: (Maybe (c, b) -> b) -> (a -> Maybe (c, a)) -> a -> b
-- | mapping
mapL :: (a -> b) -> [a] -> [b]
-- | concat
concatL :: [[a]] -> [a]
-- | reverse
reverseL :: [a] -> [a]
-- | out
outL1 :: [a] -> Maybe (Either a (a, [a]))
-- | catamorphism
cataL1 :: (Maybe (Either a (a, c)) -> c) -> [a] -> c
-- | in
inL1 :: Maybe (Either a (a, [a])) -> [a]
-- | anamorphism
anaL1 :: (c -> Maybe (Either a (a, c))) -> c -> [a]
-- | hylomorphism
hyloL1 :: (Maybe (Either d (c, b)) -> b) -> (a -> Maybe (Either d (c, a))) -> a -> b
-- | This module implements configurations
module Music.Analysis.Abstract.Settings
-- | Definition of Settings to make general configurations It is possible
-- grow
type Settings = Map Text (Bool, Either Text Number)
-- | empty configurations
empty :: Settings
-- | fromList
fromList :: [(Text, (Bool, Either Text Number))] -> Settings
-- | wrapper to settings
text' :: Text -> (Bool, Either Text Number)
text :: Text -> Bool -> (Bool, Either Text Number)
-- | wrapper to settings
number' :: Number -> (Bool, Either Text Number)
number :: Number -> Bool -> (Bool, Either Text Number)
priority :: Bool
-- | Get value from configuration
getSettings :: Text -> Settings -> Maybe (Either Text Number)
changeSettings' :: Text -> (Bool, Either Text Number) -> Settings -> Settings
changeSettings :: Text -> (Bool -> (Bool, Either Text Number)) -> Settings -> Settings
-- | get Text value from Configurations
getText :: Text -> Settings -> Maybe Text
-- | get Number value from Configurations
getNumber :: Text -> Settings -> Maybe Number
-- | Change Text
changeText :: Text -> Text -> Settings -> Settings
-- | Change Number
changeNumber :: Text -> Number -> Settings -> Settings
-- | Union
union :: Settings -> Settings -> Settings
union1 :: Settings -> Settings -> Settings
-- | This module implements a generic Motive
module Music.Analysis.Abstract.Motive
-- | Motive Definition
data Motive a
Motive :: (Settings, [a]) -> Motive a
-- | make new motive
mkMotive :: Settings -> [a] -> Motive a
-- | get Internal Motive representation
fromMotive :: Motive a -> (Settings, [a])
-- | get Motive from internal representation
toMotive :: (Settings, [a]) -> Motive a
meta :: (Settings -> Settings) -> Motive a -> Motive a
-- | General cata
cataMotive :: b -> (Settings -> (a, b) -> b) -> Motive a -> (Settings, b)
-- | General map
mapMotive :: (Settings -> a -> b) -> Motive a -> Motive b
-- | join Pair of Motive into Motive of Pair
joinMotivePair :: (Motive a, Motive b) -> Motive (a, b)
-- | Split Motive of Pair into Pair of Motive
splitMotivePair :: Motive (a, b) -> (Motive a, Motive b)
-- | join List of Motive into Motive of List
joinMotiveList :: [Motive a] -> Motive [a]
-- | split Motive of List into List of Motive
splitMotiveList :: (Eq a) => Motive [a] -> [Motive a]
instance (Eq a) => Eq (Motive a)
instance (Show a) => Show (Motive a)
instance (Read a) => Read (Motive a)
-- | This module implements Melodic Motive
module Music.Analysis.Abstract.Melodic
-- | Melodic node
type Pitch = Number
type MelodicNode = Maybe (Delta, Accident)
type MelodicRelative = Maybe (Delta, Accident)
type MelodicAbsolute = Maybe (Pitch, Accident)
type MelodicClass = Maybe (PitchClass, Accident)
-- | Accident is defined as number provisional. It doesn't support
-- natural (only supports flats and sharps) To supports sharps, flats and
-- natural, it will be Maybe Number This number is number of
-- half-tones.
type Accident = Maybe Number
data AccidentClass
DoubleSharp :: AccidentClass
Sharp :: AccidentClass
Natural :: AccidentClass
Flat :: AccidentClass
DoubleFlat :: AccidentClass
UnknowAccident :: Text -> AccidentClass
-- | Pitch Class definition
data PitchClass
-- | C
C :: PitchClass
-- | D
D :: PitchClass
-- | E
E :: PitchClass
-- | F
F :: PitchClass
-- | G
G :: PitchClass
-- | A
A :: PitchClass
-- | B
B :: PitchClass
-- | MelodicNode with PitchClass
type MelodicClassNode = Maybe (PitchClass, Accident)
-- | default settings
settings :: Settings
-- | rest combinator
rest :: b -> ((Delta, Accident) -> b) -> MelodicNode -> b
-- | Default rest
mkRest :: MelodicNode
-- | default non-rest
mkNoRest :: MelodicNode
-- | Transforms 7-number into Char notation
pitch :: (Number, Accident) -> (IntegerNumber, (PitchClass, Accident))
-- | Transforms 7-number into Char notation
pitch' :: (Number, Accident) -> (PitchClass, Accident)
-- | Transforms Char into 7-Number notation
absPitch :: (PitchClass, Accident) -> (Number, Accident)
-- | Transpose to 12 level
transpose12 :: Number -> MelodicAbsolute -> MelodicAbsolute
-- | transforms 7 level to 12-level notation
f7to12 :: (Number, Accident) -> (Number, Accident)
-- | transforms 12-level into 7-level notation
f12to7 :: (Number, Accident) -> (Number, Accident)
-- | Transposes over 7 absolute level
transpose :: Number -> Motive MelodicAbsolute -> Motive MelodicAbsolute
-- | Reverse
reverse :: Motive MelodicNode -> Motive MelodicNode
-- | symmetric melodic
symmetric :: Number -> Motive MelodicAbsolute -> Motive MelodicAbsolute
-- | Convert to alpha notation
toAlpha :: Motive MelodicAbsolute -> Motive (Maybe (IntegerNumber, (PitchClass, Accident)))
-- | Convert to alpha notation
toAlpha' :: Motive MelodicNode -> Motive MelodicClassNode
-- | get 7-Absolute music from alpha notation
fromAlpha :: Motive MelodicClassNode -> Motive MelodicAbsolute
-- | Convert 7-absolute into 12-absolute notation
to12 :: Motive MelodicAbsolute -> Motive MelodicAbsolute
-- | Convert 12-absolute into 7-absolute notation
from12 :: Motive MelodicAbsolute -> Motive MelodicAbsolute
-- | relative melodic.
relative :: Motive MelodicAbsolute -> Motive MelodicRelative
-- | absolute PF
absolute :: Motive MelodicRelative -> Motive MelodicAbsolute
instance Eq PitchClass
instance Show PitchClass
instance Read PitchClass
instance Eq AccidentClass
instance Show AccidentClass
-- | This module implements Rhythm Motive
module Music.Analysis.Abstract.Rhythm
-- | Rhythm node
type RhythmNode = (Delta, Dots)
type RhythmAbsolute = (RatioNumber, Dots)
type RhythmRelative = (RatioNumber, Dots)
-- | Dots is defined by number. Only Integers and positive numbers are
-- allowed.
type Dots = IntegerNumber
type Duration = Number
data DurationClass
Whole :: DurationClass
Half :: DurationClass
Quarter :: DurationClass
Eighth :: DurationClass
Th16 :: DurationClass
Th32 :: DurationClass
Th64 :: DurationClass
UnkownDuration :: Text -> DurationClass
-- | sefault settings
settings :: Settings
-- | computes duration PW
durationNode :: RhythmNode -> Number
-- | computes compass duration
compass :: (Number, Number) -> Number
-- | changes duration
tempo :: RatioNumber -> Motive RhythmAbsolute -> Motive RhythmAbsolute
-- | computes duration
duration :: Motive RhythmNode -> Number
-- | reverse
reverse :: Motive RhythmNode -> Motive RhythmNode
-- | symmetric trsnformation
symmetric :: RatioNumber -> Motive RhythmAbsolute -> Motive RhythmAbsolute
-- | Computes relative Rhythm
relative :: Motive RhythmAbsolute -> Motive RhythmRelative
-- | Absolute PF
absolute :: Motive RhythmRelative -> Motive RhythmAbsolute
durationNumber :: DurationClass -> Duration
durationTotalNumber :: (DurationClass, Dots) -> Duration
getDurationClass :: (Duration, Dots) -> DurationClass
getDuration :: (DurationClass, Dots) -> Duration
getDuration_aux1 :: DurationClass -> Duration
instance Eq DurationClass
instance Show DurationClass
-- | This module join Melodic and Rhythm
module Music.Analysis.Abstract.Zip
-- | VoiceZipNode definition
type VoiceZipNode = (MelodicNode, RhythmNode)
type VoiceZipAbsolute = (MelodicAbsolute, RhythmAbsolute)
type VoiceZipRelative = (MelodicRelative, RhythmRelative)
-- | default settings
settings :: Settings
-- | transposes
transpose :: Number -> Motive VoiceZipAbsolute -> Motive VoiceZipAbsolute
-- | changes duration
tempo :: Number -> Motive VoiceZipAbsolute -> Motive VoiceZipAbsolute
-- | computes duration
duration :: Motive VoiceZipNode -> Number
-- | reverse
reverse :: Motive VoiceZipNode -> Motive VoiceZipNode
-- | relative
relative :: Motive VoiceZipAbsolute -> Motive VoiceZipRelative
-- | absolute
absolute :: Motive VoiceZipRelative -> Motive VoiceZipAbsolute
-- | This module implements specific music notation
module Music.Analysis.Abstract.Notations
-- | Info
type NotationInfo = Either Text Number
-- | New Notation Node
type NotationNode = [(NotationPosition, NotationInfo)]
-- | New Notation Position
type NotationPosition = Maybe Position
-- | Position
type Position = Number
-- | sefault settings
settings :: Settings
addNotation :: NotationPosition -> NotationInfo -> NotationNode -> NotationNode
-- | transpose using above layers
transpose :: Number -> Motive (VoiceZipAbsolute, NotationNode) -> Motive (VoiceZipAbsolute, NotationNode)
-- | tempo transformation using above layers
tempo :: Number -> Motive (VoiceZipAbsolute, NotationNode) -> Motive (VoiceZipAbsolute, NotationNode)
-- | duration computation using above layers
duration :: Motive (VoiceZipNode, NotationNode) -> Number
-- | reverse using above layers
reverse :: Motive (VoiceZipNode, NotationNode) -> Motive (VoiceZipNode, NotationNode)
-- | relative transformation using above layers
relative :: Motive (VoiceZipAbsolute, NotationNode) -> Motive (VoiceZipRelative, NotationNode)
-- | absolute transformation using above layers
absolute :: Motive (VoiceZipRelative, NotationNode) -> Motive (VoiceZipAbsolute, NotationNode)
instance Invariant NotationPosition
-- | This module implements multiple voices
module Music.Analysis.Abstract.Voices
type MultiVoiceNode = ((VoiceZipNode, IntegerNumber), NotationNode)
type MultiVoiceAbsolute = ((VoiceZipAbsolute, IntegerNumber), NotationNode)
type MultiVoiceRelative = ((VoiceZipRelative, IntegerNumber), NotationNode)
-- | default settings
settings :: Settings
joinVoices :: IntegerNumber -> (a, NotationNode) -> ((a, IntegerNumber), NotationNode)
splitVoices :: ((a, IntegerNumber), NotationNode) -> (IntegerNumber, (a, NotationNode))
-- | Transpose using above layers
transpose :: Number -> Motive MultiVoiceAbsolute -> Motive MultiVoiceAbsolute
-- | tempo transformation using above layers
tempo :: Number -> Motive MultiVoiceAbsolute -> Motive MultiVoiceAbsolute
-- | duration computation using above layers
duration :: Motive MultiVoiceNode -> Number
-- | reverse using above layers
reverse :: Motive MultiVoiceNode -> Motive MultiVoiceNode
-- | absolute transformation using above layers
absolute :: Motive MultiVoiceRelative -> Motive MultiVoiceAbsolute
-- | relative transformation using above layers
relative :: Motive MultiVoiceAbsolute -> Motive MultiVoiceRelative
-- | This module implements multiple instruments
module Music.Analysis.Abstract.Instruments
type MultiInstrumentNode = [MultiVoiceNode]
type MultiInstrumentAbsolute = [MultiVoiceAbsolute]
type MultiInstrumentRelative = [MultiVoiceRelative]
-- | default settings
settings :: Settings
-- | Transpose using above layers
transpose :: Number -> Motive MultiInstrumentAbsolute -> Motive MultiInstrumentAbsolute
-- | tempo transformation using above layers
tempo :: Number -> Motive MultiInstrumentAbsolute -> Motive MultiInstrumentAbsolute
-- | duration computation using above layers
duration :: Motive MultiInstrumentNode -> [Number]
-- | reverse using above layers
reverse :: Motive MultiInstrumentNode -> Motive MultiInstrumentNode
-- | absolute transformation using above layers
absolute :: Motive MultiInstrumentRelative -> Motive MultiInstrumentAbsolute
-- | relative transformation using above layers
relative :: Motive MultiInstrumentAbsolute -> Motive MultiInstrumentRelative
-- | This module implements annotation over music notation
module Music.Analysis.Abstract.Annotation
type A = Text
type Annot = ([((((MelodicNode, A), (RhythmNode, A)), Bool), [((NotationPosition, NotationInfo), A)])], A)
type AnnotationNode = [(Maybe Number, Text)]
-- | Definition of annotation
type MultiAnnotationNode = (MultiInstrumentNode, AnnotationNode)
type AnnotationAbsolute = (MultiInstrumentAbsolute, AnnotationNode)
type AnnotationRelative = (MultiInstrumentRelative, AnnotationNode)
-- | sefault settings
settings :: Settings
-- | Transpose using above layers
transpose :: Number -> Motive AnnotationAbsolute -> Motive AnnotationAbsolute
-- | tempo transformation using above layers
tempo :: Number -> Motive AnnotationAbsolute -> Motive AnnotationAbsolute
-- | duration computation using above layers
duration :: Motive MultiAnnotationNode -> [Number]
-- | reverse using above layers
reverse :: Motive MultiAnnotationNode -> Motive MultiAnnotationNode
-- | absolute transformation using above layers
absolute :: Motive AnnotationRelative -> Motive AnnotationAbsolute
-- | relative transformation using above layers
relative :: Motive AnnotationAbsolute -> Motive AnnotationRelative
-- | This module implements common types
module Music.Analysis.Abstract
module Music.Analysis.MusicXML.Level2
type Score_Partwise = [Measure]
type Measure = [Music_Data]
data Music_Data
Music_Data_1 :: Note -> Music_Data
Music_Data_5 :: Attributes -> Music_Data
type Note = (Note_, Maybe Type, [Dot], Maybe Accidental)
data Note_
Note_3 :: (Full_Note, Duration) -> Note_
type Full_Note = Full_Note_
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Pitch = (Step, Maybe Alter, Octave)
type Duration = IntegerNumber
type Type = Type_
type Dot = ()
type Accidental = Accidental_
type Attributes = (Maybe Divisions, [Key], [Time], [Clef])
type Divisions = IntegerNumber
type Key = (Key_, [Key_Octave])
data Key_
Key_1 :: (Fifths, Maybe Mode) -> Key_
Key_2 :: [(Key_Step, Key_Alter)] -> Key_
type Fifths = IntegerNumber
data Mode
Major :: Mode
Minor :: Mode
Dorian :: Mode
Phrygian :: Mode
Lydian :: Mode
Mixolydian :: Mode
Aeolian :: Mode
Ionian :: Mode
Locrian :: Mode
type Key_Step = Step
type Key_Alter = Alter
type Key_Octave = Octave
type Time = Time_B
data Time_B
Time_5 :: [(Beats, Beat_Type)] -> Time_B
-- | MusicXML Schema specify xs:string
type Beats = (IntegerNumber, Maybe IntegerNumber)
-- | MusicXML Schema specify xs:string
type Beat_Type = IntegerNumber
type Clef = (Sign, Maybe Line, Maybe Clef_Octave_Change)
data Sign
Clef_Sign_G :: Sign
Clef_Sign_F :: Sign
Clef_Sign_C :: Sign
Clef_Sign_Percussion :: Sign
Clef_Sign_TAB :: Sign
Clef_Sign_None :: Sign
type Line = IntegerNumber
type Clef_Octave_Change = IntegerNumber
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Music_Data :: Music_Data -> Maybe Music_Data
abst_Note :: Note -> Note
abst_Note_ :: Note_ -> Note_
abst_Full_Note :: Full_Note -> Full_Note
abst_Full_Note_ :: Full_Note_ -> Full_Note_
abst_Pitch :: Pitch -> Pitch
abst_Type :: Type -> Type
abst_Dot :: Dot -> Dot
abst_Accidental :: Accidental -> Accidental
split_Measure :: Measure -> ((), [Maybe Music_Data])
split_Music_Data :: Music_Data -> (Music_Data, Maybe Music_Data)
split_Note :: Note -> (Note, Note)
split_Note_ :: Note_ -> (Duration, Full_Note_)
split_Full_Note :: Full_Note -> (Full_Note, Full_Note)
split_Full_Note_ :: Full_Note_ -> (Full_Note_, Full_Note_)
split_Pitch :: Pitch -> (Pitch, Pitch)
split_Type :: Type -> (Type, Type)
split_Dot :: Dot -> (Dot, Dot)
split_Accidental :: Accidental -> (Accidental, Accidental)
instance Eq Sign
instance Show Sign
instance Enum Sign
instance Eq Time_B
instance Show Time_B
instance Eq Mode
instance Show Mode
instance Eq Key_
instance Show Key_
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
-- | This module implements common types
module Music.Analysis.MusicXML2Abstract
mk_Music :: Score_Partwise -> Motive (MelodicClass, RhythmAbsolute)
mk_MusicData :: [Music_Data] -> [(MelodicClass, RhythmAbsolute)]
mk_Note :: Note -> (MelodicClass, RhythmAbsolute)
mk_MelodicNode :: Full_Note -> Maybe Accidental -> MelodicClass
mk_Pitch :: Step -> PitchClass
mk_RhythmNode :: Duration -> Maybe Type -> [Dot] -> RhythmAbsolute
-- | This module implements functions on MusicXML format
module Music.Analysis.MusicXML.Functions
isNote :: Music_Data_ -> Bool
isGraceNote :: Note -> Bool
isCueNote :: Note -> Bool
isNormalNote :: Note -> Bool
filterNote :: Music_Data -> Music_Data
filterNotNote :: Music_Data -> Music_Data
filterGraceNote :: Music_Data -> Music_Data
filterNotGraceNote :: Music_Data -> Music_Data
filterCueNote :: Music_Data -> Music_Data
filterNotCueNote :: Music_Data -> Music_Data
filterNormalNote :: Music_Data -> Music_Data
filterNotNormalNote :: Music_Data -> Music_Data
filterNote' :: (Note -> Bool) -> Music_Data -> Music_Data
count_part :: MusicXMLDoc -> Int
count_measure :: MusicXMLDoc -> Int
count_music_data :: MusicXMLDoc -> Int
count_note :: MusicXMLDoc -> Int
count_note_grace :: MusicXMLDoc -> Int
count_note_cue :: MusicXMLDoc -> Int
count_note_normal :: MusicXMLDoc -> Int
mapMusicXML :: (Music_Data -> Music_Data) -> MusicXMLDoc -> MusicXMLDoc
module Music.Analysis.MusicXML.Level2Num
type Score_Partwise = [Measure]
type Measure = [Music_Data]
data Music_Data
Music_Data_1 :: Note -> Music_Data
Music_Data_5 :: Attributes -> Music_Data
type Note = (Note_, Maybe Type, [Dot], Maybe Accidental)
data Note_
Note_3 :: (Full_Note, Duration) -> Note_
type Full_Note = Full_Note_
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Pitch = Pitch
type Duration = IntegerNumber
type Type = Type_
type Dot = ()
type Accidental = Accidental_
type Attributes = (Maybe Divisions, [Key], [Time], [Clef])
type Divisions = IntegerNumber
type Key = (Key_, [IntegerNumber])
data Key_
Key_1 :: (Fifths, Maybe Mode) -> Key_
Key_2 :: [(IntegerNumber, Number)] -> Key_
type Fifths = IntegerNumber
data Mode
Major :: Mode
Minor :: Mode
Dorian :: Mode
Phrygian :: Mode
Lydian :: Mode
Mixolydian :: Mode
Aeolian :: Mode
Ionian :: Mode
Locrian :: Mode
type Time = Time_B
data Time_B
Time_5 :: [(Beats, Beat_Type)] -> Time_B
-- | MusicXML Schema specify xs:string
type Beats = (IntegerNumber, Maybe IntegerNumber)
-- | MusicXML Schema specify xs:string
type Beat_Type = IntegerNumber
type Clef = (Sign, Maybe Line, Maybe Clef_Octave_Change)
type Sign = IntegerNumber
type Line = IntegerNumber
type Clef_Octave_Change = IntegerNumber
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Music_Data :: Music_Data -> Maybe Music_Data
abst_Note :: Note -> Note
abst_Note_ :: Note_ -> Note_
abst_Full_Note :: Full_Note -> Full_Note
abst_Full_Note_ :: Full_Note_ -> Full_Note_
abst_Pitch :: Pitch -> Pitch
abst_Type :: Type -> Type
abst_Dot :: Dot -> Dot
abst_Accidental :: Accidental -> Accidental
split_Measure :: Measure -> ((), [Maybe Music_Data])
split_Music_Data :: Music_Data -> (Music_Data, Maybe Music_Data)
split_Note :: Note -> (Note, Note)
split_Note_ :: Note_ -> (Duration, Full_Note_)
split_Full_Note :: Full_Note -> (Full_Note, Full_Note)
split_Full_Note_ :: Full_Note_ -> (Full_Note_, Full_Note_)
split_Pitch :: Pitch -> (Pitch, Pitch)
split_Type :: Type -> (Type, Type)
split_Dot :: Dot -> (Dot, Dot)
split_Accidental :: Accidental -> (Accidental, Accidental)
instance Eq Time_B
instance Show Time_B
instance Eq Mode
instance Show Mode
instance Eq Key_
instance Show Key_
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
module Music.Analysis.MusicXML.Level3Num
type Score_Partwise = (Document_Attributes, (Score_Header, [Part]))
type Part = [Measure]
type Measure = [Music_Data]
data Music_Data
Music_Data_1 :: Note -> Music_Data
Music_Data_2 :: Backup -> Music_Data
Music_Data_3 :: Forward -> Music_Data
Music_Data_5 :: Attributes -> Music_Data
Music_Data_10 :: Barline -> Music_Data
type Barline = Barline
type Note = (Note_, Maybe Instrument, Editorial_Voice, Maybe Type, [Dot], Maybe Accidental, Maybe Staff)
data Note_
Note_3 :: (Full_Note, Duration) -> Note_
type Full_Note = (Maybe Chord, Full_Note_)
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Rest = ()
type Duration = IntegerNumber
type Editorial_Voice = Editorial_Voice
type Instrument = Instrument
type Type = Type_
type Dot = Dot
type Accidental = Accidental_
-- | positive number
type Staff = IntegerNumber
type Attributes = (Maybe Divisions, [Key], [Time], Maybe Staves, Maybe Instruments, [Clef], Maybe Transpose)
type Editorial = Editorial
type Divisions = IntegerNumber
type Key = (Key_, [IntegerNumber])
data Key_
Key_1 :: (Maybe Cancel, Fifths, Maybe Mode) -> Key_
Key_2 :: [(IntegerNumber, Number)] -> Key_
type Time = Time_B
data Time_B
Time_5 :: [(Beats, Beat_Type)] -> Time_B
Time_6 :: Senza_Misura -> Time_B
-- | MusicXML Schema specify xs:string
type Beats = (IntegerNumber, Maybe IntegerNumber)
-- | MusicXML Schema specify xs:string
type Beat_Type = IntegerNumber
type Staves = Staves
type Part_Symbol = Part_Symbol
type Instruments = Instruments
type Clef = Clef
type Staff_Details = Staff_Details
type Transpose = Transpose
type Directive = Directive
type Measure_Style = Measure_Style
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Measure :: Measure -> Measure
abst_Music_Data :: Music_Data -> Maybe Music_Data
abst_Note :: Note -> Note
abst_Note_ :: Note_ -> Note_
abst_Full_Note :: Full_Note -> Full_Note
abst_Full_Note_ :: Full_Note_ -> Full_Note_
abst_Duration :: Duration -> Duration
abst_Type :: Type -> Type
abst_Dot :: Dot -> Dot
abst_Accidental :: Accidental -> Accidental
abst_Divisions :: Divisions -> Divisions
abst_Attributes :: Attributes -> Attributes
abst_Key :: Key -> Key
abst_Key_ :: Key_ -> Key_
abst_Time :: Time -> Time
abst_Clef :: Clef -> Clef
map_Score_Partwise :: (Music_Data -> Music_Data) -> Score_Partwise -> Score_Partwise
map_Part :: (Music_Data -> Music_Data) -> Part -> Part
map_Measure :: (Music_Data -> Music_Data) -> Measure -> Measure
map_Music_Data :: (Music_Data -> Music_Data) -> Music_Data -> Music_Data
instance Eq Time_B
instance Show Time_B
instance Eq Key_
instance Show Key_
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
module Music.Analysis.MusicXML.Level3
type Score_Partwise = (Document_Attributes, (Score_Header, [Part]))
type Part = [Measure]
type Measure = [Music_Data]
data Music_Data
Music_Data_1 :: Note -> Music_Data
Music_Data_2 :: Backup -> Music_Data
Music_Data_3 :: Forward -> Music_Data
Music_Data_5 :: Attributes -> Music_Data
Music_Data_10 :: Barline -> Music_Data
type Barline = Barline
type Note = (Note_, Maybe Instrument, Editorial_Voice, Maybe Type, [Dot], Maybe Accidental, Maybe Staff)
data Note_
Note_3 :: (Full_Note, Duration) -> Note_
type Full_Note = (Maybe Chord, Full_Note_)
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Rest = ()
type Duration = IntegerNumber
type Editorial_Voice = Editorial_Voice
type Instrument = Instrument
type Type = Type_
type Dot = Dot
type Accidental = Accidental_
-- | positive number
type Staff = IntegerNumber
type Attributes = (Maybe Divisions, [Key], [Time], Maybe Staves, Maybe Instruments, [Clef], Maybe Transpose)
type Editorial = Editorial
type Divisions = IntegerNumber
type Key = (Key_, [Key_Octave])
data Key_
Key_1 :: (Maybe Cancel, Fifths, Maybe Mode) -> Key_
Key_2 :: [(Key_Step, Key_Alter)] -> Key_
type Time = Time_B
data Time_B
Time_5 :: [(Beats, Beat_Type)] -> Time_B
Time_6 :: Senza_Misura -> Time_B
-- | MusicXML Schema specify xs:string
type Beats = (IntegerNumber, Maybe IntegerNumber)
-- | MusicXML Schema specify xs:string
type Beat_Type = IntegerNumber
type Staves = Staves
type Part_Symbol = Part_Symbol
type Instruments = Instruments
type Clef = Clef
type Staff_Details = Staff_Details
type Transpose = Transpose
type Directive = Directive
type Measure_Style = Measure_Style
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Measure :: Measure -> Measure
abst_Music_Data :: Music_Data -> Maybe Music_Data
abst_Note :: Note -> Note
abst_Note_ :: Note_ -> Note_
abst_Full_Note :: Full_Note -> Full_Note
abst_Full_Note_ :: Full_Note_ -> Full_Note_
abst_Duration :: Duration -> Duration
abst_Type :: Type -> Type
abst_Dot :: Dot -> Dot
abst_Accidental :: Accidental -> Accidental
abst_Divisions :: Divisions -> Divisions
abst_Attributes :: Attributes -> Attributes
abst_Key :: Key -> Key
abst_Key_ :: Key_ -> Key_
abst_Time :: Time -> Time
abst_Clef :: Clef -> Clef
map_Score_Partwise :: (Music_Data -> b) -> Score_Partwise -> (Document_Attributes, (Score_Header, [[[b]]]))
map_Part :: (Music_Data -> b) -> Part -> [[b]]
map_Measure :: (Music_Data -> b) -> Measure -> [b]
map_Music_Data :: (Music_Data -> b) -> Music_Data -> b
toNum_Music_Data :: Music_Data -> Music_Data
toNum_Note :: Note -> Note
toNum_Full_Note :: Full_Note -> Full_Note
toNum_Attributes :: Attributes -> Attributes
toNum_Key :: Key -> Key
toNum_Mode :: Mode -> Mode
toNum_Time :: Time -> Time
toNum_Clef :: Clef -> Clef
instance Eq Time_B
instance Show Time_B
instance Eq Key_
instance Show Key_
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
module Music.Analysis.MusicXML.Level4
type Score_Partwise = (Document_Attributes, (Score_Header, [Part]))
type Part = [Measure]
type Measure = [Music_Data]
data Music_Data
Music_Data_1 :: Note -> Music_Data
Music_Data_2 :: Backup -> Music_Data
Music_Data_3 :: Forward -> Music_Data
Music_Data_4 :: Direction -> Music_Data
Music_Data_5 :: Attributes -> Music_Data
Music_Data_6 :: Harmony -> Music_Data
Music_Data_7 :: Figured_Bass -> Music_Data
Music_Data_8 :: Print -> Music_Data
Music_Data_9 :: Sound -> Music_Data
Music_Data_10 :: Barline -> Music_Data
Music_Data_11 :: Grouping -> Music_Data
Music_Data_12 :: Link -> Music_Data
Music_Data_13 :: Bookmark -> Music_Data
type Note = (Note_, Maybe Instrument, Editorial_Voice, Maybe Type, [Dot], Maybe Accidental, Maybe Time_Modification, Maybe Stem, Maybe Notehead, Maybe Staff, [Beam], [Notations], [Lyric])
data Note_
Note_1 :: (Grace, Full_Note, Maybe (Tie, Maybe Tie)) -> Note_
Note_2 :: (Cue, Full_Note, Duration) -> Note_
Note_3 :: (Full_Note, Duration, Maybe (Tie, Maybe Tie)) -> Note_
type Grace = Grace
type Cue = Cue
type Tie = Tie
type Full_Note = (Maybe Chord, Full_Note_)
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_2 :: Unpitched -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Unpitched = Unpitched
type Rest = Rest
type Duration = IntegerNumber
type Editorial_Voice = Editorial_Voice
type Instrument = Instrument
type Type = Type_
type Dot = Dot
type Accidental = Accidental_
type Time_Modification = Time_Modification
type Stem = Stem
type Notehead = Notehead
type Beam = Beam
-- | positive number
type Staff = IntegerNumber
type Lyric = Lyric
type Notations = Notations
type Attributes = (Editorial, Maybe Divisions, [Key], [Time], Maybe Staves, Maybe Part_Symbol, Maybe Instruments, [Clef], [Staff_Details], Maybe Transpose, [Directive], [Measure_Style])
type Editorial = Editorial
type Divisions = IntegerNumber
type Key = (Key_, [Key_Octave])
data Key_
Key_1 :: (Maybe Cancel, Fifths, Maybe Mode) -> Key_
Key_2 :: [(Key_Step, Key_Alter)] -> Key_
type Time = Time_B
type Staves = Staves
type Part_Symbol = Part_Symbol
type Instruments = Instruments
type Clef = (Sign, Maybe Line, Maybe Clef_Octave_Change)
type Staff_Details = Staff_Details
type Transpose = Transpose
type Directive = Directive
type Measure_Style = Measure_Style
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Part :: Part -> Part
abst_Measure :: Measure -> Measure
abst_Music_Data :: Music_Data -> Maybe Music_Data
abst_Note :: Note -> Maybe Note
abst_Note_ :: Note_ -> Maybe Note_
abst_Full_Note :: Full_Note -> Maybe Full_Note
abst_Full_Note_ :: Full_Note_ -> Maybe Full_Note_
abst_Duration :: Duration -> Duration
abst_Editorial_Voice :: Editorial_Voice -> Editorial_Voice
abst_Instrument :: Instrument -> Instrument
abst_Type :: Type -> Type
abst_Dot :: Dot -> Dot
abst_Accidental :: Accidental -> Accidental
abst_Staff :: Staff -> Staff
abst_Editorial :: Editorial -> Editorial
abst_Divisions :: Divisions -> Divisions
abst_Staves :: Staves -> Staves
abst_Attributes :: Attributes -> Attributes
abst_Key :: Key -> Key
abst_Key_ :: Key_ -> Key_
abst_Time :: Time -> Time
abst_Part_Symbol :: Part_Symbol -> Part_Symbol
abst_Instruments :: Instruments -> Instruments
abst_Clef :: Clef -> Clef
abst_Staff_Details :: Staff_Details -> Staff_Details
abst_Transpose :: Transpose -> Transpose
abst_Directive :: Directive -> Directive
abst_Measure_Style :: Measure_Style -> Measure_Style
rep_Score_Partwise :: Score_Partwise -> Score_Partwise
rep_Part :: Part -> Part
rep_Measure :: Measure -> Measure
rep_Music_Data :: Music_Data -> Music_Data
rep_Note :: Note -> Note
rep_Note_ :: Note_ -> Note_
rep_Full_Note :: Full_Note -> Full_Note
rep_Full_Note_ :: Full_Note_ -> Full_Note_
rep_Duration :: Duration -> Duration
rep_Editorial_Voice :: Editorial_Voice -> Editorial_Voice
rep_Instrument :: Instrument -> Instrument
rep_Type :: Type -> Type
rep_Dot :: Dot -> Dot
rep_Accidental :: Accidental -> Accidental
rep_Staff :: Staff -> Staff
rep_Editorial :: Editorial -> Editorial
rep_Divisions :: Divisions -> Divisions
rep_Staves :: Staves -> Staves
rep_Attributes :: Attributes -> Attributes
rep_Key :: Key -> Key
rep_Key_ :: Key_ -> Key_
rep_Time :: Time -> Time
rep_Part_Symbol :: Part_Symbol -> Part_Symbol
rep_Instruments :: Instruments -> Instruments
rep_Clef :: Clef -> Clef
rep_Staff_Details :: Staff_Details -> Staff_Details
rep_Transpose :: Transpose -> Transpose
rep_Directive :: Directive -> Directive
rep_Measure_Style :: Measure_Style -> Measure_Style
map_Score_Partwise :: (Music_Data -> Music_Data) -> Score_Partwise -> Score_Partwise
map_Part :: (Music_Data -> Music_Data) -> Part -> Part
map_Measure :: (Music_Data -> Music_Data) -> Measure -> Measure
map_Music_Data :: (Music_Data -> Music_Data) -> Music_Data -> Music_Data
instance Eq Key_
instance Show Key_
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
module Music.Analysis.MusicXML.Level5
type Score_Partwise = (Document_Attributes, (Score_Header, [Part]))
type Part = (ID, [Measure])
type Measure = ((CDATA, Maybe Yes_No, Maybe Yes_No, Maybe Tenths), [Music_Data])
data Music_Data
Music_Data_1 :: Note -> Music_Data
Music_Data_2 :: Backup -> Music_Data
Music_Data_3 :: Forward -> Music_Data
Music_Data_4 :: Direction -> Music_Data
Music_Data_5 :: Attributes -> Music_Data
Music_Data_6 :: Harmony -> Music_Data
Music_Data_7 :: Figured_Bass -> Music_Data
Music_Data_8 :: Print -> Music_Data
Music_Data_9 :: Sound -> Music_Data
Music_Data_10 :: Barline -> Music_Data
Music_Data_11 :: Grouping -> Music_Data
Music_Data_12 :: Link -> Music_Data
Music_Data_13 :: Bookmark -> Music_Data
type Note = ((Print_Style, Printout, Maybe CDATA, Maybe CDATA, Maybe CDATA, Maybe CDATA, Maybe CDATA, Maybe Yes_No), (Note_, Maybe Instrument, Editorial_Voice, Maybe Type, [Dot], Maybe Accidental, Maybe Time_Modification, Maybe Stem, Maybe Notehead, Maybe Staff, [Beam], [Notations], [Lyric]))
data Note_
Note_1 :: (Grace, Full_Note, Maybe (Tie, Maybe Tie)) -> Note_
Note_2 :: (Cue, Full_Note, Duration) -> Note_
Note_3 :: (Full_Note, Duration, Maybe (Tie, Maybe Tie)) -> Note_
type Grace = Grace
type Cue = Cue
type Tie = Tie
type Full_Note = (Maybe Chord, Full_Note_)
data Full_Note_
Full_Note_1 :: Pitch -> Full_Note_
Full_Note_2 :: Unpitched -> Full_Note_
Full_Note_3 :: Rest -> Full_Note_
type Duration = IntegerNumber
type Editorial_Voice = Editorial_Voice
type Instrument = Instrument
type Type = (Maybe Symbol_Size, Type_)
type Dot = Dot
type Accidental = ((Maybe Yes_No, Maybe Yes_No, Level_Display, Print_Style), Accidental_)
type Time_Modification = Time_Modification
type Stem = Stem
type Notehead = Notehead
type Beam = Beam
-- | positive number
type Staff = IntegerNumber
type Lyric = Lyric
type Notations = Notations
type Attributes = (Editorial, Maybe Divisions, [Key], [Time], Maybe Staves, Maybe Part_Symbol, Maybe Instruments, [Clef], [Staff_Details], Maybe Transpose, [Directive], [Measure_Style])
type Editorial = Editorial
type Divisions = IntegerNumber
type Key = ((Maybe CDATA, Print_Style, Print_Object), (Key_, [Key_Octave]))
data Key_
Key_1 :: (Maybe Cancel, Fifths, Maybe Mode) -> Key_
Key_2 :: [(Key_Step, Key_Alter)] -> Key_
type Key_Octave = ((CDATA, Maybe Yes_No), Octave)
type Time = ((Maybe CDATA, Maybe Time_A, Print_Style, Print_Object), Time_B)
type Staves = Staves
type Part_Symbol = Part_Symbol
type Instruments = Instruments
type Clef = ((Maybe CDATA, Maybe Yes_No, Maybe Symbol_Size, Print_Style, Print_Object), (Sign, Maybe Line, Maybe Clef_Octave_Change))
type Staff_Details = Staff_Details
type Transpose = Transpose
type Directive = Directive
type Measure_Style = Measure_Style
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Part :: Part -> Part
abst_Measure :: Measure -> Measure
abst_Music_Data :: Music_Data -> Music_Data
abst_Note :: Note -> Note
abst_Note_ :: Note_ -> Note_
abst_Grace :: Grace -> Grace
abst_Cue :: Cue -> Cue
abst_Tie :: Tie -> Tie
abst_Full_Note :: Full_Note -> Full_Note
abst_Full_Note_ :: Full_Note_ -> Full_Note_
abst_Duration :: Duration -> Duration
abst_Editorial_Voice :: Editorial_Voice -> Editorial_Voice
abst_Instrument :: Instrument -> Instrument
abst_Type :: Type -> Type
abst_Dot :: Dot -> Dot
abst_Accidental :: Accidental -> Accidental
abst_Time_Modification :: Time_Modification -> Time_Modification
abst_Stem :: Stem -> Stem
abst_Notehead :: Notehead -> Notehead
abst_Beam :: Beam -> Beam
abst_Staff :: Staff -> Staff
abst_Notations :: Notations -> Notations
abst_Editorial :: Editorial -> Editorial
abst_Divisions :: Divisions -> Divisions
abst_Key_Octave :: Key_Octave -> Key_Octave
abst_Staves :: Staves -> Staves
abst_Attributes :: Attributes -> Attributes
abst_Lyric :: Lyric -> Lyric
abst_Key :: Key -> Key
abst_Key_ :: Key_ -> Key_
abst_Time :: Time -> Time
abst_Part_Symbol :: Part_Symbol -> Part_Symbol
abst_Instruments :: Instruments -> Instruments
abst_Clef :: Clef -> Clef
abst_Staff_Details :: Staff_Details -> Staff_Details
abst_Transpose :: Transpose -> Transpose
abst_Directive :: Directive -> Directive
abst_Measure_Style :: Measure_Style -> Measure_Style
empty_Print_Style :: Print_Style
empty_Printout :: Printout
empty_Level_Display :: Level_Display
rep_Score_Partwise :: Score_Partwise -> Score_Partwise
rep_Part :: Part -> Part
rep_Measure :: Measure -> Measure
rep_Music_Data :: Music_Data -> Music_Data
rep_Note :: Note -> Note
rep_Note_ :: Note_ -> Note_
rep_Grace :: Grace -> Grace
rep_Cue :: Cue -> Cue
rep_Tie :: Tie -> Tie
rep_Full_Note :: Full_Note -> Full_Note
rep_Full_Note_ :: Full_Note_ -> Full_Note_
rep_Duration :: Duration -> Duration
rep_Editorial_Voice :: Editorial_Voice -> Editorial_Voice
rep_Instrument :: Instrument -> Instrument
rep_Type :: Type -> Type
rep_Dot :: Dot -> Dot
rep_Accidental :: Accidental -> Accidental
rep_Time_Modification :: Time_Modification -> Time_Modification
rep_Stem :: Stem -> Stem
rep_Notehead :: Notehead -> Notehead
rep_Beam :: Beam -> Beam
rep_Staff :: Staff -> Staff
rep_Notations :: Notations -> Notations
rep_Editorial :: Editorial -> Editorial
rep_Divisions :: Divisions -> Divisions
rep_Key_Octave :: Key_Octave -> Key_Octave
rep_Staves :: Staves -> Staves
rep_Attributes :: Attributes -> Attributes
rep_Lyric :: Lyric -> Lyric
rep_Key :: Key -> Key
rep_Key_ :: Key_ -> Key_
rep_Time :: Time -> Time
rep_Part_Symbol :: Part_Symbol -> Part_Symbol
rep_Instruments :: Instruments -> Instruments
rep_Clef :: Clef -> Clef
rep_Staff_Details :: Staff_Details -> Staff_Details
rep_Transpose :: Transpose -> Transpose
rep_Directive :: Directive -> Directive
rep_Measure_Style :: Measure_Style -> Measure_Style
map_Score_Partwise :: (Music_Data -> Music_Data) -> Score_Partwise -> Score_Partwise
map_Part :: (Music_Data -> Music_Data) -> Part -> Part
map_Measure :: (Music_Data -> Music_Data) -> Measure -> Measure
map_Music_Data :: (Music_Data -> Music_Data) -> Music_Data -> Music_Data
instance Eq Key_
instance Show Key_
instance Eq Full_Note_
instance Show Full_Note_
instance Eq Note_
instance Show Note_
instance Eq Music_Data
instance Show Music_Data
module Music.Analysis.MusicXML.Level6
type Score_Partwise = (Document_Attributes, (Score_Header, [Part]))
type Part = (ID, [Measure])
type Measure = ((CDATA, Maybe Yes_No, Maybe Yes_No, Maybe Tenths), [Music_Data])
data Music_Data
Music_Data_1 :: Note -> Music_Data
Music_Data_2 :: Backup -> Music_Data
Music_Data_3 :: Forward -> Music_Data
Music_Data_4 :: Direction -> Music_Data
Music_Data_5 :: Attributes -> Music_Data
Music_Data_6 :: Harmony -> Music_Data
Music_Data_7 :: Figured_Bass -> Music_Data
Music_Data_8 :: Print -> Music_Data
Music_Data_9 :: Sound -> Music_Data
Music_Data_10 :: Barline -> Music_Data
Music_Data_11 :: Grouping -> Music_Data
Music_Data_12 :: Link -> Music_Data
Music_Data_13 :: Bookmark -> Music_Data
Music_Data_14 :: Annotation -> Music_Data
type Annotation = (Maybe Start_Stop, PCDATA)
type Note = Note
type Attributes = Attributes
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Part :: Part -> Part
abst_Measure :: Measure -> Measure
abst_Music_Data :: Music_Data -> Maybe Music_Data
abst_Note :: Note -> Note
abst_Attributes :: Attributes -> Attributes
abst_Annotation :: Annotation -> Grouping
abst_SSS :: Maybe Start_Stop -> Start_Stop_Single
rep_Score_Partwise :: Score_Partwise -> Score_Partwise
rep_Part :: Part -> Part
rep_Measure :: Measure -> Measure
rep_Music_Data :: Music_Data -> Music_Data
rep_Note :: Note -> Note
rep_Attributes :: Attributes -> Attributes
rep_Annotation :: Grouping -> Either Annotation Grouping
rep_SSS :: Start_Stop_Single -> Maybe Start_Stop
map_Score_Partwise :: (Music_Data -> Music_Data) -> Score_Partwise -> Score_Partwise
map_Part :: (Music_Data -> Music_Data) -> Part -> Part
map_Measure :: (Music_Data -> Music_Data) -> Measure -> Measure
map_Music_Data :: (Music_Data -> Music_Data) -> Music_Data -> Music_Data
instance Eq Music_Data
instance Show Music_Data
-- | This module make interface with MusicXML using HaXML library.
module Music.Analysis.MusicXML
toTimewise :: Score_Partwise -> Score_Timewise
toPartwise :: Score_Timewise -> Score_Partwise
transpose :: [(a, [(b, c)])] -> [(b, [(a, c)])]
abst_Score_Partwise :: Score_Partwise -> Score_Partwise
abst_Part :: Part -> Part
abst_Measure :: Measure -> Measure
abst_Music_Data :: Music_Data_ -> Music_Data
abst_Note :: Note -> Note
abst_Note_ :: Note_ -> Note_
abst_Grace :: Grace -> Grace
abst_Cue :: Cue -> Cue
abst_Instrument :: Instrument -> Instrument
abst_Duration :: Duration -> Duration
abst_Full_Note :: Full_Note -> Full_Note
abst_Full_Note_ :: Full_Note_ -> Full_Note_
abst_Pitch :: Pitch -> Pitch
abst_Step :: Step -> Maybe Step
abst_Alter :: Alter -> Maybe Alter
abst_Octave :: Octave -> Octave
abst_Unpitched :: Unpitched -> Unpitched
abst_Rest :: Rest -> Rest
abst_Tie :: Tie -> Tie
abst_Editorial_Voice :: Editorial_Voice -> Editorial_Voice
abst_Type :: Type -> Maybe Type
abst_Type_ :: PCDATA -> Maybe Type_
abst_Dot :: Dot -> Dot
abst_Accidental :: Accidental -> Maybe Accidental
abst_Accidental_ :: PCDATA -> Maybe Accidental_
abst_Time_Modification :: Time_Modification -> Time_Modification
abst_Stem :: Stem -> Stem
abst_Notehead :: Notehead -> Notehead
abst_Staff :: Staff -> Staff
abst_Beam :: Beam -> Beam
abst_Notations :: Notations -> Notations
abst_Lyric :: Lyric -> Lyric
abst_Attributes :: Attributes -> Attributes
abst_Editorial :: Editorial -> Editorial
abst_Divisions :: Divisions -> Divisions
abst_Key :: Key -> Key
abst_Key_ :: Key_ -> Key_
abst_Fifths :: Fifths -> Fifths
abst_Mode :: Mode -> Maybe Mode
abst_Key_Step :: Key_Step -> Key_Step
abst_Key_Alter :: Key_Alter -> Key_Alter
abst_Key_Octave :: Key_Octave -> Key_Octave
abst_Time :: Time -> Time
abst_Time_B :: Time_B -> Time_B
abst_Beats :: Beats -> Beats
abst_Beat_Type :: Beat_Type -> Beat_Type
abst_Staves :: Staves -> Staves
abst_Part_Symbol :: Part_Symbol -> Part_Symbol
abst_Instruments :: Instruments -> Instruments
abst_Clef :: Clef -> Clef
abst_Sign :: Sign -> Maybe Sign
abst_Line :: Line -> Line
abst_Clef_Octave_Change :: Clef_Octave_Change -> Clef_Octave_Change
abst_Staff_Details :: Staff_Details -> Staff_Details
abst_Transpose :: Transpose -> Transpose
abst_Directive :: Directive -> Directive
abst_Measure_Style :: Measure_Style -> Measure_Style
rep_Score_Partwise :: Score_Partwise -> Score_Partwise
rep_Part :: Part -> Part
rep_Measure :: Measure -> Measure
rep_Music_Data :: Music_Data -> Music_Data_
rep_Note :: Note -> Note
rep_Note_ :: Note_ -> Note_
rep_Grace :: Grace -> Grace
rep_Cue :: Cue -> Cue
rep_Instrument :: Instrument -> Instrument
rep_Duration :: Duration -> Duration
rep_Full_Note :: Full_Note -> Full_Note
rep_Full_Note_ :: Full_Note_ -> Full_Note_
rep_Pitch :: Pitch -> Pitch
rep_Step :: Step -> Step
rep_Alter :: Alter -> Alter
rep_Octave :: Octave -> Octave
rep_Unpitched :: Unpitched -> Unpitched
rep_Rest :: Rest -> Rest
rep_Tie :: Tie -> Tie
rep_Editorial_Voice :: Editorial_Voice -> Editorial_Voice
rep_Type :: Type -> Type
rep_Type_ :: Type_ -> PCDATA
rep_Dot :: Dot -> Dot
rep_Accidental :: Accidental -> Accidental
rep_Accidental_ :: Accidental_ -> PCDATA
rep_Time_Modification :: Time_Modification -> Time_Modification
rep_Stem :: Stem -> Stem
rep_Notehead :: Notehead -> Notehead
rep_Staff :: Staff -> Staff
rep_Beam :: Beam -> Beam
rep_Notations :: Notations -> Notations
rep_Lyric :: Lyric -> Lyric
rep_Attributes :: Attributes -> Attributes
rep_Editorial :: Editorial -> Editorial
rep_Divisions :: Divisions -> Divisions
rep_Key :: Key -> Key
rep_Key_ :: Key_ -> Key_
rep_Fifths :: Fifths -> Fifths
rep_Mode :: Mode -> Mode
rep_Key_Step :: Key_Step -> Key_Step
rep_Key_Alter :: Key_Alter -> Key_Alter
rep_Key_Octave :: Key_Octave -> Key_Octave
rep_Time :: Time -> Time
rep_Time_B :: Time_B -> Time_B
rep_Beats :: Beats -> Beats
rep_Beat_Type :: Beat_Type -> Beat_Type
rep_Staves :: Staves -> Staves
rep_Part_Symbol :: Part_Symbol -> Part_Symbol
rep_Instruments :: Instruments -> Instruments
rep_Clef :: Clef -> Clef
rep_Sign :: Sign -> Sign
rep_Line :: Line -> Line
rep_Clef_Octave_Change :: Clef_Octave_Change -> Clef_Octave_Change
rep_Staff_Details :: Staff_Details -> Staff_Details
rep_Transpose :: Transpose -> Transpose
rep_Directive :: Directive -> Directive
rep_Measure_Style :: Measure_Style -> Measure_Style
dur_Duration :: String -> IntegerNumber
dur_Backup :: Backup -> IntegerNumber -> IntegerNumber
dur_Forward :: Forward -> IntegerNumber -> IntegerNumber
dur_Note_ :: Note_ -> IntegerNumber -> IntegerNumber
dur_Note :: Note -> IntegerNumber -> IntegerNumber
dur_Attributes :: Attributes -> Maybe Divisions
dur_Divisions :: Maybe a -> Maybe a
dur_Music_Data_ :: Music_Data_ -> (Divisions, IntegerNumber) -> (Divisions, IntegerNumber)
map_Score_Partwise' :: (Music_Data_ -> Music_Data_) -> Score_Partwise -> Score_Partwise
map_Part' :: (Music_Data_ -> Music_Data_) -> Part -> Part
map_Measure' :: (Music_Data_ -> Music_Data_) -> Measure -> Measure
map_Music_Data' :: (Music_Data_ -> Music_Data_) -> Music_Data_ -> Music_Data_
read_Number :: String -> Maybe Number
read_IntegerNumber :: String -> Maybe IntegerNumber
coread_Number :: String -> Either Number String
coread_IntegerNumber :: String -> Either IntegerNumber String
-- | This module implements
module Music.Analysis.Abstract2ABC
mk_Music :: Motive (MelodicClass, RhythmAbsolute) -> ABCMusic
mk_Meta :: Motive (MelodicClass, RhythmAbsolute) -> ABCMetaData
mk_Notes :: Motive (MelodicClass, RhythmAbsolute) -> [ABCMusicData]
mk_Note :: (MelodicClass, RhythmAbsolute) -> ABCNote
mk_Duration :: RhythmAbsolute -> (Duration, Dotted)
mk_Note' :: MelodicClass -> Maybe (Pitch, Accident)
mk_Pitch :: PitchClass -> Pitch
mk_Accident :: Accident -> Accident
-- | This module implements
module Music.Analysis.MusicXML2ABC
mk_Music :: Score_Partwise -> ABCMusic
-- | Implements interface to Lilypond
module Music.Analysis.Abstract2Lilypond
output :: VoiceZipNode -> String
outputDots :: IntegerNumber -> String
outputAccidents :: Accident -> String
-- | This module implements lite interface to Haskore
--
-- Bugs: - Chords - more than one Divisions(changes duration)
module Music.Analysis.MusicXML2Haskore
from_Score_Partwise :: Score_Partwise -> Score_Partwise
from_Part :: Part -> Part
from_Measure :: Measure -> Measure
from_Music_Data :: Music_Data_ -> Music_Data_
from_Note :: Note -> Note
group_Part :: Part -> [[[[Note]]]]
group_Measure :: Measure -> [[[[Note]]]]
toNote :: [Music_Data_] -> [Note]
group_Music_Data_ :: (Note -> Note -> Bool) -> Music_Data_ -> Music_Data_ -> Bool
group_Instrument :: Note -> Note -> Bool
group_Voice :: Note -> Note -> Bool
group_Staff :: Note -> Note -> Bool
cmp_Instrument :: Note -> Note -> Ordering
cmp_Voice :: Note -> Note -> Ordering
cmp_Staff :: Note -> Note -> Ordering
get_Instrument :: Note -> Maybe Instrument
get_Voice :: Note -> Maybe Voice
get_Staff :: Note -> Maybe Staff
group_Measure' :: Measure -> [(Maybe Instrument, [(Maybe Staff, [(Maybe Voice, [Note])])])]
headM :: (Monad m) => [m a] -> m a
toMedium_ :: [[[[T control a]]]] -> T control a
toMedium :: [[[[a]]]] -> T control a
toMedium' :: [(Maybe Instrument, [(Maybe Staff, [(Maybe Voice, [Note])])])] -> T ControlID Note
data ControlID
Control_Instrument :: (Maybe Instrument) -> ControlID
Control_Staff :: (Maybe Staff) -> ControlID
Control_Voice :: (Maybe Voice) -> ControlID
abst_Step :: Step -> Maybe Step
abst_Octave :: Octave -> Octave
abst_Alter :: Alter -> Maybe Alter
toClass :: Step -> Maybe Alter -> Class
abst_Pitch :: Pitch -> (Octave, Class)
abst_Full_Note_ :: Full_Note_ -> Maybe T
abst_Full_Note :: Full_Note -> Maybe T
abst_Note_ :: Note_ -> (Maybe T, Maybe Duration)
abst_Duration :: Duration -> Duration
toDur :: Duration -> Dur
abst_Note :: Note -> T T
abst_Note' :: Note -> T Note
measure2haskore :: Measure -> T Note
part2haskore :: Part -> T Note
partwise2haskore :: Score_Partwise -> T Note
toMidi :: MusicXMLDoc -> T
saveMidi :: FilePath -> T -> IO ()
playMidi :: FilePath -> T -> IO ExitCode
playGeneric :: FilePath -> IO ExitCode
instance Eq ControlID
instance Show ControlID
module Music.Analysis.Script
procFilter :: Filter -> MusicXMLDoc -> MusicXMLDoc
onlyPartwise :: (Score_Partwise -> Score_Partwise) -> MusicXMLDoc -> MusicXMLDoc
procReification :: Reification -> Score_Partwise -> Score_Partwise
procCount :: Count -> MusicXMLDoc -> (String, Int)
procStat :: Stat -> MusicXMLDoc -> String
procParttime :: a -> MusicXMLDoc -> MusicXMLDoc
procTimepart :: a -> MusicXMLDoc -> MusicXMLDoc
procHaskore :: a -> MusicXMLDoc -> String
procMidi :: Midi -> MusicXMLDoc -> Either T ()
procWarn :: Maybe Action_warnings -> Bool
procOutput :: Maybe FilePath -> Either (Either MusicXMLDoc String) (Either T ()) -> IO ()
fromError :: Result a -> String
procAction_ :: [OneOf7 Filter Reification Stat Parttime Timepart Haskore Midi] -> MusicXMLDoc -> Either (Either MusicXMLDoc String) (Either T ())
procAction :: Action -> IO ()
procScript :: Script -> IO ()
-- | This module implements interface between Haskell representation and
-- file representation
module Music.Analysis.Interface
-- | makes generic interface
class Interface a
input :: (Interface a) => String -> a
output :: (Interface a) => a -> String
-- | destroy measures
catMeasures :: Motive [a] -> Motive a
-- | build measures
uncatMeasures :: (Measure a) => Motive a -> Motive [a]
-- | Measure class.
class Measure a
nodeDuration :: (Measure a) => a -> Number
instance Measure (((a, RhythmNode), b), c)
instance Measure ((a, RhythmNode), b)
instance Measure (a, RhythmNode)
instance Measure RhythmNode
-- | main module
module Music.Analysis