Created
June 8, 2010 18:54
-
-
Save jsoffer/430472 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- para construir: "ghci yidl.hs" seguido de "render todo" crea "yidl.mid" | |
import Haskore.Basic.Duration | |
import Haskore.Interface.MIDI.Render | |
import Haskore.Melody | |
import Haskore.Basic.Interval | |
import Haskore.Music.GeneralMIDI as GM | |
import Haskore.Basic.Scale | |
import Haskore.Basic.Tempo | |
import Haskore.Basic.Pitch as BP | |
import qualified Haskore.Music as Music | |
tr = Music.transpose | |
test m = fileFromGeneralMIDIMusic "yidl.mid" $ GM.fromMelodyNullAttr AcousticBass m | |
-- xs es la lista de intervalos respecto a la base | |
secuencia base xs = line $ map ((flip tr) base) xs | |
-- ys es la lista de duraciones de cada nota relativas a la duración de la base | |
sec2 base xs ys = line $ zipWith changeTempo (map (1/) ys) $ map ((flip tr) base) xs | |
render xs = test $ changeTempo (allegro/60) | |
$ xs | |
-- yidl midl fidl: nigun | |
s11 = secuencia (b 0 en ()) [0,-2,-4,0,-2,-4,-5,0] | |
s12 = secuencia (g 0 qn ()) [0,-3] | |
s13 = secuencia (e 0 en ()) [0,2,3,7] | |
s14 = sec2 (d 1 en ()) [0,0,2,0,-2,-3,-5] [2,1,1,1,1,1,1] | |
s15 = (b 0 hn ()) +:+ hnr | |
m11 = wnr +:+ wnr +:+ wnr +:+ enr | |
m12 = secuencia (b 0 en ()) [0,-2,-4,-2,-4,-5,-12] | |
s21 = enr +:+ secuencia (e 0 en ()) [0,3,7,10,8,7,10] | |
s22 = sec2 (c 1 en ()) [0,-1,-3,-3,4,2,0] [1,1,2,1,1,1,1] | |
-- legato entre s22 y s23 (falta) | |
s23 = secuencia (b 0 en ()) [0,-2,-4,0,-2,-4,-5,-4] | |
s24 = (e 0 qn ()) +:+ qnr +:+ hnr | |
m21 = sec2 (e 0 qn ()) [0,3,3,0] [3/2, 1/2, 1, 1] | |
m22 = qnr +:+ sec2 (c 0 en ()) [0,2,4,9] [1,1,2,2] | |
m23 = secuencia (g 0 en ()) [0,-1,-3,-5,-7,-8,-10,-8] | |
m24 = s24 | |
t21 = wnr +:+ wnr +:+ wnr +:+ wnr +:+ wnr +:+ wnr +:+ wnr | |
t22 = enr +:+ secuencia (e 0 en ()) [0,2,3,5,3,2,7] | |
t31 = (e 0 qn ()) +:+ qnr +:+ sec2 (fs 0 en ()) [0,-2,-3,0,-2,1,3,1,-2] [1,1,1,1,2,1,1,2,2] | |
t32 = qnr +:+ secuencia (d 0 qn ()) [0,2,4,5] | |
t33 = qnr +:+ secuencia (fs 0 en ()) [0,1,3,5] | |
t41 = sec2 (e 1 en ()) [0,-5,-5,-7,-8,-7,-5,-4,-5,-4,-5,-7] [2,2,1,1,2,1,1,1,1,2,1,1] | |
t42 = sec2 (g 0 en ()) [0,-1,-3,-1,-8,-3] [1,1,2,2,2,2] | |
ydl = (line [s11, s12, s13, s14, s15, s21, s22, s23]) =:= | |
(line [m11, m12, m21, m22, m23]) | |
tenor = (line [t22, t31, t32, t33, t41, t42]) | |
todo = | |
ydl +:+ | |
(tenor =:= (Music.transpose (-12) tenor) =:= (s24 +:+ ydl)) +:+ | |
qnr +:+ hnr +:+ | |
ydl +:+ | |
(tenor =:= (Music.transpose (-12) tenor) =:= (s24 +:+ ydl)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment