> module HSoM.Examples.EuterpeaExamples where > import Euterpea > import HSoM.Examples.MoreMusic > import HSoM.Examples.Interlude > import HSoM.Examples.SelfSimilar > import HSoM.Examples.SSF Simple examples of Euterpea in action. Note that this module also imports modules Interlude and SelfSimilar. ----------------------------------------------------------------------------- From the tutorial, try things such as pr12, cMajArp, cMajChd, etc. and try applying inversions, retrogrades, etc. on the same examples. Also try "childSong6" imported from module Interlude. For example: > t0 = play childSong6 ----------------------------------------------------------------------------- C Major scale for use in examples below: > cMajScale = Modify (Tempo 2) > (line [c 4 en, d 4 en, e 4 en, f 4 en, > g 4 en, a 4 en, b 4 en, c 5 en]) > > cms' = line [c 4 en, d 4 en, e 4 en, f 4 en, > g 4 en, a 4 en, b 4 en, c 5 en] > > cms = cMajScale Test of various articulations and dynamics: > t1 = play (Modify (Instrument Percussion) > (Modify (Phrase [Art (Staccato (1/10))]) cms :+: > cms :+: > Modify (Phrase [Art (Legato (11/10))]) cms )) > > temp = Modify (Instrument AcousticGrandPiano) > (Modify (Phrase [Dyn (Crescendo 4)]) (c 4 en)) > > mu2 = Modify (Instrument Vibraphone) > (Modify (Phrase [Dyn (Diminuendo (3/4))]) cms :+: > (Modify (Phrase [Dyn (Crescendo 4), Dyn (Loudness 25)]) cms)) > t2 = play mu2 > > t3 = play (Modify (Instrument Flute) > (Modify (Phrase [Tmp (Accelerando 0.3)]) cms :+: > Modify (Phrase [Tmp (Ritardando 0.6)]) cms )) ----------------------------------------------------------------------------- Example from the SelfSimilar module. > t10s = play (rep (offset (dur ttm0)) (Modify (Transpose 4)) 2 ttm0) ----------------------------------------------------------------------------- Example from the Interlude module. > cs6 = play childSong6 ----------------------------------------------------------------------------- Example from the Ssf (Stars and Stripes Forever) module. > ssf0 = play ssf ----------------------------------------------------------------------------- Midi percussion test. Plays all "notes" in a range. (Requires adding an instrument for percussion to the UserPatchMap.) > drums a b = Modify (Instrument Percussion) > (line (map (\p-> Prim $ Note sn (pitch p)) [a..b])) > t11 a b = play (drums a b) ----------------------------------------------------------------------------- Test of cut and shorten. > t12 = play (cut 4 childSong6) > t12a = play (cms /=: childSong6) ----------------------------------------------------------------------------- Tests of the trill functions. > t13note = Prim (Note qn (C,5)) > t13 = play (trill 1 sn t13note) > t13a = play (trill' 2 dqn t13note) > t13b = play (trilln 1 5 t13note) > t13c = play (trilln' 3 7 t13note) > t13d = play (roll tn t13note) > t13e = play (Modify (Tempo (2/3)) > (Modify (Transpose 2) > (Modify (Instrument AcousticGrandPiano) > (trilln' 2 7 t13note)))) ----------------------------------------------------------------------------- Tests of drum. > t14 = play (Modify (Instrument Percussion) (perc AcousticSnare qn)) > -- a "funk groove" > t14b = let p1 = perc LowTom qn > p2 = perc AcousticSnare en > in play (Modify (Tempo 3) (Modify (Instrument Percussion) (cut 8 (forever > ((p1 :+: qnr :+: p2 :+: qnr :+: p2 :+: > p1 :+: p1 :+: qnr :+: p2 :+: enr) > :=: roll en (perc ClosedHiHat 2)))))) > -- a "jazz groove" > t14c = let p1 = perc CrashCymbal2 qn > p2 = perc AcousticSnare en > p3 = perc LowTom qn > in play (Modify (Tempo 3) (Modify (Instrument Percussion) (cut 4 (forever > ((p1 :+: (Modify (Tempo (3/2)) (p2 :+: enr :+: p2)) > :=: (p3 :+: qnr)) ))))) > t14d = let p1 = perc LowTom en > p2 = perc AcousticSnare hn > in play (Modify (Instrument Percussion) > ( roll tn p1 > :+: p1 > :+: p1 > :+: Prim (Rest en) > :+: roll tn p1 > :+: p1 > :+: p1 > :+: Prim (Rest qn) > :+: roll tn p2 > :+: p1 > :+: p1 )) ----------------------------------------------------------------------------- Tests of the MIDI interface. > loadMidiFile fn = do > r <- importFile fn > case r of > Left err -> error err > Right m -> return m Music into a MIDI file. > tab m = writeMidi m Music to a Midi datatype and back to Music. > tad m = fromMidi $ toMidi $ perform m A MIDI file to a MidiFile datatype and back to a MIDI file. > tcb file = do > x <- loadMidiFile file > exportFile "test.mid" x MIDI file to MidiFile datatype. > tc file = do > x <- loadMidiFile file > print x MIDI file to Music, a UserPatchMap, and a Context. > tcd file = do > x <- loadMidiFile file > print $ fromMidi x A MIDI file to Music and back to a MIDI file. > tcdab file = do > x <- loadMidiFile file > exportFile "test.mid" $ toMidi $ perform $ fromMidi x