Strudelify
The Boys and Me cover art

The Boys and Me

Sawyer Brown

KeyG majorTempo139 bpm
0:00/0:00
// The Boys and Me — Sawyer Brown
// 139 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "tom mid 2" acoustic bass (copy of ch 5 "tom mid 2" electric bass finger); ch 7 "tom mid 2" electric guitar jazz (copy of ch 8 "tom mid 2" pad metallic, 0.094 beats late)
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(139/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 · piano · "tom mid 2"
const piano = note(`<
  ~@24 A B C D E F G H I J K L M N O P@2 Q O P@2 Q O P@2 Q O P@2 Q O P@2 Q A B C D E F G H I J K L M N O P@2 Q A B C D O
  P@2 Q R S I J K L M N O P@2 Q O P@2 Q O P@2 Q O P@2 Q O P@2 Q O P@2 Q T
>`.pickRestart({
  A: "[a#3,f4,a#4,d5,f5,a#5] [f4,d5,a#5] [f4,a#4,d5,f5,a#5]!3 [d5,f5,a#5] [a#3,f4,a#4,d5,f5,a#5]@2, ~@2 a#3 ~", // A#
  B: "[a#3,f4,a#4,d5,f5,a#5] [f4,d5,a#5] [a#3,f4,a#4,d5,f5,a#5] [d5,f5,a#5] [a#3,f4,a#4,d5,f5,a#5] d5 [a#3,f4,a#4,d5,f5,a#5] [f4,d5,a#5], ~@10 a#5 ~@5", // A#
  C: "[c4,g4,c5,e5,g5,c6] [g4,c5,e5,g5,c6] [c4,g4,c5,e5,g5,c6] [c5,e5,g5,c6] [c4,g4,c5,e5,g5,c6] [g4,e5,g5] [c4,g4,c5,e5,g5,c6] [c5,g5,c6]", // C C5
  D: "[c4,g4,c5,e5,g5,c6] [g4,e5,c6] [g4,c5,e5,g5,c6] [e5,g5,c6] [g4,e5,g5,c6] [c5,e5,g5,c6] [c4,g4,c5,e5,g5,c6] [g4,c5,e5,g5,c6]", // C
  E: "[g3,d4,g4,b4,g5,d6]!2 [e3,g3,e4,b4,g5,b5] [e4,g4,b4] [f4,a4,c5,f5] ~@3", // G Em F
  F: "[g3,d4,g4,b4,d5,g5] ~ [g3,d4,g4,b4,d5,d6] [f4,a4,c5] ~ [g3,e4,g4,b4]@3", // G F Em
  G: "[d4,d5,f#5,a5,d6] [d5,f#5,d6] [d4,a4,d5,f#5,a5,d6] [a5,d6] [d4,a4,d5,f#5,a5,d6] [a5,d6] [d4,a4,d5,f#5,a5,d6] [d5,a5,d6]", // D D5 D D5 D D5
  H: "[d4,a4,d5,f#5,a5,d6] [a5,d6] [d5,f#5,a5,d6] [a4,d5,d6] [d4,a4,d5,f#5,a5,d6] [a5,d6] [d4,a4,d5,f#5,a5,d6] [d5,a5,d6]", // D D5 D D5 D D5 D D5
  I: "[e4,b4,e5,g#5,b5,e6] [g#5,b5] [e4,b4,e5,g#5,b5,e6] [e5,g#5] [e4,b4,e5,b5]!2 [e4,b4,e5,g#5,b5,e6] ~, ~@2 [g#5,e6] ~", // E G#m E E5 E C#m
  J: "[c4,g4,c5,e5,g5,c6] [c4,e5,c6] [c4,g4,c5,e5,c6] [g4,c5,e5] [g4,c5,e5,g5,c6]@2 [g4,c5,e5,g5,c6] ~, ~@3 c4", // C
  K: "[d4,a4,d5,f#5,a5,d6] [a4,d6] [d4,a4,d5,f#5,a5,d6]@2 [d4,a4,d5,f#5,a5,d6]@2 [d4,a4,d5,f#5,a5,d6]@2", // D D5 D
  L: "[d4,a4,d5,f#5,a5,d6] [f#5,a5,d6] [d4,a4,d5,f#5,a5,d6] [f#5,a5] [d4,a4,d5,f#5,a5,d6] [d5,a5] [d4,a4,d5,f#5,a5,d6] ~", // D F#m D D5 D
  M: "[e4,b4,e5,b5,e6] [g#5,b5] [e4,b4,e5,g#5,b5,e6] [e5,b5,e6] [e4,b4,g#5,b5,e6] [e5,b5] [e4,b4,e5,g#5,b5,e6] ~", // E5 G#m E E5 E E5 E
  N: "[c4,g4,c5,e5,g5,c6]", O: "[g3,d4,g4,b4,g5,d6]!2 [e3,g3,e4,b4,g5,b5] ~ [f4,a4,c5,f5] ~@3",
  P: "[[g3,d4,g4,b4,d5,g5] ~ [g3,d4,g4,b4,d5,d6] [f4,a4,c5] ~ [g3,e4,g4,b4] ~ [g3,d4,g4,b4,d5,g5,d6]@2 [g3,d4,g4,b4,d5,g5] [g3,e4,g4,b4] ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~]/2", // G F Em G Em F
  Q: "[f3,a4,c5] [g3,e4,g4,b4] ~ [g3,d4,b4,d5]@5", R: "[d4,d5,f#5,a5,d6]", S: "[d4,a4,d5,f#5,a5,d6]",
  T: "[d4,g4,b4,d5,b5] ~@7", // G
})).s("gm_piano").gain(0.56).pan(0.6)

// chords · marimba · "tom mid 2"
const marimba = note(`<
  A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C D E F G H I J K L M N O P Q A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C D
  E F G H I J K L M N O P Q A B@2 C D E F G A B@2 C R S L M N O P Q A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C T
>`.pickRestart({
  A: "[g2,d3,g3,b3,g4,d5]!2 [e2,g2,e3,b3,g4,b4] ~ [f3,a3,c4,f4] ~@3", // G Em F
  B: "[[g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,d5] [f3,a3,c4] ~ [g2,e3,g3,b3] ~ [g2,d3,g3,b3,d4,g4,d5]@2 [g2,d3,g3,b3,d4,g4] [g2,e3,g3,b3] ~ [f2,f3,a3,c4] ~ [f2,f3,a3,c4] ~]/2", // G F Em G Em F
  C: "[f2,a3,c4] [g2,e3,g3,b3] ~ [g2,d3,b3,d4]@5", // F Em G
  D: "[a#2,f3,a#3,d4,f4,a#4] [f3,d4,a#4] [f3,a#3,d4,f4,a#4]!3 [d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4]@2, ~@2 a#2 ~", // A#
  E: "[a#2,f3,a#3,d4,f4,a#4] [f3,d4,a#4] [a#2,f3,a#3,d4,f4,a#4] [d4,f4,a#4] [a#2,f3,a#3,d4,f4,a#4] d4 [a#2,f3,a#3,d4,f4,a#4] [f3,d4,a#4], ~@10 a#4 ~@5", // A#
  F: "[c3,g3,c4,e4,g4,c5] [g3,c4,e4,g4,c5] [c3,g3,c4,e4,g4,c5] [c4,e4,g4,c5] [c3,g3,c4,e4,g4,c5] [g3,e4,g4] [c3,g3,c4,e4,g4,c5] [c4,g4,c5]", // C C5
  G: "[c3,g3,c4,e4,g4,c5] [g3,e4,c5] [g3,c4,e4,g4,c5] [e4,g4,c5] [g3,e4,g4,c5] [c4,e4,g4,c5] [c3,g3,c4,e4,g4,c5] [g3,c4,e4,g4,c5]", // C
  H: "[g2,d3,g3,b3,g4,d5]!2 [e2,g2,e3,b3,g4,b4] [e3,g3,b3] [f3,a3,c4,f4] ~@3", // G Em F
  I: "[g2,d3,g3,b3,d4,g4] ~ [g2,d3,g3,b3,d4,d5] [f3,a3,c4] ~ [g2,e3,g3,b3]@3", // G F Em
  J: "[d3,d4,f#4,a4,d5] [d4,f#4,d5] [d3,a3,d4,f#4,a4,d5] [a4,d5] [d3,a3,d4,f#4,a4,d5] [a4,d5] [d3,a3,d4,f#4,a4,d5] [d4,a4,d5]", // D D5 D D5 D D5
  K: "[d3,a3,d4,f#4,a4,d5] [a4,d5] [d4,f#4,a4,d5] [a3,d4,d5] [d3,a3,d4,f#4,a4,d5] [a4,d5] [d3,a3,d4,f#4,a4,d5] [d4,a4,d5]", // D D5 D D5 D D5 D D5
  L: "[e3,b3,e4,g#4,b4,e5] [g#4,b4] [e3,b3,e4,g#4,b4,e5] [e4,g#4] [e3,b3,e4,b4]!2 [e3,b3,e4,g#4,b4,e5] ~, ~@2 [g#4,e5] ~", // E G#m E E5 E C#m
  M: "[c3,g3,c4,e4,g4,c5] [c3,e4,c5] [c3,g3,c4,e4,c5] [g3,c4,e4] [g3,c4,e4,g4,c5]@2 [g3,c4,e4,g4,c5] ~, ~@3 c3", // C
  N: "[d3,a3,d4,f#4,a4,d5] [a3,d5] [d3,a3,d4,f#4,a4,d5]@2 [d3,a3,d4,f#4,a4,d5]@2 [d3,a3,d4,f#4,a4,d5]@2", // D D5 D
  O: "[d3,a3,d4,f#4,a4,d5] [f#4,a4,d5] [d3,a3,d4,f#4,a4,d5] [f#4,a4] [d3,a3,d4,f#4,a4,d5] [d4,a4] [d3,a3,d4,f#4,a4,d5] ~", // D F#m D D5 D
  P: "[e3,b3,e4,b4,e5] [g#4,b4] [e3,b3,e4,g#4,b4,e5] [e4,b4,e5] [e3,b3,g#4,b4,e5] [e4,b4] [e3,b3,e4,g#4,b4,e5] ~", // E5 G#m E E5 E E5 E
  Q: "[c3,g3,c4,e4,g4,c5]", R: "[d3,d4,f#4,a4,d5]", S: "[d3,a3,d4,f#4,a4,d5]", T: "[d3,g3,b3,d4,b4] ~@7",
})).s("gm_marimba").gain(0.72).pan(0.6)

// chords · overdriven guitar · "tom mid 2"
const overdriven_guitar = note(`<
  A B@2 C A B@2 D A B@2 D A B@2 D A B@2 D A B@2 D E@2 F@2 A G H@2 I J H@2 I K A B@2 D A B@2 D A B@2 D A B@2 D A B@2 D
  E@2 F@2 A G H@2 I J H@2 I K A B@2 D E@2 F@2 A B@2 L M@2 I J H@2 I K A B@2 D A B@2 D A B@2 D A B@2 D A B@2 D A B@2 D N
>`.pickRestart({
  A: "[g2,d3]!2 [g2,e3] ~ [g2,f3] ~@3", // G5 C G7
  B: "[[g2,d3] ~ [g2,d3] [g2,f3] ~ [g2,e3] ~ [g2,d3]@2 [g2,d3] [g2,e3] ~ [g2,f3] ~ [g2,f3] ~]/2", // G5 G7 C G5 C G7
  C: "[g2,f3] [g2,e3] ~ [g2,d3] ~ [g2,e3] ~@2", D: "[g2,f3] [g2,e3] ~ [g2,d3]@5", E: "[a#2,f3]!8", F: "[c3,g3]!8",
  G: "[g2,d3] ~ [g2,d3] [g2,f3] ~ [g2,e3]@3", H: "[d3,a3,d4]!8", I: "[e3,b3,e4]!8", J: "[c3,g3,c4]!8", K: "[c3,g3,c4]",
  L: "[g2,f3]@2 [g2,e3]@2 ~@2 [g2,d3]@2 ~@2 [g2,e3]@5 ~", M: "[d3,a3,d4]", N: "[g2,d3,g3,d4,b4,b5] ~@7",
})).s("gm_overdriven_guitar").gain(0.56).pan(0.4)

// bass · electric bass finger · "tom mid 2"
const bass = note(`<
  ~@15 A B A B C B A B ~ D@2 E@2 F G H@2 I E H@2 I J K L K M K@16 D@2 E@2 F G H@2 I E H@2 I J K L K M D@2 E@2 K L K N
  O@2 I E H@2 I J K L K M K L K M K L K L K L K M K L K L K L K M P
>`.pickRestart({
  A: "~@4 f2 e2 d2 g1", B: "~ g1!2 ~ g1 ~@3", C: "a2 a#2 a2 f2 e2 ~@2 g1", D: "a#1!8", E: "c2!8", F: "g1!3 ~ g1!2 ~@2",
  G: "g1!2 ~ g1@4 ~", H: "d2!8", I: "e2!8", J: "c2", K: "g1!3 ~ g1!2 ~ g1", L: "g1!2 ~ g1!3 ~ g1",
  M: "g1!3 ~ g1!2 e2 f2", N: "g1!8", O: "d2", P: "g1 ~@7",
})).s("gm_electric_bass_finger").gain(0.8).pan(0.6)

// chords · pad metallic · "tom mid 2"
const pad_metallic = note("<~@30 A@2 B C A@2 B C ~@26 A@2 B C A@2 B C ~@14 B C A@2 B C ~@25>".pickRestart({
  A: "[a4,d5]/2", B: "[b4,e5]", C: "[g4,c5]",
})).s("gm_pad_metallic").gain(0.72).pan(0.7)

// other · distortion guitar · "tom mid 2"
const distortion_guitar = note("<~@76 A ~ B ~ C ~@19 D E F G D E F G D E F G D E F G ~>".pickRestart({
  A: "~ d4!2 ~", B: "~ e4!2 ~", C: "~ d5 b4 ~", D: "b4@3 ~ b4@3 ~", E: "b4@2 d5 ~ d5 ~@3", F: "b4@2 ~@2 b4@2 d5 ~",
  G: "d5 ~",
})).s("gm_distortion_guitar").gain(0.56)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@16 A@45 ~ A@9 ~ A@12 ~@2 A@5 ~ A@7 ~ A@7 ~ A@7 ~@2>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  A@33 B A@3 C A@19 B A@3 D A E A@3 B A@3 F A@3 G A@3 E A@3 D H@2 A B A@3 I A@7 J A@3 B A@3 F A@3 B A@3 J ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@3 x", D: "~@2 x ~@2 x!2 ~", E: "~@4 x ~@5 x ~ x ~ x!2",
  F: "x ~@5 x ~@5 x ~ x!2", G: "x!2 ~ x", H: "~@5 x!3", I: "x!8", J: "x ~@2 x ~@4",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@41 A ~@19 B ~@13 A ~@15 C ~@3 A ~@3 D ~@14 E D ~>".pickRestart({
  A: "~@4 x!4", B: "~@7 x", C: "x!8", D: "~@10 x ~ x ~ x!2", E: "~@5 x ~ x",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@29 B A@33 B A@12 ~@2 A@5 ~ A@7 B A@7 B A@7 B ~>".pickRestart({
  A: "x!8", B: "x ~@4 x!3",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@41 A ~@33 B ~@19 A ~@18 C ~@2>".pickRestart({
  A: "x!4 ~@4", B: "x ~@2 x ~@4", C: "~@3 x ~@4",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@84 [~@5 x!3]!2 ~@31>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@99 [~@8 x!2 ~@6] ~@14 [~ x ~@6] [~@8 x!2 ~@6] ~>").gain(0.72)

// drums · ride
const ride = s("rd").struct("<~@30 A@7 B ~@26 A@7 B ~@14 A@5 B ~@8 A@7 B A@7 B ~>".pickRestart({
  A: "x ~ x ~ x!3 ~", B: "x",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@76 [x!16]!8 ~@16 [x!16]!16 ~>").gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~ A ~ A B A ~@6 A@2 ~@3 A ~@15 A ~ A ~ A C A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2 ~@2 A ~@3 A ~@3 A ~@3 A ~@6 D A
  ~@3 A ~@3 A
>`.pickRestart({
  A: "x", B: "~@3 x ~@4", C: "x ~@2 x ~@4", D: "~@3 x",
})).gain(0.64)

stack(
  piano, marimba, overdriven_guitar, bass, pad_metallic, distortion_guitar, kick, kick_soft, snare, low_tom, hihat,
  mid_tom, open_hat, high_tom, ride, tambourine, crash
)

More by Sawyer Brown