-- https://learningmusic.ableton.com/make-melodies/love-will-tear-us-apart.html let loveTears = "<<e4!3 [e4 fs4 e4@6]> [fs4@2 g4 fs4@2 e4 d4@2] [b3@7 <d4 fs3>] a3>" -- How is this melody put together? -- -- This melody uses only notes in the scale of D major. But the melody starts with a long E, creating a sense of tension against the implied key that continues throughout the whole song. -- -- Notice the shape (or contour) of the melody. At the beginning, it moves up and down the scale by adjacent notes. But at the end, it leaps from B up to D and then down to A. This contrast between stepwise and leapwise motion helps to make the melody strong and memorable. -- Try making some of your own melodies that also use a contrast between steps and leaps. -- let lineTourDeFrance1 = "<[f3@2 bf3 c4 f4@3 d4] [f4 g4 c4 d4 f4@2 bf4@2] <af4 c5>@2>" let lineTourDeFrance2 = "<[g3@2 c4 d4 g4@3 e4] [g4 a4 d4 e4 g4@2 c5@2] <bf4 [bf4@2 ef5 c5@13]>@2>" -- The first and second phrases are identical, with the exception of the final note. In the first phrase, the last two notes descend from B♭ to A♭, while in the second phrase, they ascend from B♭ to C. You can hear this as a sort of "question and answer" relationship; the first phrase sounds somehow incomplete, while the second phrase sounds like it serves to resolve the first. -- -- let praxis = "<[~ d5 d4 e4 g4 a4 b4 d4] [e4 g4 a4 b4 <e4 g4>@4]>" -- Prestance do setcps (134/60/4) let gF1 = (# djfbus 1 (range 0.05 0.95 "^49")) let gF2 = (# djfbus 2 (range 0.05 0.95 "^50")) let gF3 = (# djfbus 3 (range 0.05 0.95 "^51")) let gMask = (midiOn "^41" (mask "t . <f t f <f t>> <t f f <t f>>")) let gMute = (midiOn "^73" (mask "f*16")) let gMute2 = (midiOn "^74" (mask "f*16")) let gM = gMask . gMute let gM2 = gMask . gMute2 let praxis = "<[~ d5 d4 e4 g4 a4 b4 d4] [e4 g4 a4 b4 <e4 g4>@4]>" d1 $ gF1 $ gM $ midiOn "^42" (<| "k k k k") $ midiOff "^42" (<| "k . k(<0!3 1 0 1 3 3>,8,<0!3 6>)") $ "[jazz,808bd:3]" # midiG' "^78" 0 1.4 d2 $ gF1 $ midiOn "^43" (<| "~ c ~ c") $ midiOff "^43" (<| "~ <~ c>") $ "cp" # note "-2" # midiG' "^78" 0 1.8 d3 $ gF1 $ gM $ midiOn "^75" (loopAt 2 . (>| "jungle_breaks:35")) $ midiOn "^43" (off 0.5 (ply "<1!3 2>")) -- $ chop 8 $ midiOff "^75" (slice 8 "<0 1 2 3 [0 1] [1 2] [1 2] [1 2]>") $ loopAt 2 $ "break:20" # midiG' "^79" 0 1.4 d4 $ gF2 $ gM2 $ note "<[a2@2 ~ ~ a2 b2 ~ <~!1 <b2 e2>>] <e2 g2>>" # "FMRhodes1" # cut 4 # modIndex 5 # room 0.2 # delay 0.8 # delayfb "<0.1!3 0.65>" # delayt 0.125 # crushbus 41 (range 16 2.5 "^53") # midiG' "^81" 0 1.6 d6 $ gF3 $ gM2 $ mask "<f!12 t!4>" $ note praxis # "bassWarsaw" # modIndex 5 # midiG' "^17" 0 1.4 # pan 0.3 d7 $ gF3 $ gM2 $ mask "<t(10,16)!8 f(10,16)!8>" $ note (praxis + 36) # "prophet5pwmStrings" # pan 0.9 # midiG' "^18" 0 1.4 d8 $ gF3 $ gM2 $ mask "<f(10,16)!8 t(10,16)!8>" $ juxBy 0.3 (mask "t(3,8) . t(12,16)" . (|+ note 12)) $ note (rev praxis) # "moogBass" # modIndex 5 # pan 0.9 # midiG' "^19" 0 1 do let loveTears = "<<e4!3 [e4 fs4 e4@6]> [fs4@2 g4 fs4@2 e4 d4@2] [b3@7 <d4 fs3>] a3>" setcps (148/60/4) d1 $ "<k!7 [k k*2] [k*4]!8>" # "jazz" d2 $ fast "<1!7 [1 4] 2!3 [2 4] 2!3 4>" "~ snare:55" d3 $ "[~ hh]*4" d4 $ note (loveTears + "[0,12]") # "[FMRhodes1]" # gain 1.4 # pan 0.8 d5 $ mask "<t!4 f!4> t!12" $ rev -- $ mask "<f!8 t!8>" $ note (loveTears + "[24]") # "[FMRhodes2]" # gain 1.2 # room 0.4 # sz 0.4 # pan 0.3