Strudelify
Boys Don't Cry cover art

1979

Boys Don't Cry

The Cure

KeyA majorTempo155 bpm
0:00/0:00
// Boys Don't Cry — The Cure
// 155 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Guitar" named as a guitar, played on electric guitar clean (its piano patch is not one)
// note: duplicate parts dropped: ch 5 "Guitar" electric guitar clean (copy of ch 1 "Guitar" electric guitar clean)
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(155/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 · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@8 A B C D A B C D E F G H E F G H E I E I E I E J K L M D K L M D E F G H E F G H E I E I E I E J K L M D K L M D E
  F G H E F G H N O N O N O P Q E F G H E F G H R S T D R S T D R S T D U@2 V W X@2
>`.pickRestart({
  A: "[e3,a3,c#4]@3 [e3,a3,c#4]@2 d4 [a3,c#4,e4]@2", B: "[d3,f#3,c#4]@3 [d3,f#3,c#4]@2 [b3,d4] [f#3,b3,e4] ~",
  C: "[g#3,c#4,e4]@3 [g#3,c#4,e4] ~ [c#4,f#4] [c#4,e4,g#4] ~", // C#m F#5 C#m
  D: "[d4,f#4,a4]@8 [d4,f#4,a4]@3 [g#3,c#4,e4]@2 [f#3,b3,d4]@3", // D C#m Bm
  E: "[c#3,e3,a3] ~ [c#3,e3,a3] [c#3,e3,a3]@2 [c#3,e3,a3]!2 ~", // A
  F: "[d3,f#3,b3] ~ [d3,f#3,b3] [d3,f#3,b3]@2 [d3,f#3,b3]!2 ~", // Bm
  G: "[e3,g#3,c#4]@2 [e3,g#3,c#4] [e3,g#3,c#4]@2 [e3,g#3,c#4]!2 ~", // C#m
  H: "[f#3,a3,d4] ~ [f#3,a3,d4] [f#3,a3,d4]@2 [f#3,a3,d4]!2 ~", // D
  I: "[d3,f#3,b3] ~ [b2,d3,f#3,b3] [b2,d3,f#3,b3]@2 [b2,d3,f#3,b3] [d3,f#3,b3] ~, b2 ~@2 b2", // Bm
  J: "[d3,f#3,b3] ~ [b2,d3,f#3,b3] [b2,d3,f#3,b3]@2 [b2,d3,f#3,b3] [e3,a3,c#4] ~, b2 ~@3", // Bm A
  K: "[e3,a3,c#4] ~ [e3,a3,c#4] [e3,a3,c#4]@2 [a3,d4] [c#4,e4] ~", // A D5 C#m
  L: "[d3,f#3,c#4]@2 [d3,f#3,c#4] [d3,f#3,c#4]@2 [b3,d4] [f#3,b3,e4]@2", // Dmaj7 Bm Esus2
  M: "[a3,c#4,e4] ~ [a3,c#4,e4] [a3,c#4,e4]@2 [d4,f#4] [e4,g#4] ~", // A D E
  N: "[g#3,b3,e4] ~ [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,e4]@2", // E
  O: "[a3,c#4,f#4] ~ [a3,c#4,f#4] [a3,c#4,f#4]@2 [a3,c#4,f#4]!2 ~", P: "[f#3,a3,d4]@3 [f#3,a3,d4]@3 [f#3,a3,d4]@2",
  Q: "[g#3,b3,e4]!4", R: "[e3,a3,c#4] ~ [e3,a3,c#4] [e3,a3,c#4]@2 d4 [c#4,e4] ~",
  S: "[d3,f#3] ~ [d3,f#3,c#4] [d3,f#3,c#4]@2 [b3,d4] [f#3,e4]@2, c#4@2 ~@4 b3 ~", // D Dmaj7 Bm F#7
  T: "[a3,e4] ~ [a3,c#4,e4] [a3,c#4,e4]@2 [d4,f#4] [e4,g#4]@2, c#4 ~@3", U: "c#4@3 c#4@2 d4 e4@2, [e3,a3]",
  V: "e4@3 e4@2 f#4 g#4@2, [g#3,c#4]", W: "[f#4,a4]@8 f#4@3 e4@2 d4@3", X: "[[e3,c#4]@3 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.15)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A B C D E F G H I J K L I J K L M N O P M N O Q R S R S R S R T M N O U M N O U M N O P M N O Q R S R S R S R T M N O
  U M N O U M N O P M N O Q V W V W V X Y Z M N O P M N O Q M N O U M N O U M N O U AA AB AC AD AE@2
>`.pickRestart({
  A: "a1", B: "b1", C: "c#2", D: "d2@8 d2@3 c#2@2 b1@3", E: "a2@3 a2@2 a2 f#2 a2", F: "b2 b2@2 b2@2 b2 g#2 b2",
  G: "c#3 c#3@2 c#3@2 c#3 b2 c#3", H: "d3@2 d3@4 d3@2 d3@3 c#3@2 b2@3", I: "a1 ~ a1 ~ a1@2 a1@2 a1@2 a1@2 a1@2 a1@2",
  J: "b1 ~ b1 ~ b1@2 b1@2 b1@2 b1@2 b1@2 b1@2", K: "c#2 ~ c#2 ~ c#2@2 c#2@2 c#2@2 c#2@2 c#2@2 ~@2",
  L: "d2 ~ d2@2 d2@2 d2@2 d2@3 c#2@2 b1@3", M: "a1!8", N: "b1!8", O: "c#2!8", P: "d2!6 c#2 b1", Q: "d2!7 e2",
  R: "c#2@3 c#2@2 c#2@2 c#2", S: "b1@2 ~ b1@2 b1@2 b1", T: "b1@2 ~ b1@2 ~ a1@2",
  U: "d2@2 d2@2 d2@2 d2@2 d2@3 c#2@2 b1@3", V: "e2!3 e2@2 e2@2 e2", W: "f#2!3 f#2@2 f#2@2 f#2",
  X: "f#2!3 f#2@2 f#2!2 e2", Y: "d2 ~ d2 d2@2 ~ d2!2", Z: "e2!5 d2 c#2 b1", AA: "a1 ~@3 a1 ~ a1@4 ~@2 a1@4",
  AB: "b1@2 b1 b1@2 ~ b1@2", AC: "c#2 ~ c#2 c#2@2 ~ c#2 ~", AD: "d2@4 a1@4 d2@3 c#2@2 b1@3", AE: "[a1@3 ~]/2",
})).s("gm_electric_bass_pick").gain(0.17)

