Strudelify

Man in the Moon

Erasure

KeyB♭ majorTempo118 bpm
0:00/0:00
// Man in the Moon — Erasure
// 118 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(118/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · synth strings 1 · "SynthStrings 1"
const synth_strings_1 = note(`<
  ~@4 A@3 B C@4 D E F@2 G H I@2 J@2 K L M@3 L N@2 K L O@3 P Q R@2 S@2 T@2 U@2 V E F@2 V H F@2 W X Y@2 J@2 K L M@3 L N@2
  K L O@3 Z AA AB AA AC AA AB AD AE W X Y@2 AF AG AH AI J@2 K L M@3 L N@2 K L O@3 AJ@3 AK AL@3 AM@2 AN@4 ~@2
>`.pickRestart({
  A: "[[bb4,d5]@4 bb4 ~ bb4@2 ~@2 bb4@3 ~@5 bb4@2 ~@2 bb4@3 ~ bb4 ~ bb4@2 ~@4 eb5@2 d5@4 eb5@2 d5@2 c5@3 ~, [d4,f4]@7 [d4,g4]@8 [f4,bb4]@9, bb2@2 a2@2 g2@3 a2 bb2@2 a2@2, ~@7 d5@2 ~@6 f5@2 ~@7]/3", // Bb Dm G5 Bb5
  B: "d5 ~@5 a2@2, [d4,g4], g2@3 ~, ~ bb4@7", // G5
  C: "[d5@4 bb4@2 bb4@2 ~@2 bb4@3 ~@3 bb4@4 ~@2 c5@4 ~@8 eb5@2 d5@2 eb5@2 ~@2 d5@2 c5@2 ~@14 a2@4, [d4,f4]@8 g4@7 [f4,bb4]@8 [d4,g4]@8 ~, bb2@2 a2@2 g2@3 a2 bb2@2 a2@2 g2@3 ~, ~@7 d5@3 bb4@3 bb4@2 f5@2 ~@6 d5@2 bb4@7]/4", // Dm Bb5 G5
  D: "a4 a4@4 f4 c4 f4, f1, [c4,f4] ~", E: "g4@3 ~ f4@2 ~@4 f4@6, [d2,a3], d4@3 d4@5",
  F: "[a4@3 ~ a4@2 g4@4 a4@4 ~@6 f3@2 bb3@2 d4@2 bb3@2 f3@2 bb3@2, a1 bb1, [c4,e4]@7 [bb3,d4,f4]@3 ~@6]/2", // C Bb
  G: "a4 a4@6 f4, f1, [c4,f4] ~", H: "g4@2 f4 ~@2 f4@3, [d2,a3], d4@3 d4@5",
  I: "[a4@3 ~ a4@2 g4@4 a4@4 ~@6 f3@2 bb3@2 d4@2 bb3@2 f3@2 bb3@2, a1 bb1, [c4,e4]@7 f4@5 ~@4, ~@7 [bb3,d4]@3 ~@6]/2", // C Bb
  J: "[~@2 a4 ~ a4@2 [a4,f5]@4 a4@4 bb4@2 ~@2 bb4 ~ bb4 ~ f5@3 ~ bb4@4 a4 bb4, [f2,c4,f4]@3 f2@5 bb2@3 [bb2,f4]@5, ~@3 c5@4 [d4,f4]@4 ~@5]/2", // Dm F5 Bb5 Dm
  K: "f2@3 ~ [c4,f4,a4]@2 ~ f2, [f4,a4,c5]@2 ~ [c4,f4,a4], ~@3 f2@4 ~", L: "bb2@3 ~@4 c3, [d4,f4]!2, ~@3 bb2@4 ~",
  M: "[~@2 a4@2 a4@2 [a4,f5]@4 a4@2 a4@2 bb4@2 ~@2 bb4 ~ bb4 ~ f5@3 ~ bb4@3 ~@3 f2@6 ~@2 [c4,f4,a4]@4 ~@2 f2@2, [f2,c4,f4]@3 f2@5 bb2@3 bb2@5 ~@3 f2@4 ~, ~@3 f4@4 [d4,f4]@4 f4@4 [c4,a4,c5]@5 ~@2 [c4,f4,a4]@2]/3", // Dm F F5 Dm F
  N: "[a4 ~ a4 ~ a4 ~ [a4,f5]@4 a4@2 a4@2 ~@4 bb4@2 bb4@2 f5@4 bb4@4 a4 bb4, [f2,c4,f4]@3 f2@5 bb2@3 [bb2,f4]@5, ~@3 f4@4 [d4,f4]@4 ~@5, ~@7 bb4@2 ~@7]/2", // Dm F5 Bb5 Dm
  O: "[a4 ~ a4 ~ a4 ~ [a4,f5]@4 a4@2 a4@2 ~@4 bb4 ~ bb4 ~ f5@3 ~ bb4@3 ~@3 f2@6 ~@2 [c4,f4,a4]@4 ~@2 f2@2, [f2,c4,f4]@3 f2@5 bb2@3 bb2@5 ~@3 f2@4 ~, ~@3 f4@4 [d4,f4]@4 f4@4 [c4,f4,a4]@5 ~@2 [c4,f4,a4]@2, ~@7 bb4@2 ~@15]/3", // Dm F F5 Dm F
  P: "bb2@3 ~@4 bb2, [d4,f4]!2, ~@3 bb2@4 ~", Q: "bb2@2 ~ bb2 ~@3 bb2",
  R: "[d5@4 bb4 ~ bb4@2 ~@2 bb4@3 ~@5 bb4@4 bb4@6 bb4@2 bb4@2, [d4,f4]@7 [d4,g4]@9, bb2@2 a2@2 g2@3 a2, ~@7 d5@2 ~@7]/2", // Dm G5
  S: "[f5@2 eb5 d5 eb5 d5 c5 ~@7 a2@2, [f4,bb4]@7 [d4,g4]@9, bb2@2 a2@2 g2@3 ~, ~@7 d5@2 bb4@7]/2", // Bb5 G5
  T: "[d5@4 bb4@2 bb4@2 ~@2 bb4@3 ~@7 bb4@2 c5@4 ~@2 a2@4, [d4,f4]@7 [d4,g4]@9, bb2@2 a2@2 g2@3 ~, ~@7 d5@3 ~@3 bb4@3]/2", // Dm G5
  U: "[f5@2 eb5 d5 eb5 d5 c5 ~@7 a2@2, [f4,bb4]@7 [d4,g4]@8 ~, bb2@2 a2@2 g2@3 ~, ~@7 d5@2 bb4@7]/2", // Bb5 G5
  V: "a4 a4@3 a4 f4 c4 f4, f1, [c4,f4] ~", W: "g4 g4@2 [c2,g4]@4 [c2,g4], [c2,c4,e4]@3 [c4,e4]@5",
  X: "a4 g4@2 [c2,f4]@4 [c2,g4], [c4,e4], c2@3 ~@5", // F5 C5 C
  Y: "[a4@2 a4 g4@2 g4@2 a1 ~@2 a4 f4@2 d4 ~ bb1, [c4,e4]@8 [bb1,d4,f4]@3 bb1@4 ~, a1@3 a1@4 bb4@3 ~ bb3@5, ~@7 c4]/2", // C Bb
  Z: "bb2@3 ~ [d4,f4]@4, [d4,f4] ~, ~@3 bb2@5", AA: "bb3 a3, [f4,bb4]", AB: "g3@3 a3, [g4,bb4]", AC: "g3@3 a3, [d4,g4]",
  AD: "g3 gb3, [d4,g4]", AE: "e3@3 gb3, [e4,g4]", AF: "[c2,c5,e5,g5]@3 [c2,g5]@4 [c2,g5], ~@3 [c5,e5]@5",
  AG: "a5 g5@2 [c2,e5]@4 [c2,g5], [c2,c5,e5]@3 [g4,c5]@5", AH: "a5@2 a5 [a1,a5]@4 [a1,a5], [a1,c5,e5]@3 [c5,e5]@5",
  AI: "bb5 a5@2 ~@2 c6 ~ bb1, [bb1,d5,f5]@3 [d5,f5,bb5]@5, ~@3 bb1@4 ~, ~@3 d6", // Bb
  AJ: "[bb2@3 ~ [d4,f4]@3 ~ eb4@12 [c4,eb4,g4,c5]@4, [d4,f4]@4 ~@3 [g4,bb4]@13 ~@4, ~@3 bb2@5 ~@16]/3", // Dm Cm Dm Gm
  AK: "[g3,d4,g4,bb4]", // Gm
  AL: "[~@4 g4!3 ~@2 f5 eb5 d5 eb5 d5@2 bb4@2 bb4@3 [c4,eb4,g4,c5]@4, f3@2 eb4@3 ~, [d4,f4,a4]@5 ~@2 g4@13 ~@4, ~@7 bb4@8 ~@9, ~@7 g5@2 ~@15]/3", // Cm Dm
  AM: "[bb3 ~@2 f5, [f4,bb4,d5]@3 ~, ~ bb2@3]/2", AN: "[f2@7 f2 f2@7 f2 f2@16, [c4,f4,a4]]/4",
})).s("gm_synth_strings_1").gain(0.32)

