Strudelify
Walking on The Moon cover art

Walking on The Moon

The Police

KeyD minorTempo144 bpm
0:00/0:00
// Walking on The Moon — The Police
// 144 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 179 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/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, A@4 for four bars: edit a riff to change every repeat.

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@17 A@2 B C A@2 B D A@2 B D A@2 B D ~@8 A@2 B D A@2 B D A@2 B D A E B D A@2 F G H I F G H I J G H I F G H K ~@8 A@2 B
  D A@2 B D A@2 B D A E B D A@2 F G H I F G H I J G H I F G H K ~@16 A@2 B D A@2 B D A@2 B D A E B D A@2 B D A@2 B D A@2
  B D A E B D A@2 B D A@2 B D A@2 B D ~@2
>`.pickRestart({
  A: "~@3 [c4,d4,g4] ~@5 [c4,d4,g4] ~@2", B: "~@3 [d4,f4,bb4,d5] ~@5 [d4,f4,bb4,d5] ~@2",
  C: "~@3 [g4,c5,e5] ~@5 [e4,g4,c5,e5] ~@2", D: "~@3 [e4,g4,c5,e5] ~@5 [e4,g4,c5,e5] ~@2",
  E: "~@6 [c4,d4,g4]@3 ~@9 [c4,d4]@2 ~@4", F: "~@3 [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4,bb4] ~@2",
  G: "~@3 [a3,c4,f4,a4] ~@5 [a3,c4,f4,a4] ~@2", H: "~@3 [c4,e4,g4,c5] ~@5 [c4,e4,g4,c5] ~@2",
  I: "~@3 [bb3,d4,g4,bb4] ~@5 [bb3,d4,g4,bb4] ~@2", J: "~@3 [bb3,d4,f4,bb4] ~@5 [bb3,d4,f4] ~@2",
  K: "~@2 [c4,e4,g4,c5] ~@5", // C
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@17 A@2 ~@2 B@2 ~@2 B A ~@2 A@2 ~@10 C@2 ~@2 C D ~@2 B A ~@2 E F ~@2 B@2 ~@8 G ~@15 C@2 ~@2 C D ~@2 B A ~@2 E F ~@2
  B@2 ~@8 G ~@23 B C ~@2 C D ~@2 B A ~@2 E F ~@2 C@2 ~@2 C D ~@2 B A ~@2 E F ~@2 C@2 ~@2 C D ~@2 B A ~@4
>`.pickRestart({
  A: "~@3 [d3,f3] ~@5 [d3,f3] ~@2", B: "~@3 f3 ~@5 f3 ~@2", C: "~@3 f3 ~@5 [d3,f3] ~@2",
  D: "~@6 [d3,f3]@3 ~@9 f3@2 ~@4", E: "~@6 f3@3 ~@9 f3@2 ~@4, ~@5 d3@2 ~@17", F: "~@6 f3@3 ~@9 [f3,g4]@2 ~@4",
  G: "~@9 bb4 ~@2",
})).s("gm_electric_guitar_clean").gain(0.18)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A@56 B@3 C D E F C D G F H D I F C D J K@6 L@16 M@5 C D N O P D E Q C D N R C D S T@2 U@8 L@32 V@2 A@8 W@8 X@2 ~
>`.pickRestart({
  A: "[~@12 c2@4 ~@2 c2@4 d2@37 ~ f2@5 ~ e2@4 c2@37 ~ c2@4 ~@2 c2@4 d2@37 ~ f2@5 ~ e2@4 c2@26]/8",
  B: "[~@12 c2@4 ~@2 c2@4 d2@36 d2@2 g2@3 ~ g2@2 g2@6]/3", C: "bb1@5 ~ bb1@5 ~ bb1@9 ~ c2@2",
  D: "f1@2 ~@2 f1@4 ~@2 f1 ~ f1@7 ~@3 f1@2", E: "c2@2 ~ c2@2 ~ c2@4 ~ c2", F: "g1@3 ~ g1@3 ~@3 g1 ~ g1@6 a1@6",
  G: "c2@2 ~@2 c2@2 c2@5 ~ c2@6 ~@4 c2@2", H: "bb1@5 ~ bb1@4 ~@2 bb1@9 ~ c2@2", I: "c2@4 c3@2 c2@5 ~ c2@7 ~@3 c2@2",
  J: "c2@5 ~ c2@5 ~ c2@7 ~@3 g1@2", K: "[c2@6 ~@6 c2@4 ~@2 c2@4 d2@35 ~@3 f2@5 ~ e2@4 c2@37 ~ c2@5 ~ c2@4 d2@26]/6",
  L: "[~@12 f2@5 ~ e2@4 c2@37 ~ c2@4 ~@2 c2@4 d2@37 ~ f2@5 ~ e2@4 c2@37 ~ c2@4 ~@2 c2@4 d2@26]/8",
  M: "[~@12 f2@5 ~ e2@4 c2@37 ~ c2@5 ~ c2@4 d2@35 ~ d2@2 g2@3 ~ g2@2 g2@6]/5", N: "c2@3 ~ c2@2 c2@4 ~@2 c2@7 ~@3 c2@2",
  O: "g1@2 ~@2 g1 ~ g1@3 ~ g1@2 g1@7 ~@3 g1@2", P: "bb1@2 ~ bb1@2 ~ bb1@3 ~@2 c2", Q: "g1@6 ~@4 g1 ~ g1@6 ~@4 g1@2",
  R: "g1@3 ~ g1@5 ~ g1 ~ g1@5 ~ g1@5 ~", S: "c2@4 ~@2 c2@5 ~ c2@3 ~ c2@3 ~@3 g1@2", T: "[c2@3 ~@3 c2@2 ~ c2@2 d2@13]/2",
  U: "[~@12 f2@4 ~@2 e2@4 c2@37 ~ c2@4 ~@2 c2@4 d2@37 ~ f2@5 ~ e2@4 c2@37 ~ c2@4 ~@2 c2@4 d2@26]/8",
  V: "[~@6 f2@2 ~ e2@2 c2@13]/2",
  W: "[~@12 c2@4 ~@2 c2@4 d2@37 ~ f2@5 ~ e2@4 c2@37 ~ c2@4 ~@2 c2@4 d2@37 ~ f2@4 ~@2 e2@4 c2@26]/8",
  X: "[~@12 c2@5 ~ c2@4 d2@26]/2",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_3 = note(`<
  ~ A@4 B@4 C@4 B@4 ~@4 C@4 B@4 C@4 A@4 B@4 A@4 B@4 C@4 B@4 ~@2 D E F G D H F I J H F I K H L@2 C@4 B@4 A@4 B@4 C@4 B@4
  ~@2 D E F G D H F I J H F I K H L@2 A@4 B@4 C@4 B@4 A@4 B@4 C@4 B@4 A@4 B@4 C@4 B@4 A@4 B@4 C@4 ~@2
