Strudelify

Next to You

The Police

KeyE majorTempo175 bpm
0:00/0:00
// Next to You — The Police
// 175 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(175/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 · distortion guitar · "Guitar 1"
const distortion_guitar = note("<~ A@16 ~@8 A@8 ~@30 A@2 ~ B A@2 ~ B A@2 ~ C A@2 ~@24>".pickRestart({
  A: "[~@3 [d3,a3,d4]@2 [c#-1,e3,a3]@2 [e2,b2,e3]@2 ~@7]/2", B: "~@2 [b2,e3]@2 [b2,e3]@2 [b2,e3] ~", C: "~ [b2,e3]!3",
})).s("gm_distortion_guitar").gain(0.45).pan(0.4)

// chords · distortion guitar · "Guitar 2"
const distortion_guitar_2 = note(`<
  ~@17 A@4 B@5 ~@7 A@4 C@2 D@8 ~ E@3 ~@4 F@7 G H ~ I@2 J ~ I@2 K ~ I@2 L ~ A@4 C@2 D@8 ~@10
>`.pickRestart({
  A: "[~@7 [c#2,c#3,g#3,c#4]@8 [d2,d3,a3,e4]@8 [e2,b3,e4]@9, ~@46 e3 ~@17]/4", // C#5 Dsus2 E5
  B: "[~@14 [c#2,c#3,g#3,c#4]@16 [d2,d3,a3,e4]@16 b3@16 a3@13 ~@5, ~@46 [e2,e3,e4]@29 ~@5]/5", // C#5 Dsus2 E
  C: "[~@7 [c#2,c#3,g#3,c#4]@8 [d2,d3,a3,e4]]/2", // C#5 Dsus2
  D: "[~@15 a3@8 ~@32 [d2,d3,a3]@9, ~@7 e4@23 ~ e4@16 e4@17, ~@7 [e2,e3,b3]@16 [d2,d3,a3]@16 [e2,e3,b3]@16 ~@9]/8", // D5 E5 D5 E5
  E: "[[g2,d3], g1 ~@2]/3", // G5
  F: "[~@16 g4@2 a4@2 a4@2 g4@2 a4@2 a4@2 g4@2 a4@2 a4@2 g4@2 a4@2 a4@2 g4@2 a4@2 g4@2 a4@2 g4@2 a4@2 a4@2 g4 ~ a4@2 a4@2 g4@2 a4@2 a4@2 g4@2 a4@2 a4@2 g4@2 a4@2 g4@2 a4@2 [g4,b4]@2 [a4,c#5]@2 [a4,c#5]@2 [g4,b4]@2 [a4,c#5]@2 [a4,c#5]@2 [g4,b4]@2 [a4,c#5]@2 [g4,b4]@2 [a4,c#5]@2 [a4,c#5]@2 [g4,b4]@2 [a4,c#5]@2 [a4,c#5]@2 [g4,b4]@2 [a4,c#5]@2, ~@4 c#4@47 ~@5]/7", // G A G A G A G A …
  G: "[g4,b4,f#5] [a4,c#5,g5]!2 [g4,b4,f#5] [a4,c#5,g5]!2 [g4,b4,f#5] [a4,c#5,g5]", H: "[g4,b4,e5]@3 ~",
  I: "[~@7 [b2,e3]@3 ~@6]/2", J: "[b2,e3]!2 ~@2", K: "[b2,e3]@2 [b2,e3] ~@5", L: "[b2,e3]@2 e3@5 ~, ~@2 b2@3 ~@3",
})).s("gm_distortion_guitar").gain(0.35).pan(0.7)

// chords · overdriven guitar · "Guitar 3"
const overdriven_guitar = note("<~@19 A@3 ~ B@3 ~@9 A@3 ~@2 C@8 ~@3 D@2 E@6 F G@4 ~@15 A@3 ~@2 C@8 ~@9>".pickRestart({
  A: "[~@7 [e2,e3,f#3,g#3,b3]@16 ~]/3", B: "[~@14 [e2,e3,g#3]@23 ~@11, ~@7 b3@16 ~, ~@14 f#3@15 ~@19]/3",
  C: "[[e2,b2,e3,f#3,g#3]@15 [d2,a2,d3,e3,f#3]@16 [e2,b2,e3,f#3,g#3]@16 [d2,a2,d3,e3,f#3]@16 ~]/8", // E D E D
  D: "[~ a4@2 g4 a4@2 g4 g4@9]/2", E: "[~ g4@2 e4 g4@2 e4 g4@13 g4@18 ~ g4@2 a4@7, ~@19 e4 ~@4]/6",
  F: "~@2 a4@4 e4@2 a4@3 ~ g4@2 e4@2", G: "[a4 ~ g4@2 ~@14 g5@46, ~@2 a4@61 ~]/4",
})).s("gm_overdriven_guitar").gain(0.3).pan(0.4)

// chords · electric guitar clean · "Guitar 4"
const electric_guitar_clean = note(`<
  ~ A B C B C B C B C B@6 D ~@9 E B@2 F B@2 D ~@2 G@3 ~@10 H@4 ~@4 I@7 ~@2 J@3 ~ K@8 ~@24
>`.pickRestart({
  A: "~@3 [a2,d3]@2 [e2,a2]@2 [b1,e2]", B: "[e2,b2]!8", C: "[e2,b2]!3 ~@5", D: "[e2,b2] ~@7", E: "~@2 b2 [e2,b2]!5",
  F: "[e2,b2]!3 [e2,a2]!5", G: "[~@7 [b3,g#4]@15 ~@2, ~@7 f#4@12 ~@5, ~@7 e2@10 ~@7, ~@7 e4@7 ~@10]/3",
  H: "[g1,g2,d3,f3,a#3]/4", I: "[[a1,a2,e3,a3,c#4]@25 ~@3]/7", J: "[~@7 [e3,b3,e4]@17]/3",
  K: "[~@14 [e3,b3,e4]@35 ~@15]/4", // E5
})).s("gm_electric_guitar_clean").gain(0.36).pan(0.6)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A B C B C B C B C B C B C B D E F@5 G@4 B C B C B D E F@5 H@5 I@2 J@2 K L M N O L P L Q R S R T R U R V E W@2 X Y
  Z@2 X E W@2 X AA AB@5 AC@4 AD@4 AE@4 AF@2 AG@2 AH@3
>`.pickRestart({
  A: "~@3 d2!2 a1!2 e1", B: "e1!2 e1@2 e1!2 e1@2", C: "e1!3 d2!2 a1!2 e1", D: "~@3 d2@2 a1@2 e1", E: "e1 ~@7",
  F: "[~@14 c#2@12 b1@2 c#2 ~ d2@12 c#2@2 d2 ~ e2@12 g#1@2 a1@2 e2@4 g#1@2 a1@2 ~@4 g#1@2 a1@2 g#1@2, ~@35 e2@4 ~]/5",
  G: "[c#2@10 b1@2 c#2 ~ d2@12 c#2@2 d2@2 e2@24 d2@2 d2@2 a1@2 a1 ~ e1@2]/4",
  H: "[c#2@10 b1@2 c#2 ~ d2@12 c#2@2 d2@2 e2@16 e2@4 e2@4 e2@4 e2@2 b1@2 d2@12 b1@2 d2@2 b1@2]/5",
  I: "[d#2@2 b1@2 d2@2 b1@2 d2@2 b1@2 d2 ~ e2@12 e2 ~ e2@3 ~]/2",
  J: "[e2 ~ e2 ~ e2 ~ e2 ~ e2@2 b1@2 c#2@2 d2@12 b1@2 c#2@2 b1@2]/2", K: "d2 b1 c#2 b1 d2 b1 b1@2",
  L: "g1 ~ g1 g2 ~ g1 f2 ~", M: "e2 ~ f2 ~@5", N: "g1@2 ~@2 g1@2 g2@2 ~@2 e2@2 f2@3 ~", O: "e2@3 ~@13",
  P: "e2@3 ~ f2@2 ~@10", Q: "e2 ~@7", R: "a1 ~ a1 a2 ~ a1 g2 ~", S: "f#2@2 ~@2 [f2,g2]@3 ~@9", T: "f#2 ~@7",
  U: "f#2 ~ g2 ~@5", V: "f#2@2 ~@4 d2 ~ d2@2 a1 ~ a1 ~ e1 ~", W: "[~@14 d2@4 e2 ~ e2@4 d2 ~ e2 ~ e2@4]/2",
  X: "d2@2 e2 ~ e2@2 d2 ~ d2@2 a1 ~ a1@2 e1 ~", Y: "e1 ~@3", Z: "[~@14 d2@4 e2 ~ e2@4 d2@2 e2 ~ e2@4]/2",
  AA: "e1@3 ~@13",
  AB: "[~@14 c#2@11 b1@3 ~ d2@12 ~ c#2@2 d2@2 e2@12 g#1@2 a1@2 e2@4 g#1@2 a1@2 e2@4 g#1@2 a1@2 e2@2, ~@14 c#2 ~@25]/5",
  AC: "[c#2@5 b1 c#2 d2@6 c#2 d2 e2@6 g#1 a1 e2@2 g#1 a1 e2@2 g#1 a1 g#1, ~@28 c#2 ~@35]/4",
  AD: "[c#2@5 b1 c#2 d2@6 c#2 d2 e2@6 g#1 a1 e2@2 g#1 a1 e2@2 g#1 a1@2]/4",
  AE: "[c#2@5 b1 c#2 d2@6 c#2 d2 ~@6 g#1 a1 ~@2 g#1 a1 ~@2 g#1 a1 e2, ~@30 e2@15 ~ e2@6 ~@2 e2@7 ~@3]/4",
  AF: "[~@5 f#1 g1 d2@2 f#1 g1 ~@2 f#1 g1@2, d2@12 ~@10 d2@7 ~@3]/2",
  AG: "[~@11 a1@3 ~@4 g#1@2 a1@2 ~@4 g#1@2 a1@4, e2@12 ~@2 e2@7 ~ e2@6 ~@4, ~@5 g#1 ~@10]/2",
  AH: "[d2@5 f#1 g1 d2@2 f#1 g1 ~@2 f#1 g1 e2@7 ~@2, ~@22 d2@7 ~@19]/3",
})).s("gm_electric_bass_finger").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  A B ~@8 C@5 D ~ E F G@6 H C@5 D ~ E F G@13 I J I J I J I K I J I K I J I J ~ L M N ~ E M C ~@2 M O ~ E F G@13 J ~@8
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "x!2 ~@2 x!2 ~@2", D: "x!2 ~@2 x!4", E: "~@5 x ~ x", F: "~@3 x!3 ~ x",
  G: "x!2 ~ x!3 ~ x", H: "x!2 ~ x!3 ~@2", I: "x ~@2 x ~ x ~@2", J: "x", K: "x ~@4 x ~@2", L: "~@7 x", M: "~@4 x!2 ~@2",
  N: "x ~@2 x!2 ~@3", O: "x ~@3 x!2 ~@2",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<A B C@2 D C E C@2 F C@6 G H C@7 F C@6 G H C@36 E C@5 ~ I C@14 ~@9>".pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "~ x ~ x", D: "~@4 x ~@7 x!2 ~@2", E: "~@4 x!2 ~@6 x ~@3", F: "~@2 x ~@3 x!2", G: "x",
  H: "~@3 x", I: "~@4 x!3 ~",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<~@10 A@6 ~@10 A@6 ~@16 B C A C B D A D ~@45>".pickRestart({
  A: "x!8", B: "x!4 ~ x!2 ~", C: "x!7 ~", D: "x!3 ~ x!4",
})).gain(0.36)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@48 A B ~ B A C ~ C ~@45>".pickRestart({
  A: "~@4 x ~@2 x", B: "~@7 x", C: "~@3 x ~@4",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~ A B C@2 D C@3 E ~@54 B C ~@2 B C ~@2 B C ~@2 B C ~@23>".pickRestart({
  A: "~@7 x", B: "~ x!2 ~", C: "x!2", D: "~ x ~@6 x ~@7", E: "x ~@2 x!2 ~ x ~",
})).gain(0.41)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@2 A ~@61 A ~@3 A ~@3 A ~@3 A ~@24>".pickRestart({
  A: "~@3 x ~@4",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A B C D E C F G H I ~@53 B C ~@2 B C ~@2 B C ~@2 B C ~@23>".pickRestart({
  A: "~@5 x!2 ~", B: "~ x!7", C: "x!8", D: "x!4 ~ x!3", E: "x ~ x ~@2 x ~ x!2 ~ x ~ x ~ x ~",
  F: "x ~@3 x ~ x ~@4 x!2 ~ x ~", G: "~@2 x ~ x ~ x ~@2 x!2 ~ x ~ x ~", H: "~ x!2 ~@2 x!3", I: "x",
})).gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~ A B C@2 ~ D E F G ~@54 B C ~@2 B C ~@2 B C ~@2 B C ~@23>".pickRestart({
  A: "~@3 x!2 ~@3", B: "x!2 ~@14", C: "~@8 x!2 ~@6", D: "~@4 x!4", E: "x ~ x ~ x ~@3 x!2 ~@6", F: "x ~@3 x!2 ~@2",
  G: "x ~@2 x!2 ~ x ~",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@6 B ~@8 A ~@6 B ~@14 A ~@7 A ~@8 B ~ B ~ B ~@3 C ~@3 B ~@23>".pickRestart({
  A: "x", B: "~@7 x", C: "~@6 x!2",
})).gain(0.46)

// drums · ride
const ride = s("rd").struct(`<
  ~@18 A B C D E C D F ~@8 A B C D E C D@2 E C D@2 E C ~@8 G H E I E J@2 K ~@2 A D ~ L A J ~ L A D ~@2 A B C D E C D@2 E
  C D@2 E C ~@9
>`.pickRestart({
  A: "~@2 x ~ x!3 ~", B: "x ~ x!3 ~ x!2", C: "x!3 ~ x ~ x!2", D: "x ~ x ~ x!3 ~", E: "x ~ x!3 ~ x ~",
  F: "x ~ x ~ x ~ x!2", G: "~ x!2 ~ x ~ x ~", H: "x!4", I: "x!7 ~", J: "x ~ x!5 ~", K: "x!2 ~ x!2 ~ x ~", L: "~@7 x",
})).gain(0.41)

stack(
  distortion_guitar, distortion_guitar_2, overdriven_guitar, electric_guitar_clean, bass, kick, snare, hihat,
  hihat_soft, low_tom, low_tom_soft, mid_tom, high_tom, crash, ride
)

More by The Police