// other · piccolo
const piccolo = note(`<
  ~@22 A B ~@2 C D ~@2 A D ~@2 C D ~@23 A B ~@2 C D ~@2 A D ~@2 C B ~@18 A B ~@2 C D ~@2 A D ~@2 C D ~@14
>`.pickRestart({
  A: "a4@2 a4 g4 a4@2 a4@2", B: "a4@2 a4 g4 a4 g4 f4@2", C: "~@2 a4 g4 a4@2 a4@2", D: "a4@2 a4 g4 a4 g4 f4 g4",
})).s("gm_piccolo").gain(0.4).pan(0.3)

// bass · fretless bass
const bass = note(`<
  ~@20 A B A B A B A B A B A B A B A B ~ C D C D C D C D E F G H E F G H I@2 G J A B A B A B A B A B A B A B A B K L K L
  K L M N I@2 G H I@2 G H A B A B A B A B A B A B A B A O P@2 Q R P@2 S@2 T@2 ~@4
>`.pickRestart({
  A: "f2@4 ~@2 f2@7 ~ f2 ~", B: "bb1@4 ~@2 bb1@7 ~ bb1 ~", C: "bb1@3 bb1@4 a1", D: "g1@3 g1@4 a1", E: "f2@3 f2@4 f2",
  F: "d2@3 d2@4 d2", G: "a1@3 a1@4 a1", H: "bb1@3 bb1@4 bb1", I: "c2@3 c2@4 c2", J: "bb1@3 bb1@4 c2", K: "bb1 a1",
  L: "g1@3 a1", M: "g1 gb1", N: "e1@3 gb1", O: "bb1@4 ~@2 bb1@7 ~@3", P: "[eb2@3 c2]/2", Q: "g1", R: "f1",
  S: "[bb1 bb1@2 bb1]/2", T: "f1/2",
})).s("gm_fretless_bass").gain(0.45)