// bass · electric bass finger · "Bass 2"
const bass_2 = note(`<
  A B C D E F G H I J K L M N O P Q R S T Q R S U V W X R Y Z AA AB AC N K L AC AD K L Q R S T Q R S U AE R AA R AF AG
  AH AI AJ J AK AL AJ J AK L AM AN AO AP AM AN AO AQ AR AS AT AU AR AS AV AW AX AN AO AP AX AN AO AQ AY N AZ L AY N O L
  AY N O P A B C BA BB ~
>`.pickRestart({
  A: "a1", B: "b1", C: "c#2", D: "d2@8 d2@3 c#2@2 b1@3", E: "a2@3 a2@2 a2 f#2 a2", F: "b2 b2@2 b2@2 b2 g#2 b2",
  G: "c#3 c#3@2 c#3@2 c#3 b2 c#3", H: "d3@2 d3@4 d3@2 d3@3 c#3@2 b2@3", I: "a2 ~ a2 ~ a2 ~ a2@4 a2 ~ f#2 ~ a2 ~",
  J: "b2 ~ b2 ~ b2 ~ b2@4 b2 ~ g#2 ~ b2 ~", K: "c#3 ~ c#3 ~ c#3 ~ c#3@4 c#3 ~ b2 ~ c#3 ~",
  L: "d3 ~ d3 ~ d3 ~ d3 ~ d3@3 c#3@2 b2@3", M: "a2 ~ a2@4 a2@4 a2 ~ f#2 ~ a2 ~", N: "b2 ~ b2@4 b2@4 b2 ~ g#2 ~ b2 ~",
  O: "c#3 ~ c#3@4 c#3@4 c#3 ~ b2 ~ c#3 ~", P: "d3 ~ d3 ~ d3 ~ d3 ~ d3@3 e3@2 f#3@3", Q: "a2@6 a1@4 a1 ~ f#1 ~ a1 ~",
  R: "b1@6 b1@4 b1 ~ a1 ~ b1 ~", S: "c#2@6 c#2@4 c#2 ~ b1 ~ c#2 ~", T: "d2@6 d2@4 d2 ~ c#2 ~ b1 ~",
  U: "d2@6 d2@4 d2 ~ e2 ~ f#2 ~", V: "c#2 ~ c#2@4 c#3@4 c#2 ~ d2 ~ c#2 ~", W: "b1 ~ b1@4 b1@4 b1 ~ a1 ~ b1 ~",
  X: "c#2@6 c#2 ~ c#2@3 c#2@2 c#2@3", Y: "c#2@6 c#2@4 c#2@4 c#2 ~", Z: "d2 ~ c#2@4 a1@4 f#1 ~ g#1 ~ f#1 ~",
  AA: "c#2 ~ c#2@4 c#2 ~ c#2 ~@2 c#2 ~@2 c#2 ~", AB: "b1@6 b1@4 b1 ~ e2@4", AC: "a2@6 a2@4 a2 ~ f#2 ~ a2 ~",
  AD: "b2 ~@3 b2 ~ b2@4 b2 ~ g#2 ~ b2 ~", AE: "c#2@6 c#2@4 c#2 ~ d2 ~ c#2 ~", AF: "c#2@6 c#2@4 c#2 ~ c#2 ~ a1 ~",
  AG: "d2 ~ c#2@4 a1@4 f#1 ~ a1 ~ f#1 ~", AH: "c#2@6 c#2 ~ c#2 ~@2 c#2 ~@2 c#2 ~", AI: "b1@4 ~@2 b1@4 b1 ~ c#2@4",
  AJ: "a2@4 a2 ~ a2@4 a2 ~ f#2 ~ a2 ~", AK: "c#3@4 c#3 ~ c#3@4 c#3 ~ b2 ~ c#3 ~", AL: "d3@4 d3 ~ d3 ~ d3@3 c#3@2 b2@3",
  AM: "a2@4 ~@2 a1@4 a1 ~ f#1 ~ a1 ~", AN: "b1@4 ~@2 b1@4 b1 ~ a1 ~ b1 ~", AO: "c#2@4 ~@2 c#2@4 c#2 ~ b1 ~ c#2 ~",
  AP: "d2@4 ~@2 d2@4 d2 ~ c#2 ~ b1 ~", AQ: "d2@4 ~@2 d2@4 d2 ~ e2 ~ f#2 ~", AR: "e2 ~@5 e2@4 e2 ~ c#2 ~ e2 ~",
  AS: "f#2@4 ~@2 f#2@4 f#2 ~ a2 ~ b2 ~", AT: "e2@4 ~@2 e2@4 e2 ~ c#2 ~ e2 ~",
  AU: "f#2@4 ~@2 f#2 ~ f#2 ~ f#2 ~ a2 ~ f#2 ~", AV: "d2@6 d2 ~ d2 ~ d2 ~ b1 ~ d2 ~",
  AW: "e2 ~ e2 ~ d2 ~@3 c#2 ~@3 b1 ~@3", AX: "a1@4 ~@2 a1@4 a1 ~ f#1 ~ a1 ~", AY: "a2@4 ~@2 a2@4 a2 ~ f#2 ~ a2 ~",
  AZ: "c#3@4 ~@2 c#3@4 c#3 ~ b2 ~ c#3 ~", BA: "d2@4 a1@4 d2@3 c#2@2 b1@3", BB: "a2",
})).s("gm_electric_bass_finger").gain(0.18)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@3 B A@3 B A@3 B A@19 B A@3 B A@19 B A@3 B A@27 B A@3 B A@3 B C@3 D C ~
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "x", D: "x!2",
})).gain(0.24)

