-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell Music Typesetting -- -- A simple music typesetting model in haskell @package hts @version 0.1 module Music.Typesetting.Output.MusicXML.Binding type ELEM = [Attr] -> [Content] -> Content type EMPTY_ELEM = [Attr] -> Content type ATTR = String -> Attr -- | Ordinary character data, subject to escaping. cdata :: String -> Content mk_elem :: String -> ELEM mk_empty_elem :: String -> EMPTY_ELEM mk_empty_elem_no_attr :: String -> Content mk_attr :: String -> ATTR clef :: ELEM id_A :: ATTR number :: ATTR spread :: ATTR implicit :: ATTR slash :: ATTR type_A :: ATTR bracket :: ATTR show_number :: ATTR show_type :: ATTR placement :: ATTR direction_type :: ELEM offset :: ELEM direction :: ELEM wedge :: EMPTY_ELEM sign :: ELEM line :: ELEM clef_octave_change :: ELEM score_partwise :: ELEM work_number :: ELEM work_title :: ELEM work :: ELEM creator :: ELEM rights :: ELEM identification :: ELEM credit_words :: ELEM credit :: ELEM part_group :: ELEM score_part :: ELEM part_list :: ELEM part_abbreviation :: ELEM score_instrument :: ELEM part_name :: ELEM group_abbreviation :: ELEM group_symbol :: ELEM group_barline :: ELEM group_name :: ELEM instrument_name :: ELEM measure :: ELEM attributes :: ELEM divisions :: ELEM part :: ELEM fifths :: ELEM mode :: ELEM key :: ELEM beats :: ELEM beat_type :: ELEM time :: ELEM staves :: ELEM pitch :: ELEM step :: ELEM alter :: ELEM octave :: ELEM rest :: ELEM duration :: ELEM voice :: ELEM type_E :: ELEM stem :: ELEM staff :: ELEM beam :: ELEM accidental :: ELEM note :: ELEM ornaments :: ELEM technical :: ELEM dynamics :: ELEM tremolo :: ELEM notations :: ELEM tie :: EMPTY_ELEM tied :: EMPTY_ELEM slur :: EMPTY_ELEM arpeggiate :: EMPTY_ELEM harmonic :: ELEM natural :: EMPTY_ELEM backup :: ELEM forward :: ELEM cue :: EMPTY_ELEM grace :: EMPTY_ELEM dot :: EMPTY_ELEM chord :: EMPTY_ELEM actual_notes :: ELEM normal_notes :: ELEM normal_type :: ELEM normal_dot :: ELEM time_modification :: ELEM tuplet_actual :: ELEM tuplet_normal :: ELEM tuplet_number :: ELEM tuplet_type :: ELEM tuplet :: ELEM tuplet_dot :: EMPTY_ELEM articulations :: ELEM accent :: EMPTY_ELEM beat_unit :: ELEM per_minute :: ELEM metronome :: ELEM beat_unit_dot :: EMPTY_ELEM musicxml_xml :: String type DocType = String musicxml_partwise :: DocType module Music.Typesetting.Model data Dynamic_Mark_T PPPPP :: Dynamic_Mark_T PPPP :: Dynamic_Mark_T PPP :: Dynamic_Mark_T PP :: Dynamic_Mark_T P :: Dynamic_Mark_T MP :: Dynamic_Mark_T MF :: Dynamic_Mark_T F :: Dynamic_Mark_T FF :: Dynamic_Mark_T FFF :: Dynamic_Mark_T FFFF :: Dynamic_Mark_T FFFFF :: Dynamic_Mark_T FP :: Dynamic_Mark_T SF :: Dynamic_Mark_T SFP :: Dynamic_Mark_T SFPP :: Dynamic_Mark_T SFZ :: Dynamic_Mark_T SFFZ :: Dynamic_Mark_T data Articulation_T Accent :: Articulation_T Staccato :: Articulation_T Tenuto :: Articulation_T data Clef_T Bass :: Clef_T Tenor :: Clef_T Alto :: Clef_T Treble :: Clef_T Percussion :: Clef_T type Time_Signature_T = (Integer, Integer) data Placement_T Above :: Placement_T Below :: Placement_T type Tuplet_T = (Integer, Duration, Integer, Duration) type Tempo_Marking_T = (Duration, Integer) -- | Ordered to meet musicxml requirements. data N_Annotation N_Grace :: N_Annotation N_Chord :: N_Annotation N_Pitch :: Pitch -> N_Annotation N_Unpitched :: N_Annotation N_Rest :: N_Annotation N_Begin_Slur :: N_Annotation N_End_Slur :: N_Annotation N_Begin_Tied :: N_Annotation N_End_Tied :: N_Annotation N_Begin_Tuplet :: (Maybe Tuplet_T) -> N_Annotation N_End_Tuplet :: N_Annotation N_Stem_Tremolo :: Integer -> N_Annotation N_Articulation :: Articulation_T -> N_Annotation N_Dynamic_Mark :: Dynamic_Mark_T -> N_Annotation N_Crescendo :: N_Annotation N_Diminuendo :: N_Annotation N_End_Hairpin :: N_Annotation N_Voice :: Integer -> N_Annotation N_Backup :: [Duration] -> N_Annotation N_Natural_Harmonic :: N_Annotation data Note Note :: Duration -> [N_Annotation] -> Note n_duration :: Note -> Duration n_annotations :: Note -> [N_Annotation] data M_Annotation M_Division :: Integer -> M_Annotation M_Key :: Note_T -> (Maybe Alteration_T) -> Mode_T -> M_Annotation M_Tempo_Marking :: Tempo_Marking_T -> M_Annotation M_Time_Signature :: Time_Signature_T -> M_Annotation M_Clef :: Clef_T -> Integer -> M_Annotation data Measure Measure :: [M_Annotation] -> [Note] -> Measure m_annotations :: Measure -> [M_Annotation] m_notes :: Measure -> [Note] type Name = (String, String) data Group_Symbol_T None :: Group_Symbol_T Brace :: Group_Symbol_T Line :: Group_Symbol_T Bracket :: Group_Symbol_T data P_Annotation P_Name :: Name -> P_Annotation data G_Annotation G_Name :: Name -> G_Annotation G_Symbol :: Group_Symbol_T -> G_Annotation type ID = Integer data Part Part :: (Maybe ID) -> [P_Annotation] -> [Measure] -> Part Group :: (Maybe ID) -> [G_Annotation] -> [Part] -> Part data Score Score :: [Part] -> Score instance Eq Dynamic_Mark_T instance Ord Dynamic_Mark_T instance Bounded Dynamic_Mark_T instance Show Dynamic_Mark_T instance Eq Articulation_T instance Ord Articulation_T instance Show Articulation_T instance Eq Clef_T instance Ord Clef_T instance Show Clef_T instance Eq Placement_T instance Ord Placement_T instance Show Placement_T instance Eq N_Annotation instance Ord N_Annotation instance Show N_Annotation instance Eq Note instance Show Note instance Eq M_Annotation instance Ord M_Annotation instance Show M_Annotation instance Eq Measure instance Show Measure instance Eq Group_Symbol_T instance Show Group_Symbol_T instance Eq P_Annotation instance Show P_Annotation instance Eq G_Annotation instance Show G_Annotation instance Eq Part instance Show Part instance Eq Score instance Show Score module Music.Typesetting.Query n_has_annotation :: N_Annotation -> Note -> Bool n_is_rest :: Note -> Bool n_is_chord_elem :: Note -> Bool n_is_untied :: Note -> Bool n_is_initial_tie :: Note -> Bool n_is_final_tie :: Note -> Bool na_pitch :: N_Annotation -> Maybe Pitch n_pitch :: Note -> Maybe Pitch n_has_pitch :: Note -> Bool na_dynamic :: N_Annotation -> Maybe Dynamic_Mark_T n_dynamic :: Note -> Maybe Dynamic_Mark_T n_has_dynamic :: Note -> Bool n_duration_forward :: Note -> Maybe Duration ma_time_signature_t :: M_Annotation -> Maybe Time_Signature_T m_time_signature :: Measure -> [M_Annotation] m_time_signature' :: Measure -> Maybe M_Annotation m_time_signature_t :: Measure -> [Time_Signature_T] ma_tempo_marking_t :: M_Annotation -> Maybe Tempo_Marking_T m_tempo_marking :: Measure -> [M_Annotation] m_tempo_marking_t :: Measure -> [Tempo_Marking_T] type SI_Map a = [(Integer, a)] type Time_Signature_Map = SI_Map Time_Signature_T type Tempo_Marking_Map = SI_Map Tempo_Marking_T type Temporal_Map = (Integer, Time_Signature_Map, Tempo_Marking_Map) si_map_to_sequence :: Integer -> a -> SI_Map a -> [a] mm_time_signature_map :: [Measure] -> Time_Signature_Map mm_tempo_marking_map :: [Measure] -> Tempo_Marking_Map mm_temporal_map :: [Measure] -> Temporal_Map -- | Duration, in RQ, of a measure of indicated time signature. time_signature_to_rq :: Time_Signature_T -> Rational -- | Duration of a RQ value, in seconds, given indicated tempo. rq_to_seconds :: Tempo_Marking_T -> Rational -> Double -- | The duration, in seconds, of a measure at the indicated time signaure -- and tempo marking. time_signature_to_seconds :: Time_Signature_T -> Tempo_Marking_T -> Double -- | dx -> d integrate :: Num a => [a] -> [a] temporal_map_locate :: Temporal_Map -> [(Double, Double, Tempo_Marking_T)] n_locate :: (Double, Double, Tempo_Marking_T) -> [Note] -> [(Double, Note)] locate_notes :: [[Measure]] -> [(Double, Note)] module Music.Typesetting.Literal n_annotate :: N_Annotation -> Note -> Note (&) :: Note -> N_Annotation -> Note annotate_first :: (a -> x -> x) -> a -> [x] -> [x] annotate_last :: (a -> x -> x) -> a -> [x] -> [x] annotate_bracket :: (a -> x -> x) -> (a, a) -> [x] -> [x] n_annotate_l :: [N_Annotation] -> Note -> Note n_annotate_first :: [N_Annotation] -> [Note] -> [Note] n_annotate_last :: [N_Annotation] -> [Note] -> [Note] n_annotate_bracket :: (N_Annotation, N_Annotation) -> [Note] -> [Note] -- | Apply annotations to the start and end points of each tied note. n_annotate_tie_endpoints :: (N_Annotation, N_Annotation) -> Note -> Note n_edit_duration :: (Duration -> Duration) -> Note -> Note tuplet :: (Integer, Integer) -> [Note] -> [Note] m_annotate :: M_Annotation -> Measure -> Measure (&.) :: Measure -> M_Annotation -> Measure m_annotate_l :: [M_Annotation] -> Measure -> Measure m_annotate_first :: [M_Annotation] -> [Measure] -> [Measure] m_annotate_last :: [M_Annotation] -> [Measure] -> [Measure] m_annotate_bracket :: (M_Annotation, M_Annotation) -> [Measure] -> [Measure] m_duration :: Measure -> [Duration] m_duration_rq :: Measure -> Rational empty_measure :: (Integer, Integer) -> Measure stem_tremolo :: Integer -> Note -> Note ppp :: N_Annotation pp :: N_Annotation p :: N_Annotation mp :: N_Annotation mf :: N_Annotation f :: N_Annotation ff :: N_Annotation fff :: N_Annotation ffff :: N_Annotation fp :: N_Annotation sfz :: N_Annotation pppp :: N_Annotation dim :: N_Annotation cresc :: N_Annotation tenor_clef :: M_Annotation alto_clef :: M_Annotation treble_clef :: M_Annotation percussion_clef :: M_Annotation bass_clef :: M_Annotation treble_8va_clef :: M_Annotation treble_8vb_clef :: M_Annotation treble_15ma_clef :: M_Annotation bass_8vb_clef :: M_Annotation accent :: N_Annotation part :: Name -> [Measure] -> Part group :: Name -> [Part] -> Part voices :: [[Measure]] -> [Measure] from_d_annotation :: D_Annotation -> N_Annotation module Music.Typesetting.Output.MusicXML x_clef_t :: Clef_T -> (String, Integer) x_clef :: (Clef_T, Integer) -> Content key_mode_t :: Mode_T -> String x_key :: (Note_T, Maybe Alteration_T, Mode_T) -> Content x_time :: (Integer, Integer) -> Content x_pitch :: Pitch -> Content x_alteration_t :: Alteration_T -> String x_pitch_accidental :: Pitch -> Content x_multiplier :: Rational -> Content x_divisions :: Integer duration_rq_to_dv :: Rational -> Integer x_duration :: Duration -> (Content, [Content], Maybe Content) x_tuplet_t_elem :: (Integer, Duration) -> [Content] x_tuplet_t :: Maybe Tuplet_T -> [Content] x_ornament :: N_Annotation -> Maybe Content x_ornaments :: [N_Annotation] -> Maybe Content x_technical_el :: N_Annotation -> Maybe Content x_technical :: [N_Annotation] -> Maybe Content x_placement_t :: Placement_T -> Attr x_articulation_t :: Articulation_T -> Content x_articulation :: N_Annotation -> Maybe Content x_articulations :: [N_Annotation] -> Maybe Content x_dynamic_mark_t :: Dynamic_Mark_T -> Content x_dynamic_mark :: N_Annotation -> Maybe Content x_dynamics :: [N_Annotation] -> Maybe Content x_notation :: N_Annotation -> Maybe Content x_notations :: [N_Annotation] -> Maybe Content x_note_elem :: N_Annotation -> Maybe Content x_metronome :: Tempo_Marking_T -> Content x_n_direction :: N_Annotation -> Maybe Content x_m_direction :: M_Annotation -> Maybe Content x_accidental :: [N_Annotation] -> [Content] x_voice :: [N_Annotation] -> [Content] x_note :: Note -> [Content] x_attribute :: M_Annotation -> Maybe Content x_attributes :: [M_Annotation] -> Content x_measure :: (Integer, Measure) -> Content set_divisions :: [Measure] -> [Measure] x_part_name :: Name -> [Content] x_p_annotation :: P_Annotation -> [Content] x_score_part :: Part -> Content x_group_name :: Name -> [Content] x_group_symbol_t :: Group_Symbol_T -> Content x_g_annotation :: G_Annotation -> [Content] x_part_group :: Part -> [Content] x_part_list :: [Part] -> Content x_part :: Part -> Content part_set_id :: (ID, Part) -> (ID, Part) score_set_ids :: Score -> Score x_score :: Score -> [Content] x_header :: (String, String, String, String) -> [Content] score_partwise' :: [Attr] -> [Content] -> Element renderMusicXML :: [Content] -> String module Music.Typesetting.Process prune :: (a -> a -> Bool) -> (b -> Maybe a) -> (a -> b -> b) -> [b] -> [b] m_delete_annotation :: M_Annotation -> Measure -> Measure m_remove_duplicate_ts :: [Measure] -> [Measure]