// bass · lead 8 bass lead · "Lead 8 (bass + lead)"
const bass_2 = note("<A B A C@2 ~@7 D E F G D E F G ~@25 D E F G D E F G ~@28 H I J@2 ~@34>".pickRestart({
  A: "~ f3 bb3 f3 ~ f3 bb3 f3, bb2 a2", B: "~ g3 bb3 g3 ~ g3 ~ f3, g2@2 d3 a2",
  C: "[~ g3 bb3 g3 ~ g3 ~ f3@4 ~@5, g2@2 d3 a2 ~@4]/2", D: "f3 a3 c4 f4 c4 a3 f3 a3", E: "d3 f3 a3 d4 a3 f3 d3 f3",
  F: "a2 c3 e3 a3 e3 c3 a2 c3", G: "bb2 d3 f3 bb3 f3 d3 bb2 d3", H: "g4 ~ g4@3 ~ g4@7 ~ g4 ~",
  I: "a4 ~ g4@3 ~ f4@7 ~ g4 ~", J: "[a4@3 ~ a4 ~ g4@3 ~ a4@3 ~ bb4@5 ~ a4 ~ f4@3 ~ d4 ~ c4@4]/2",
})).s("gm_lead_8_bass_lead").gain(0.3)

// chords · lead 8 bass lead · "Lead 8 (bass + lead)" · Bb
const lead_8_bass_lead = note("<~@19 [[bb2,d3,f3,bb3]] ~@36 [[bb2,d3,f3,bb3]] ~@31 [[bb2,d3,f3,bb3]] ~@30>")
  .s("gm_lead_8_bass_lead").gain(0.17)

