-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell LilyPond -- -- A very lightweight embedding of the lilypond typesetting model in -- haskell @package hly @version 0.1 module Music.LilyPond.Light.Model data Version Version :: String -> Version data Units MM :: Units CM :: Units data Length Length :: Double -> Units -> Length data Paper Paper :: Length -> Length -> Length -> Length -> Length -> Length -> Length -> Length -> Bool -> Bool -> Length -> Maybe Integer -> Length -> Bool -> Paper binding_offset :: Paper -> Length bottom_margin :: Paper -> Length indent :: Paper -> Length inner_margin :: Paper -> Length left_margin :: Paper -> Length outer_margin :: Paper -> Length paper_width :: Paper -> Length paper_height :: Paper -> Length ragged_last :: Paper -> Bool ragged_last_bottom :: Paper -> Bool right_margin :: Paper -> Length systems_per_page :: Paper -> Maybe Integer top_margin :: Paper -> Length two_sided :: Paper -> Bool data Header Header :: String -> String -> String -> String -> String -> Header dedication :: Header -> String title :: Header -> String subtitle :: Header -> String composer :: Header -> String tagline :: Header -> String data Clef_T Bass :: Clef_T Tenor :: Clef_T Alto :: Clef_T Treble :: Clef_T Percussion :: Clef_T data Articulation_T Accent :: Articulation_T Arpeggio :: Articulation_T ArpeggioDown :: Articulation_T ArpeggioNeutral :: Articulation_T ArpeggioUp :: Articulation_T DownBow :: Articulation_T Fermata :: Articulation_T Flageolet :: Articulation_T Glissando :: Articulation_T Harmonic :: Articulation_T LaissezVibrer :: Articulation_T Marcato :: Articulation_T Open :: Articulation_T Portato :: Articulation_T Staccato :: Articulation_T StemTremolo :: Integer -> Articulation_T Stopped :: Articulation_T Tenuto :: Articulation_T Trill :: Articulation_T UpBow :: Articulation_T data Dynamic_T PPPP :: Dynamic_T PPP :: Dynamic_T Pianissimo :: Dynamic_T Piano :: Dynamic_T MezzoPiano :: Dynamic_T MezzoForte :: Dynamic_T Forte :: Dynamic_T Fortissimo :: Dynamic_T FFF :: Dynamic_T FFFF :: Dynamic_T FP :: Dynamic_T SFZ :: Dynamic_T Espressivo :: Dynamic_T Begin_Crescendo :: Dynamic_T Begin_Decrescendo :: Dynamic_T End_Dynamic :: Dynamic_T data Phrasing_T Begin_Slur :: Phrasing_T End_Slur :: Phrasing_T Begin_PhrasingSlur :: Phrasing_T End_PhrasingSlur :: Phrasing_T Begin_Beam :: Phrasing_T End_Beam :: Phrasing_T SustainOn :: Phrasing_T SustainOff :: Phrasing_T data Annotation Articulation :: Articulation_T -> Annotation Dynamic :: Dynamic_T -> Annotation Phrasing :: Phrasing_T -> Annotation Begin_Tie :: Annotation Above :: Annotation Below :: Annotation Text :: String -> Annotation ReminderAccidental :: Annotation CautionaryAccidental :: Annotation CompositeAnnotation :: [Annotation] -> Annotation data Bar_T NormalBarline :: Bar_T DoubleBarline :: Bar_T LeftRepeatBarline :: Bar_T RightRepeatBarline :: Bar_T FinalBarline :: Bar_T data Command_T AutoBeamOff :: Command_T Bar :: Bar_T -> Command_T BarlineCheck :: Command_T BarNumberCheck :: Integer -> Command_T Break :: Command_T Change :: String -> Command_T DynamicDown :: Command_T DynamicNeutral :: Command_T DynamicUp :: Command_T NoBreak :: Command_T NoPageBreak :: Command_T Octavation :: Integer -> Command_T PageBreak :: Command_T Partial :: Duration -> Command_T StemDown :: Command_T StemNeutral :: Command_T StemUp :: Command_T TupletDown :: Command_T TupletNeutral :: Command_T TupletUp :: Command_T User :: String -> Command_T VoiceOne :: Command_T VoiceTwo :: Command_T VoiceThree :: Command_T VoiceFour :: Command_T type TimeSignature = (Integer, Integer) type Tuplet_T = (Integer, Integer) data Tuplet_Mode Normal_Tuplet :: Tuplet_Mode Scale_Durations :: Tuplet_Mode data Music Note :: Pitch -> (Maybe Duration) -> [Annotation] -> Music note_pitch :: Music -> Pitch note_duration :: Music -> (Maybe Duration) note_annotations :: Music -> [Annotation] Chord :: [Music] -> Duration -> [Annotation] -> Music chord_notes :: Music -> [Music] chord_duration :: Music -> Duration chord_annotations :: Music -> [Annotation] Tremolo :: (Music, Music) -> Integer -> Music Rest :: Duration -> [Annotation] -> Music MMRest :: Integer -> TimeSignature -> [Annotation] -> Music Skip :: Duration -> Music Repeat :: Integer -> Music -> Music Tuplet :: Tuplet_Mode -> Tuplet_T -> Music -> Music Grace :: Music -> Music AfterGrace :: Music -> Music -> Music Join :: [Music] -> Music Clef :: Clef_T -> Int -> Music Time :: TimeSignature -> Music Key :: Note_T -> (Maybe Alteration_T) -> Mode_T -> Music Tempo :: Duration -> Integer -> Music Command :: Command_T -> Music Polyphony :: Music -> Music -> Music Empty :: Music type Staff_Name = (String, String) type Staff_ID = String data Staff_T Normal_Staff :: Staff_T Rhythmic_Staff :: Staff_T data Part Part :: (Maybe String) -> [Music] -> Part MultipleParts :: [[Music]] -> Part data Staff_Set_T ChoirStaff :: Staff_Set_T GrandStaff :: Staff_Set_T PianoStaff :: Staff_Set_T StaffGroup :: Staff_Set_T StaffGroup_SquareBracket :: Staff_Set_T type Staff_Scalar = Int data Staff_Settings Staff_Settings :: Staff_T -> Staff_ID -> Staff_Scalar -> Staff_Settings data Staff Staff :: Staff_Settings -> Staff_Name -> Part -> Staff Staff_Set :: Staff_Set_T -> Staff_Name -> [Staff] -> Staff data Score_Settings Score_Settings :: Bool -> Score_Settings independent_time_signatures :: Score_Settings -> Bool data Score Score :: Score_Settings -> [Staff] -> Score data Work Work :: Version -> Paper -> Header -> Score -> Work work_version :: Work -> Version work_paper :: Work -> Paper work_header :: Work -> Header work_score :: Work -> Score instance Eq Version instance Show Version instance Eq Units instance Show Units instance Eq Length instance Show Length instance Eq Paper instance Show Paper instance Eq Header instance Show Header instance Eq Clef_T instance Ord Clef_T instance Show Clef_T instance Eq Articulation_T instance Show Articulation_T instance Eq Dynamic_T instance Show Dynamic_T instance Eq Phrasing_T instance Show Phrasing_T instance Eq Annotation instance Show Annotation instance Eq Bar_T instance Show Bar_T instance Eq Command_T instance Show Command_T instance Eq Tuplet_Mode instance Show Tuplet_Mode instance Eq Music instance Show Music instance Eq Staff_T instance Show Staff_T instance Eq Part instance Show Part instance Eq Staff_Set_T instance Show Staff_Set_T instance Eq Staff_Settings instance Show Staff_Settings instance Eq Staff instance Show Staff instance Eq Score_Settings instance Show Score_Settings instance Eq Score instance Show Score instance Eq Work instance Show Work instance Monoid Music module Music.LilyPond.Light.Output.LilyPond ly_work :: Work -> String ly_music_elem :: Music -> String module Music.LilyPond.Light.Constant.NoteName mk_note :: Note_T -> Alteration_T -> Octave -> Music d1 :: Music e1 :: Music f1 :: Music g1 :: Music a1 :: Music b1 :: Music c1 :: Music des1 :: Music ees1 :: Music fes1 :: Music ges1 :: Music aes1 :: Music bes1 :: Music ces1 :: Music dis1 :: Music eis1 :: Music fis1 :: Music gis1 :: Music ais1 :: Music bis1 :: Music cis1 :: Music d2 :: Music e2 :: Music f2 :: Music g2 :: Music a2 :: Music b2 :: Music c2 :: Music des2 :: Music ees2 :: Music fes2 :: Music ges2 :: Music aes2 :: Music bes2 :: Music ces2 :: Music dis2 :: Music eis2 :: Music fis2 :: Music gis2 :: Music ais2 :: Music bis2 :: Music cis2 :: Music disis2 :: Music eisis2 :: Music fisis2 :: Music gisis2 :: Music aisis2 :: Music bisis2 :: Music cisis2 :: Music d3 :: Music e3 :: Music f3 :: Music g3 :: Music a3 :: Music b3 :: Music c3 :: Music des3 :: Music ees3 :: Music fes3 :: Music ges3 :: Music aes3 :: Music bes3 :: Music ces3 :: Music dis3 :: Music eis3 :: Music fis3 :: Music gis3 :: Music ais3 :: Music bis3 :: Music cis3 :: Music disis3 :: Music eisis3 :: Music fisis3 :: Music gisis3 :: Music aisis3 :: Music bisis3 :: Music cisis3 :: Music deseh3 :: Music eeseh3 :: Music feseh3 :: Music geseh3 :: Music aeseh3 :: Music beseh3 :: Music ceseh3 :: Music deh3 :: Music eeh3 :: Music feh3 :: Music geh3 :: Music aeh3 :: Music beh3 :: Music ceh3 :: Music dih3 :: Music eih3 :: Music fih3 :: Music gih3 :: Music aih3 :: Music bih3 :: Music cih3 :: Music disih3 :: Music eisih3 :: Music fisih3 :: Music gisih3 :: Music aisih3 :: Music bisih3 :: Music cisih3 :: Music d4 :: Music e4 :: Music f4 :: Music g4 :: Music a4 :: Music b4 :: Music c4 :: Music des4 :: Music ees4 :: Music fes4 :: Music ges4 :: Music aes4 :: Music bes4 :: Music ces4 :: Music dis4 :: Music eis4 :: Music fis4 :: Music gis4 :: Music ais4 :: Music bis4 :: Music cis4 :: Music deses4 :: Music eeses4 :: Music feses4 :: Music geses4 :: Music aeses4 :: Music beses4 :: Music ceses4 :: Music disis4 :: Music eisis4 :: Music fisis4 :: Music gisis4 :: Music aisis4 :: Music bisis4 :: Music cisis4 :: Music deseh4 :: Music eeseh4 :: Music feseh4 :: Music geseh4 :: Music aeseh4 :: Music beseh4 :: Music ceseh4 :: Music deh4 :: Music eeh4 :: Music feh4 :: Music geh4 :: Music aeh4 :: Music beh4 :: Music ceh4 :: Music dih4 :: Music eih4 :: Music fih4 :: Music gih4 :: Music aih4 :: Music bih4 :: Music cih4 :: Music disih4 :: Music eisih4 :: Music fisih4 :: Music gisih4 :: Music aisih4 :: Music bisih4 :: Music cisih4 :: Music d5 :: Music e5 :: Music f5 :: Music g5 :: Music a5 :: Music b5 :: Music c5 :: Music des5 :: Music ees5 :: Music fes5 :: Music ges5 :: Music aes5 :: Music bes5 :: Music ces5 :: Music dis5 :: Music eis5 :: Music fis5 :: Music gis5 :: Music ais5 :: Music bis5 :: Music cis5 :: Music deses5 :: Music eeses5 :: Music feses5 :: Music geses5 :: Music aeses5 :: Music beses5 :: Music ceses5 :: Music disis5 :: Music eisis5 :: Music fisis5 :: Music gisis5 :: Music aisis5 :: Music bisis5 :: Music cisis5 :: Music deseh5 :: Music eeseh5 :: Music feseh5 :: Music geseh5 :: Music aeseh5 :: Music beseh5 :: Music ceseh5 :: Music deh5 :: Music eeh5 :: Music feh5 :: Music geh5 :: Music aeh5 :: Music beh5 :: Music ceh5 :: Music dih5 :: Music eih5 :: Music fih5 :: Music gih5 :: Music aih5 :: Music bih5 :: Music cih5 :: Music disih5 :: Music eisih5 :: Music fisih5 :: Music gisih5 :: Music aisih5 :: Music bisih5 :: Music cisih5 :: Music d6 :: Music e6 :: Music f6 :: Music g6 :: Music a6 :: Music b6 :: Music c6 :: Music des6 :: Music ees6 :: Music fes6 :: Music ges6 :: Music aes6 :: Music bes6 :: Music ces6 :: Music dis6 :: Music eis6 :: Music fis6 :: Music gis6 :: Music ais6 :: Music bis6 :: Music cis6 :: Music deseh6 :: Music eeseh6 :: Music feseh6 :: Music geseh6 :: Music aeseh6 :: Music beseh6 :: Music ceseh6 :: Music deh6 :: Music eeh6 :: Music feh6 :: Music geh6 :: Music aeh6 :: Music beh6 :: Music ceh6 :: Music dih6 :: Music eih6 :: Music fih6 :: Music gih6 :: Music aih6 :: Music bih6 :: Music cih6 :: Music disih6 :: Music eisih6 :: Music fisih6 :: Music gisih6 :: Music aisih6 :: Music bisih6 :: Music cisih6 :: Music d7 :: Music e7 :: Music f7 :: Music g7 :: Music a7 :: Music b7 :: Music c7 :: Music des7 :: Music ees7 :: Music fes7 :: Music ges7 :: Music aes7 :: Music bes7 :: Music ces7 :: Music dis7 :: Music eis7 :: Music fis7 :: Music gis7 :: Music ais7 :: Music bis7 :: Music cis7 :: Music module Music.LilyPond.Light.Constant ppp :: Annotation pp :: Annotation p :: Annotation mp :: Annotation mf :: Annotation f :: Annotation ff :: Annotation fff :: Annotation ffff :: Annotation fp :: Annotation sfz :: Annotation pppp :: Annotation decr :: Annotation end_cresc :: Annotation end_decr :: Annotation espressivo :: Annotation cresc :: Annotation fermata :: Annotation flageolet :: Annotation harmonic :: Annotation laissezVibrer :: Annotation glissando :: Annotation arpeggio :: Annotation staccato :: Annotation tenuto :: Annotation accent :: Annotation marcato :: Annotation tenor_clef :: Music alto_clef :: Music treble_clef :: Music percussion_clef :: Music bass_clef :: Music treble_8va_clef :: Music treble_8vb_clef :: Music treble_15ma_clef :: Music bass_8vb_clef :: Music l :: Music final_barline :: Music double_barline :: Music no_system_break :: Music system_break :: Music no_page_break :: Music page_break :: Music auto_beam_off :: Music tuplet_neutral :: Music tuplet_up :: Music tuplet_down :: Music voice_two :: Music voice_one :: Music stem_neutral :: Music stem_up :: Music stem_down :: Music dynamic_neutral :: Music dynamic_up :: Music dynamic_down :: Music end_8va :: Music begin_8va :: Music no_ped :: Annotation ped :: Annotation tie :: Annotation -- | Beaming annotations. end_beam :: Annotation begin_beam :: Annotation -- | Slur annotations. end_slur :: Annotation begin_slur :: Annotation slur_neutral :: Music slur_up :: Music slur_down :: Music -- | Phrasing slur annotations. end_phrasing_slur :: Annotation begin_phrasing_slur :: Annotation cAcc :: Annotation rAcc :: Annotation set_accidental_style_dodecaphonic :: Music set_accidental_style_neo_modern :: Music set_accidental_style_modern :: Music a4_paper :: Paper length_scale :: Double -> Length -> Length paper_incr_size :: Paper -> Paper a3_paper :: Paper a2_paper :: Paper landscape :: Paper -> Paper default_score_settings :: Score_Settings default_header :: Header module Music.LilyPond.Light is_note :: Music -> Bool is_chord :: Music -> Bool is_rest :: Music -> Bool is_mm_rest :: Music -> Bool is_grace :: Music -> Bool is_after_grace :: Music -> Bool -- | These are required to avoid issues in lilypond (see manual) is_grace_skip :: Music -> Bool is_clef :: Music -> Bool is_time :: Music -> Bool is_tempo :: Music -> Bool is_barlinecheck :: Music -> Bool is_tied :: Music -> Bool is_tuplet :: Music -> Bool -- | Add reminder accidental to note. r_acc :: Music -> Music -- | Add cautionary accidental to note. c_acc :: Music -> Music -- | Remove any reminder or cautionary accidentals at note or chord. clr_acc :: Music -> Music octpc_to_note :: (Octave, PitchClass) -> Music -- | Construct rests. r :: Duration -> Music r' :: TimeSignature -> Music -- | Create an empty measure for the specified time signature. empty_measure :: Integer -> Integer -> Music -- | Like empty_measure, but with an invisible rest. null_measure :: Integer -> Integer -> Music -- | Like empty_measure but write time signature. measure_rest :: Integer -> Integer -> Music -- | Like measure_rest but write time signature. measure_null :: Integer -> Integer -> Music type M_Annotation = Music data Measure Measure :: [M_Annotation] -> [Music] -> Measure m_annotate :: M_Annotation -> Measure -> Measure m_annotate' :: [M_Annotation] -> Measure -> Measure m_annotate_first' :: [M_Annotation] -> [Measure] -> [Measure] m_annotate_last' :: [M_Annotation] -> [Measure] -> [Measure] m_elements :: Measure -> [Music] mm_elements :: [Measure] -> [Music] -- | Apply fn to the duration of x, if it has a duration. edit_dur :: (Duration -> Duration) -> Music -> Music -- | Temporal scaling of music (tuplets). tuplet :: Tuplet_T -> [Music] -> Music -- | Tuplet variants that set location, and then restore to neutral. tuplet_below :: Tuplet_T -> [Music] -> Music tuplet_above :: Tuplet_T -> [Music] -> Music -- | Like tuplet but does not annotate music, see also -- ts_set_fraction. scale_durations :: Tuplet_T -> [Music] -> Music -- | Construct time signature. time_signature :: TimeSignature -> Music -- | Allow proper auto-indenting of multiple measures with the same time -- signature. with_time_signature :: TimeSignature -> [Music] -> Music -- | Tied, non-multiplied durations to fill a whole measure. ts_whole_note :: TimeSignature -> [Duration] -- | Command to request that 44 and 22 etc. are typeset as -- fractions. ts_use_fractions :: Music -- | Set the printed time-signature fraction. ts_set_fraction :: Integer -> Integer -> Music numeric_time_signature :: Music ts_parentheses :: Music -- | Construct key signature. key :: Music -> Mode_T -> Music -- | Construct standard (two times) repeat. std_repeat :: Integer -> [Music] -> Music -- | Can a music element be annotated? allows_annotations :: Music -> Bool -- | Add an annotation to music element. add_annotation :: Annotation -> Music -> Maybe Music -- | Add an annotation to music element or error. add_annotation_err :: Annotation -> Music -> Music -- | Add an annotation to music element, or error. (&) :: Music -> Annotation -> Music -- | Add an annotation to a pitch. (&#) :: Pitch -> Annotation -> Music -- | Add an annotation to music element. perhaps_annotate :: Annotation -> Music -> Music bracket_annotation_fn :: (Annotation -> Music -> Music) -> (Annotation, Annotation) -> [Music] -> [Music] bracket_annotation :: (Annotation, Annotation) -> [Music] -> [Music] bracket_annotation' :: (Annotation, Annotation) -> [Music] -> [Music] beam' :: [Music] -> [Music] -- | Manual beaming. beam :: [Music] -> Music slur' :: [Music] -> [Music] slur :: [Music] -> Music phrasing_slur' :: [Music] -> [Music] phrasing_slur :: [Music] -> Music text_below :: String -> Annotation text_above :: String -> Annotation pizz :: Annotation arco :: Annotation stem_tremolo :: Integer -> Annotation place_below :: Annotation -> Annotation place_above :: Annotation -> Annotation -- | Add an annotation to a note element, else identity. note_annotate :: Annotation -> Music -> Music -- | Annotate the first note/chord element. initial_note_chord_annotate :: Annotation -> [Music] -> [Music] allows_indirect_annotation :: Music -> Bool indirect_annotation :: Annotation -> Music -> Music attach_indirect_annotation :: Annotation -> [Music] -> [Music] -- | Shift the octave of a note element, else identity. note_edit_octave :: (Integer -> Integer) -> Music -> Music -- | Shift the octave of a note element, else identity. note_shift_octave :: Integer -> Music -> Music -- | Predicate combinators. p_and :: (t -> Bool) -> (t -> Bool) -> t -> Bool p_or :: (t -> Bool) -> (t -> Bool) -> t -> Bool span_r :: (a -> Bool) -> [a] -> ([a], [a], [a]) -- | Beam if at least two elements. perhaps_beam :: [Music] -> [Music] -- | Beam interior notes/chords (ie. skip exterior non-note/non-chords). beam_notes :: [Music] -> Music set_subdivide_beams :: Integer -> Music -- | Add duration to pitch to make a note. (##) :: Pitch -> Duration -> Music -- | Add duration to pitch to make a note. (#) :: Music -> Duration -> Music -- | Construct chord. chd_p :: [Pitch] -> Duration -> Music chd :: [Music] -> Duration -> Music -- | Construct bar number check. bar_number_check :: Integer -> Music -- | Change staff. change :: String -> Music -- | Indicate initial partial measure. partial :: Duration -> Music hairpin_circled_tip :: Bool -> Music hairpin_to_barline :: Bool -> Music name_to_id :: Staff_Name -> Staff_ID -- | Construct staff. staff :: Staff_Name -> [Music] -> Staff -- | Construct rhythmic staff. rhythmic_staff :: Staff_Name -> [Music] -> Staff -- | Construct staff with text underlay. text_staff :: Staff_Name -> String -> [Music] -> Staff -- | Construct piano staff. For two staff piano music the staffs have -- identifiers rh and lh. piano_staff :: Staff_Name -> [[Music]] -> Staff grand_staff :: Staff_Name -> [[Music]] -> Staff staff_group :: Staff_Name -> [[Music]] -> Staff rhythmic_grand_staff :: Staff_Name -> [[Music]] -> Staff -- | Variant with names for each staff. grand_staff' :: Staff_Name -> [Staff_Name] -> [[Music]] -> Staff staff_group' :: Staff_Name -> [Staff_Name] -> [[Music]] -> Staff two_part_staff :: Staff_Name -> ([Music], [Music]) -> Staff instr_name :: Staff_Name -> Staff -> Staff resize_staff :: Int -> Staff -> Staff score :: [Staff] -> Score tempo :: Duration -> Integer -> Music after_grace :: Music -> Music -> Music grace :: Music -> Music tremolo :: (Music, Music) -> Integer -> Music -- | Interior polyphony. For two part music on one staff see -- two_part_staff. polyphony :: Music -> Music -> Music polyphony' :: [Music] -> [Music] -> Music -- | Request cross note-heads. cross_noteheads :: Music -- | Revert to standard note-heads. revert_noteheads :: Music -- | Joins directly adjacent rest elements. join_rests :: [Music] -> [Music] module Music.LilyPond.Light.Analysis type R = Double -- | Apply a function to all elements and collect results in a list. traverse :: (Music -> a) -> Music -> [a] -- | Collect all elements of a given type. collect_entries :: (Music -> Bool) -> Music -> [Music] count_entries :: (Music -> Bool) -> Music -> Integer count_notes :: Music -> Integer count_chords :: Music -> Integer count_ts :: Music -> Integer -- | Does music element contain one or more pitches? has_pitch :: Music -> Bool -- | Collect pitches from a note or chord or join of such. collect_pitches_no_grace :: Music -> [Pitch] -- | Collect pitches from a note, chord, or grace note. collect_pitches :: Music -> [Pitch] -- | Collect note sequence, filters tied notes. note_seq :: Music -> [Music] freq_anal_by :: Ord a => (a -> a -> Ordering) -> [a] -> [(Int, a)] freq_anal :: Ord a => [a] -> [(Int, a)] type TempoMarking = (Duration, Integer) -- | Apply d dots to the rational pulse count n. apply_dots :: Rational -> Integer -> Rational -- | Convert a duration to a pulse count in relation to the indicated time -- signature. dur_pulses :: TimeSignature -> Duration -> Rational -- | The duration, in seconds, of a pulse at the indicated time signaure -- and tempo marking. pulse_duration :: TimeSignature -> TempoMarking -> R -- | The duration, in seconds, of a measure at the indicated time signaure -- and tempo marking. measure_duration :: TimeSignature -> TempoMarking -> R type TimeSignature_Map = [(Measure, TimeSignature)] type TempoMarking_Map = [(Measure, TempoMarking)] type Temporal_Map = (TimeSignature_Map, TempoMarking_Map) temporal_map :: [Music] -> Temporal_Map -- | Return duration (in seconds) and pulse counts for n measures. mm_durations :: Temporal_Map -> Integer -> [(R, Integer)] integrate :: Num a => [a] -> [a] -- | Return start time and duration (in seconds) and pulse counts for i -- measures. mm_start_times :: Temporal_Map -> Integer -> [(R, R, Integer)] location_to_rt :: [(R, R, Integer)] -> Location -> R locate_rt :: [Music] -> [(R, Music)] data Locate_Mode LM_Normal :: Locate_Mode LM_In_Tuplet :: Locate_Mode type Measure = Integer type Pulse = Rational type Part_ID = Integer -- | Data type representing the location of a musical element. data Location Location :: Measure -> Pulse -> Part_ID -> Locate_Mode -> Location measure :: Location -> Measure pulse :: Location -> Pulse part :: Location -> Part_ID mode :: Location -> Locate_Mode -- | Convert a location to normal form under given time signature. location_nf :: TimeSignature -> Location -> Location -- | Type to thread state through location calculations. type Locate_ST = (TimeSignature, Location) -- | Update state part number. st_set_part :: Locate_ST -> Part_ID -> Locate_ST -- | Update state part number. st_set_mode :: Locate_ST -> Locate_Mode -> Locate_ST -- | Step location state by duration. location_step :: Locate_ST -> Duration -> Locate_ST -- | Located music type LM = (Location, Music) -- | Located value type LV a = (Location, a) -- | State threading form of location calculations. Currently, nested -- polyphonic parts generate duplicate IDs (?) locate_st :: Locate_ST -> Music -> (Locate_ST, [LM]) -- | Run location calculations. locate :: Music -> [LM] locate' :: [Music] -> [LM] -- | Extract list of part identifiers. lv_located_parts :: [LV a] -> [Part_ID] lv_group_parts :: [LV a] -> [[LV a]] -- | Drop n measures. lv_from_measure :: Integer -> [LV a] -> [LV a] lv_group_measures :: [LV a] -> [[LV a]] lv_extract_part :: Part_ID -> [LV a] -> [LV a] lv_extract_measure :: Measure -> [LV a] -> [LV a] lm_pitches :: [LM] -> [Pitch] lm_pcset :: [LM] -> [PitchClass] lm_pitches_per_measure :: [LM] -> [[Pitch]] lm_pcset_per_measure :: [LM] -> [[PitchClass]] unlocate_p :: Music -> Bool normal_mode_p :: Location -> Bool lm_unlocate :: [LM] -> [Music] location_time :: Location -> (Measure, Pulse) lv_sort :: [LV a] -> [LV a] located_pitches :: [[Music]] -> [(Location, [Pitch])] -- | Rewrite time signature to indicated denominator. ts_rewrite :: Integer -> TimeSignature -> TimeSignature -- | Sum time signatures (ie. 316 and 12 sum to 11/16). ts_sum :: [TimeSignature] -> TimeSignature measure_diff :: Location -> Location -> Integer lv_last_measure :: [LV a] -> Measure time_unpack :: Music -> TimeSignature -- | Time signature structure of music. ts_structure :: Music -> [[(TimeSignature, Integer)]] ts_structure' :: [Music] -> [[(TimeSignature, Integer)]] structure_unfold' :: Integral i => [(a, i)] -> [a] structure_unfold :: Integral i => [(a, i)] -> [Maybe a] lm_ts_map :: [LM] -> TimeSignature_Map ts_map :: [Music] -> TimeSignature_Map -- | Keys are in ascending order, the value retrieved is the that with the -- greatest key less than or equal to the key requested. map_lookup :: Ord i => [(i, a)] -> i -> a ts_lookup :: [(Measure, TimeSignature)] -> Measure -> TimeSignature lm_tempo_map :: [LM] -> [(Measure, (Duration, Integer))] tempo_map :: [Music] -> [(Measure, (Duration, Integer))] tempo_lookup :: [(Measure, (Duration, Integer))] -> Measure -> (Duration, Integer) kv_group_by :: Ord c => (a -> c) -> [(a, b)] -> [[(a, b)]] kv_collate :: Ord k => (a -> k) -> (a -> v) -> [a] -> [(k, [v])] kv_collate' :: Ord k => [(k, v)] -> [(k, [v])] -- | Filter with predicates at key and value. kv_filter :: (k -> Bool) -> (v -> Bool) -> [(k, v)] -> [(k, v)] -- | Apply functions to keys and values. kv_map :: (k -> k') -> (v -> v') -> [(k, v)] -> [(k', v')] measure_collate :: (Music -> Bool) -> Music -> [[(Integer, [Music])]] collation_unfold :: [(Integer, a)] -> [Maybe a] type ST_r st = (st, Music) type ST_f st = st -> Music -> ST_r st transform_st :: ST_f st -> st -> Music -> ST_r st transform :: (Music -> Music) -> Music -> Music write_out_repeats :: Music -> Music -- | Replace the pitch of note element n1 with that of n0. note_replace_pitch :: Pitch -> Music -> Music note_replace_pitch_m :: Music -> Music -> Music replace_notes_fn :: (a -> Pitch) -> [a] -> Music -> ([a], Music) -- | Replaces notes with indicated pitches, rhythms and annotations are not -- replaced. Tied notes do not use multiple pitches from the input -- sequence. replace_notes_p :: [Pitch] -> Music -> Music replace_notes :: [Music] -> Music -> Music insert_after_notes_fn :: [Maybe Music] -> Music -> ([Maybe Music], Music) -- | Inserts a value after each note as indicated. insert_after_notes :: [Maybe Music] -> Music -> Music discard_tied_notes_pr :: (a -> Bool) -> (a -> Bool) -> [a] -> [a] discard_tied_notes :: [Music] -> [Music] lm_discard_tied_notes :: [LM] -> [LM] spell_ks :: (Octave, PitchClass) -> Music spell_sharp :: (Octave, PitchClass) -> Music spell_flat :: (Octave, PitchClass) -> Music v_assert :: String -> (Music -> Bool) -> (Music -> Maybe String) -- | Notes in chords must not have duration. v_chord_note_valid :: Music -> Maybe String validate :: Music -> [String] instance Show Locate_Mode instance Eq Locate_Mode instance Ord Locate_Mode instance Show Location instance Eq Location instance Ord Location