>`.pickRestart({
  A: "[~ [f3,c4,d4,g4]@14 ~]/4", B: "[~@6 [d3,f3,c4,d4,g4]@85 ~@5]/4", C: "[~@7 g4@83 ~@6, ~@6 [d3,f3,c4,d4]@83 ~@7]/4",
  D: "~@6 [d4,f4,bb4]@17 ~", E: "~ [a3,c4,f4,a4]@3", F: "~@6 [e4,g4,c5]@17 ~", G: "~@2 [d4,g4,bb4]@5 ~",
  H: "~@6 [c4,f4,a4]@17 ~", I: "~@6 [d4,g4,bb4]@17 ~", J: "~@6 [bb3,d4,f4,bb4]@17 ~", K: "~@3 [d4,f4,bb4]@7 ~@2",
  L: "[~@6 [e4,g4,c5]@35 ~@7]/2", // C
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_4 = note(`<
  ~ A@4 ~@28 A@4 ~@4 A@4 ~@14 B ~ C D B E C ~@2 E C B D E F@2 ~@8 A@4 ~@14 B ~ C D B E C ~@2 E C B D E F@2 A@4 ~@12 A@4
  ~@12 A@4 ~@12 A@4 ~@10
>`.pickRestart({
  A: "[~ d3@14 ~]/4", B: "~@6 bb3@17 ~", C: "~@6 c4@17 ~", D: "~@2 bb3@5 ~", E: "~@6 a3@17 ~", F: "[~@6 c4@35 ~@7]/2",
})).s("gm_electric_guitar_clean").gain(0.11).pan(0.4)

// other · synth brass 2 · "SYNBRASS 2"
const synth_brass_2 = note(`<
  ~@133 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "~@5 f5 e5@5 d5", B: "c5 bb4 a4 ~",
})).s("gm_synth_brass_2").gain(0.15).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_5 = note(`<
  ~ A@4 B@4 C@4 B@4 ~@4 C@4 B@4 C@4 A@4 B@4 A@4 B@4 C@4 B@4 ~@2 D@4 E@8 F G@3 C@4 B@4 A@4 B@4 C@4 B@4 ~@2 D@4 E@8 F G@3
  A@4 B@4 C@4 B@4 A@44 ~@2
>`.pickRestart({
  A: "[~@5 [f3,c4,d4,g4]@42 ~]/4", B: "[~@5 [d3,f3,c4,d4,g4]@42 ~]/4",
  C: "[~@11 g4@83 ~@2, ~@10 [d3,f3,c4,d4]@83 ~@3]/4", // Dm7
  D: "[~@10 [d4,f4,bb4]@17 ~@7 [a3,c4,f4,a4]@18 ~@6 [e4,g4,c5]@17 ~@7 [d4,g4,bb4]@14]/4", // Bb F C Gm
  E: "[~@10 [d4,f4,bb4]@17 ~@7 [c4,f4,a4]@17 ~@7 [e4,g4,c5]@17 ~@7 [d4,g4,bb4]@17 ~@7 [bb3,d4,f4,bb4]@17 ~@7 [c4,f4,a4]@17 ~@7 [e4,g4,c5]@17 ~@7 [d4,g4,bb4]@14]/8", // Bb F C Gm Bb F C Gm
  F: "~@5 [d4,f4,bb4]@7", G: "[~@10 [c4,f4,a4]@17 ~@7 [e4,g4,c5]@35 ~@3]/3",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.7)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_6 = note(`<
  ~ A@4 ~@28 A@4 ~@4 A@4 ~@14 B@2 C@2 D@4 ~ E@4 F@3 ~@8 A@4 ~@14 B@2 C@2 D@4 ~ E@4 F@3 A@4 ~@58
>`.pickRestart({
  A: "[~@5 d3@42 ~]/4", B: "[~@10 bb3@17 ~@21]/2", C: "[~@10 c4@17 ~@7 bb3@14]/2",
  D: "[~@10 bb3@17 ~@7 a3@17 ~@7 c4@17 ~@21]/4", E: "[~@10 a3@17 ~@7 c4@17 ~@7 bb3@17 ~@7 bb3@14]/4",
  F: "[~@10 a3@17 ~@7 c4@35 ~@3]/3",
})).s("gm_electric_guitar_clean").gain(0.05).pan(0.7)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_7 = note("<~@59 A@4 B@4 C@4 D E@3 ~@26 A@4 B@4 C@4 D E@3 ~@62>".pickRestart({
  A: "[~@16 [d4,f4,bb4]@10 ~@14 [a3,c4,f4,a4]@11 ~@13 [e4,g4,c5]@10 ~@14 [d4,g4,bb4]@8]/4", // Bb F C Gm
  B: "[~@8 [d4,f4,bb4]@5 ~@7 [c4,f4,a4]@5 ~@7 [e4,g4,c5]@5 ~@7 [d4,g4,bb4]@4]/4", // Bb F C Gm
  C: "[~@8 [bb3,d4,f4,bb4]@5 ~@7 [c4,f4,a4]@5 ~@7 [e4,g4,c5]@5 ~@7 [d4,g4,bb4]@4]/4", D: "~@2 [d4,f4,bb4]",
  E: "[~@16 [c4,f4,a4]@10 ~@14 [e4,g4,c5]@21 ~@11]/3", // F C
})).s("gm_electric_guitar_clean").gain(0.02).pan(0.8)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_8 = note("<~@59 A@2 B@6 ~ C@7 ~@26 A@2 B@6 ~ C@7 ~@62>".pickRestart({
  A: "[~@8 bb3@5 ~@11]/2", B: "[~@8 c4@5 ~@7 bb3@5 ~@7 bb3@5 ~@7 a3@5 ~@7 c4@5 ~@11]/6",
  C: "[~@16 a3@10 ~@14 c4@10 ~@14 bb3@10 ~@14 bb3@10 ~@14 a3@10 ~@14 c4@21 ~@11]/7",
})).s("gm_electric_guitar_clean").gain(0.01).pan(0.8)

// bass · piano · "A.PIANO 1"
const bass_2 = note("<A@16 B@3 ~@160>".pickRestart({
  A: "[~@6 c2@2 ~ c2@2 d2@18 ~ f2@2 ~ e2@2 c2@18 ~ c2@2 ~ c2@2 d2@18 ~ f2@2 ~ e2@2 c2@13]/8",
  B: "[~@6 c2@2 ~ c2@2 d2@20 ~@5]/3",
})).s("gm_piano").gain(0.25)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@5 B A C A@5 C A D A@9 B A B A@3 B ~@5 E ~ E A@14 D B ~@2 F@15 G ~ E ~ E ~@4 C A@14 B ~@2 F@7 G F@7 G ~@8 A B@2 A C
  A C@9 B A@15 B ~@3 E ~@3 B A@3 H A C A@3 I A B ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@5 x ~ x", C: "~@3 x ~ x ~@3 x ~@2", D: "~@3 x ~ x ~@3 x ~ x", E: "~@9 x ~ x", F: "x!4",
  G: "x ~@2 x ~@2 x ~@2 x ~ x", H: "~ x ~@2", I: "~@3 x ~@7 x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct(`<
  ~@9 A@2 B A@3 B A@5 C A@2 B A@8 D@2 E F D@2 G D A@10 H A@3 D A D A ~ A@3 B I A J D@2 B D A@3 D@2 ~@3 K L M@2 A@7 D A@7
  ~ N O A@2 P Q A@2 B A B@2 F R D S B ~@26 D A B A@3 B A@3 B A T A ~ D U T V D T ~@2 D@2 W X Y D@2 A@5 ~@2
>`.pickRestart({
  A: "~ x", B: "~@6 x ~@4 x", C: "~ x ~ x ~@2", D: "~@3 x!2 ~", E: "~@6 x ~ x ~@2 x", F: "x ~@2 x!2 ~",
  G: "~@8 x ~@2 x", H: "~@5 x!2 ~@5", I: "~@6 x ~ x!2 ~@2", J: "~@3 x ~@2 x ~ x ~@2 x", K: "~@3 x!3", L: "x!2 ~@4",
  M: "x!6", N: "~@3 x ~ x", O: "x ~ x!3 ~", P: "~@5 x!2 ~@4 x", Q: "x", R: "~@2 x!2 ~@2 x ~@4 x", S: "x ~@4 x!2 ~@4 x",
  T: "x!2 ~ x!2 ~", U: "x!5 ~", V: "x ~ x ~@3 x ~ x!2 ~@2", W: "~@5 x!2 ~ x ~@2 x", X: "x ~ x ~@2 x ~@2 x ~@3",
  Y: "~@5 x!2 ~ x ~@3",
})).gain(0.44)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@99 A B ~@13 C ~@43 D E F G H ~@3 I ~@3 I@2 ~@7>".pickRestart({
  A: "~@2 x", B: "~ x ~@4", C: "~@3 x", D: "~@3 x ~ x ~@4 x!2", E: "~@4 x!2 ~@3 x!3", F: "~@4 x!2 ~@6", G: "~@10 x!2",
  H: "~@4 x!2 ~@4 x!2", I: "~@5 x ~@6",
})).gain(0.22)

// drums · snare
const snare = s("sd").struct("<~@116 A ~@8 B@2 C D E@3 F G E@8 ~@37>".pickRestart({
  A: "~@12 x ~@4 x!2 ~@5", B: "~@5 x ~@5 x", C: "~ x ~@3 x ~@5 x", D: "~@3 x ~@4 x ~@3 x ~@9 x ~",
  E: "~@5 x ~ x ~ x ~ x", F: "~@5 x ~@2 x ~ x ~", G: "x ~@4 x ~ x ~ x ~ x",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C A C D C@2 A E F C G H C@2 I J C@14 K L M L M L M N O P C@4 J Q C J C J B R S R K J T C@15 K C U V W X@3 Y C@3 B
  C@3 B C@2 Z@2 C@2 AA AB AC K H C@2 K Q AD Q K Q C@6 AE AF@3 AG AH AF@2 AI C@5 AJ AK C@4 B AL C@16 AD AM M AC C@2 K Q K
  AN J C@3 AO C@8 ~@2
>`.pickRestart({
  A: "x ~@3 x ~ x ~@3 x!3 ~@3 x!3 ~@3 x ~", B: "x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x!2", C: "x ~ x!2 ~ x!2 ~ x!2 ~ x",
  D: "x ~@3 x ~ x ~@3 x!3 ~@3 x ~ x ~@3 x ~", E: "x ~ x!2 ~ x!2 ~@2 x ~@2", F: "x ~@4 x!2 ~@4 x",
  G: "x ~ x!2 ~@2 x ~@4 x", H: "x ~@2 x ~@2 x ~ x!2 ~ x", I: "x ~@2 x ~@2 x ~ x ~@3", J: "~@3 x ~ x!2 ~ x!2 ~ x",
  K: "x ~ x!2 ~ x!2 ~ x ~@3", L: "~@4 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x!2", M: "x ~@3 x!3 ~@3 x!3 ~@3 x ~@7",
  N: "~@6 x ~@3 x ~ x ~@3 x ~ x ~@3 x!2", O: "x!9 ~@3", P: "~@3 x ~@5 x ~ x", Q: "~@3 x ~@2 x ~ x!2 ~ x",
  R: "x ~@2 x ~ x!2 ~ x!2 ~ x", S: "x ~@5 x ~@3 x ~ x ~@3 x ~ x ~@3 x!2", T: "x ~@3 x!3 ~@3 x ~ x ~@3 x ~ x ~@3 x ~",
  U: "x ~@3 x!3 ~@3 x!3 ~@3 x!3 ~@5", V: "x ~@3 x ~ x ~@2 x!4 ~@2 x!4 ~@2 x!3", W: "x ~@2 x!4 ~ x ~ x ~ x ~ x ~ x ~@7",
  X: "x!4 ~ x!5 ~ x", Y: "x!4 ~ x!5 ~@2", Z: "~ x!3 ~ x!2 ~ x!2 ~ x", AA: "~@2 x ~ x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x!2",
  AB: "x ~@2 x!4 ~@3 x!3 ~@3 x ~@7", AC: "~@6 x ~ x!2 ~ x", AD: "x ~ x!2 ~ x!2 ~ x!2 ~@2", AE: "x ~ x!2 ~@8",
  AF: "~@3 x ~ x ~@3 x ~ x", AG: "~@4 x!3 ~@3 x!3 ~@3 x!3 ~@3 x!2", AH: "x ~@2 x ~ x ~@3 x ~ x",
  AI: "~@4 x!3 ~@3 x!3 ~@11", AJ: "x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2 x ~ x",
  AK: "~@3 x ~ x ~@3 x ~ x ~@4 x ~ x ~@3 x ~", AL: "~@4 x!2 ~@4 x ~ x ~@3 x ~ x ~@3 x ~",
  AM: "~@6 x ~@5 x ~@3 x ~ x ~@3 x!2", AN: "~@4 x!3 ~@3 x!3 ~@3 x!2 ~@6", AO: "x ~ x!2 ~ x!2 ~ x ~@2 x",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A ~ B ~@3 C ~@15 C ~ C ~ C ~ C ~ C ~@4 D@2 ~ D ~ D ~@5 C ~@17 C ~@3 C ~@3 D ~@9 D@2 ~@2 D ~ C E B ~@3 C ~ D ~ C
  ~@15 C ~@29 D ~ B E ~@2 B ~ C@2 ~@15
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~@9 x ~ x", D: "~@11 x", E: "~ x ~@2",
})).gain(0.33)

// drums · crash
const crash = s("cr").struct(`<
  ~@16 A ~@15 B ~ C ~ B ~ C ~ B ~@33 B ~@3 B ~@19 A ~@17 A ~@39 A ~@3 A ~@2 B ~@15
>`.pickRestart({
  A: "~@11 x", B: "~@9 x ~ x", C: "~@6 x!2",
})).gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@117 A B C D B C@2 E F G F G F G F G F G F G F G F H F ~@37>".pickRestart({
  A: "~@9 x ~@3 x ~@8 x ~", B: "~@2 x ~@6 x ~@4 x ~@6 x ~@2", C: "~ x ~@7 x ~@3 x ~@7 x ~@2",
  D: "~ x ~ x ~ x!2 ~@2 x ~ x!2 ~@2 x!2 ~@4 x ~@2", E: "~ x ~@2 x!3 ~@3 x!3 ~@2 x ~ x!2 ~@5",
  F: "~@2 x!2 ~ x ~@2 x!2 ~ x", G: "~@2 x!2 ~ x!5 ~ x", H: "~@2 x!2 ~@2 x!4 ~ x",
})).gain(0.33)

stack(
  electric_guitar_clean, electric_guitar_clean_2, bass, electric_guitar_clean_3, electric_guitar_clean_4, synth_brass_2,
  electric_guitar_clean_5, electric_guitar_clean_6, electric_guitar_clean_7, electric_guitar_clean_8, bass_2, kick, rim,
  rim_soft, snare, hihat, open_hat, crash, ride
// … 1 more lines

More by The Police