// other · lead 1 square · "Lead 1 (square)"
const lead_1_square = note(`<
  ~@20 A B ~@2 A B ~@2 A B ~@2 A B ~@23 A B ~@2 A B ~@2 A B ~@2 A B ~@2 C@2 D E C@2 F G ~@4 H I J K A B ~@2 A B ~@2 A B
  ~@2 A B ~@16
>`.pickRestart({
  A: "~@2 f6@2 a5 ~ a5@3 ~ f6@2 a5@2 bb5@2", B: "~@2 f6@2 bb5 ~ bb5@2 ~@2 f6@2 bb5 ~ a5@2", C: "d5 eb5 d5 bb4@4 f4",
  D: "f5 eb5 d5 eb5@2 d5 c5@2", E: "d5 c5 bb4 a4@3 bb4 c5", F: "b4 c5 b4 g4@4 d4", G: "b4 c5 b4 g4@4 a4",
  H: "g5@3 g5@4 g5", I: "a5 g5@2 e5@4 g5", J: "a5@2 a5 a5@4 a5", K: "bb5 a5@2 bb5@2 c6 d6@2",
})).s("gm_lead_1_square").gain(0.18)

// other · tinkle bell
const tinkle_bell = note("<~@81 A@2 B C A@2 B C ~@16 D E F G D H I@2 G@4 ~@2>".pickRestart({
  A: "g4 b4 d5 g5 d5 b4 g4 b4", B: "e4 g4 b4 e5 b4 g4 e4 g4", C: "f4 a4 c5 f5 c5 a4 f4 a4",
  D: "bb3 d4 f4 bb4 f4 d4 bb3 d4", E: "bb3 d4 f4 bb4 bb3 d4 g4 d4", F: "a3 d4 f4 a4 f4 d4 a3 d4",
  G: "c4 e4 g4 c5 g4 e4 c4 e4", H: "bb3 d4 f4 bb4 g3 bb3 d4 g4", I: "c4 f4 a4 c5 a4 f4 c4 f4",
})).s("gm_tinkle_bell").gain(0.25)

// drums · rim
const rim = s("rim").struct("<~@37 [~ x ~ x]!7 [~@4 x ~@5 x ~ x ~ x!2] [~ x ~ x]!12 ~@24 [~ x ~ x]!8 ~@30>").gain(0.54)

// drums · kick
const kick = s("bd").struct("<~@20 [x ~@2 x ~@3 x]!16 [x ~@2 x ~@4] [x ~@2 x ~@3 x]!36 ~@8 [x ~@2 x ~@3 x]!24 ~@14>")
  .gain(0.54)

// drums · snare
const snare = s("sd").struct("<~@20 [~ x ~ x]!16 ~@21 [~ x ~ x]!16 ~@16 [~ x ~ x]!16 ~@14>").gain(0.54)

// drums · ride
const ride = s("rd").struct("<~@20 [x!8]!16 [x!4 ~@4] [x!8]!36 ~@8 [x!8]!24 ~@14>").gain(0.3)

// drums · splash
const splash = s("cr").struct("<~@113 [~@7 x]!5 ~>").gain(0.48)

// drums · cowbell
const cowbell = s("cb").struct("<~@80 [~@12 x!3 ~] ~@38>").gain(0.54)

// drums · triangle
const triangle = s("triangles:30").struct("<~@36 [~@10 x!3 ~ x ~] ~@82>").gain(5.23)

stack(
  synth_strings_1, piccolo, bass, bass_2, lead_8_bass_lead, lead_1_square, tinkle_bell, rim, kick, snare, ride, splash,
  cowbell, triangle
)

More by Erasure