// drums · rim
const rim = s("rim").struct(`<
  ~@3 A B@3 C B@3 C B@3 C B@15 D B@3 C B@3 C B@7 E B@7 D B@3 C B@3 C B@3 E B@3 E B E B E B D B F B@3 E B@3 E B@3 C B@3 C
  B@3 C ~@3 A ~@2
>`.pickRestart({
  A: "~@8 x ~@2 x ~ x ~@2", B: "~ x ~ x", C: "~@6 x ~ x ~@2 x ~ x ~@2", D: "~@2 x ~@3 x!2", E: "~@4 x ~@7 x!3 ~",
  F: "x ~ x ~ x ~ x!2",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B@2 C A B@2 C A B@2 C A B@14 D A B@2 C A B@2 C A B@6 E A B@6 D A B@2 C A B@2 C A B@2 E A B@2 E F G F G F G F ~ A
  B@2 E A B@2 E A B@2 C A B@2 C A B@2 C H@5 ~
>`.pickRestart({
  A: "x ~ x!6", B: "x!8", C: "x!4 ~@4", D: "x!6 ~@2", E: "x!5 ~@3", F: "x!4", G: "x!3 ~", H: "x",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 [~@13 x ~@2] ~@96 [~@3 x]!3 [~@13 x ~@2] ~@2>").gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@47 A ~@19 A ~@3 A B C B C B C B C ~@3 A ~@3 A ~@18>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~ x ~ x", C: "~ x ~ x ~ x ~@2",
})).gain(0.24)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A ~@3 B ~@3 B ~@3 B ~@15 C ~@3 B ~@3 B ~@15 C ~@3 B ~@3 B ~@13 C ~ D ~@11 B ~@3 B ~@3 B ~@3 A ~@2
>`.pickRestart({
  A: "~@8 x ~@2 x ~@4", B: "~@8 x ~@2 x ~ x ~@2", C: "~@13 x ~@2", D: "x!7 ~",
})).gain(0.24)

stack(electric_guitar_clean, bass, bass_2, kick, rim, hihat, mid_tom, open_hat, high_tom)

More by The Cure