Strudelify

She Will Be Loved

Maroon 5

KeyF majorTempo103 bpm
0:00/0:00
// She Will Be Loved — Maroon 5
// 103 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5594147; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@4 A B C@2 A B D@2 E@4 F@4 G H I J K L M N O P O Q R S@2 T U V@2 W X Y Z AA AB AC AD AE@2 G H I J K L M N O P O AF O
  P AG@2 AH AI AJ AK AL AM AN AO AP AQ S@2 T AR K H I AS AT L M N O P AU@2 O P AG@2 X AV AW AX AY AZ BA ~@2
>`.pickRestart({
  A: "~@2 eb5!3 eb5@2 f5", B: "f5 d5@2 c5@2 bb4@2 g4", C: "[~@2 eb5!3 eb5@2 f5@2 d5@2 c5@4 c5]/2",
  D: "[~ eb5!3 eb5@2 eb5 f5@2 d5@2 c5@4 c5]/2",
  E: "[~@3 eb5!2 eb5@2 f5@2 eb5@2 f5@2 eb5@2 f5@2 eb5@2 eb5@2 f5@2 f5@2 g5@3 ~@4]/4",
  F: "[~@3 eb5!2 eb5@2 f5@2 eb5!2 f5@2 eb5@2 f5@2 eb5@2 eb5@2 f5@2 f5@2 g5 g5@4 ~@2]/4", G: "~@2 eb5!2 eb5@2 eb5!2",
  H: "d5!2 eb5 eb5@4 eb5", I: "~ eb5!7", J: "d5 eb5@2 f5@4 f5", K: "~ eb5!3 eb5@2 eb5!2", L: "d5 eb5@2 eb5@4 eb5",
  M: "~@2 eb5!5 bb4", N: "d5 eb5@2 eb5@2 eb5!2 bb5", O: "bb5@6 g5!2", P: "g5@4 g5 eb5!2 bb5", Q: "g5 f5@2 eb5@2 f5@3",
  R: "f5@3 ~", S: "[~ eb5!4 eb5@2 f5@2 d5@2 c5@2 bb4@2 g4]/2", T: "~@4 eb5@2 d5@2 eb5@2 d5@2 eb5@2 f5!2", U: "d5 ~",
  V: "[~ eb5!4 eb5@2 f5@2 d5@2 c5@2 bb4@2 c5]/2", W: "~@4 eb5@2 d5@2 eb5@2 d5@2 ~@2 g5!2", X: "f5 ~", Y: "~@3 eb5!4 f5",
  Z: "f5@2 eb5@2 eb5@2 g5!2 f5@4 eb5@2 g5!2", AA: "f5@2 eb5 g5 f5 eb5!3", AB: "eb5 ~ d5 ~", AC: "~@3 eb5!5",
  AD: "eb5 g5@2 f5 eb5 g5 f5 eb5", AE: "[eb5 eb5@2 eb5!2 eb5@2 f5@2 f5@2 g5@4 g5]/2", AF: "f5@2 eb5@3 eb5!2 bb5",
  AG: "[bb5@6 g5 g5@2 f5@2 eb5@2 f5@3]/2", AH: "bb4 c5 c5@4 c5@4 c5@6", AI: "bb4@3 ~@5", AJ: "bb4 c5@2 c5@2 c5@3",
  AK: "bb4@3 c5@2 d5 c5@2", AL: "eb5@3 d5@2 c5@3", AM: "f5@3 d5@2 bb4@3", AN: "g5@3 f5@2 eb5@3", AO: "d5@3 f5@2 d5@3",
  AP: "c5", AQ: "c5@3 bb4@2 ab4@2 g4", AR: "d5@3 ~", AS: "d5 eb5@2 f5@3 eb5 bb4", AT: "~ eb5!3 eb5@2 bb4!2",
  AU: "[bb5@6 g5 g5@2 f5@2 eb5@2 eb5!2 bb5]/2", AV: "~@4 d5@3 eb5", AW: "eb5", AX: "~ g5 f5 eb5@2 g5 f5 eb5", AY: "bb5",
  AZ: "bb5@6 bb5@2 ab5@6 g5 ab5", BA: "g5",
})).s("gm_clarinet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@12 A@4 B@4 C D E F G H I J K L K M N O@2 P Q R@2 S T U V W X Y Z AA@2 C D E F G H I J K L K AB K L K M AC AD AE AD
  AC AF AC AG AH AI O@2 P AJ G D E AK AL H I J K L AM@2 K L AN@2 T ~@2 AO AP AQ AR ~@2
>`.pickRestart({
  A: "[~@3 eb4!2 eb4@2 f4@2 eb4@2 f4@2 eb4@2 f4@2 eb4@2 eb4@2 f4@2 f4@2 g4@3 ~@4]/4",
  B: "[~@3 eb4!2 eb4@2 f4@2 eb4!2 f4@2 eb4@2 f4@2 eb4@2 eb4@2 f4@2 f4@2 g4 g4@4 ~@2]/4", C: "~@2 eb4!2 eb4@2 eb4!2",
  D: "d4!2 eb4 eb4@4 eb4", E: "~ eb4!7", F: "d4 eb4@2 f4@4 f4", G: "~ eb4!3 eb4@2 eb4!2", H: "d4 eb4@2 eb4@4 eb4",
  I: "~@2 eb4!5 bb3", J: "d4 eb4@2 eb4@2 eb4!2 bb4", K: "bb4@6 g4!2", L: "g4@4 g4 eb4!2 bb4", M: "g4 f4@2 eb4@2 f4@3",
  N: "f4@3 ~", O: "[~ eb4!4 eb4@2 f4@2 d4@2 c4@2 bb3@2 g3]/2", P: "~@4 eb4@2 d4@2 eb4@2 d4@2 eb4@2 f4!2", Q: "d4 ~",
  R: "[~ eb4!4 eb4@2 f4@2 d4@2 c4@2 bb3@2 c4]/2", S: "~@4 eb4@2 d4@2 eb4@2 d4@2 ~@2 g4!2", T: "f4 ~", U: "~@3 eb4!4 f4",
  V: "f4@2 eb4@2 eb4@2 g4!2 f4@4 eb4@2 g4!2", W: "f4@2 eb4 g4 f4 eb4!3", X: "eb4 ~ d4 ~", Y: "~@3 eb4!5",
  Z: "eb4 g4@2 f4 eb4 g4 f4 eb4", AA: "[eb4 eb4@2 eb4!2 eb4@2 f4@2 f4@2 g4@5]/2", AB: "f4@2 eb4@3 eb4!2 bb4",
  AC: "eb5@3 eb5@2 eb5!3", AD: "f4@3 f4@2 f4!3", AE: "eb5@3 eb5!5", AF: "f4@3 f4!3 f4@2", AG: "d5@3 d5@2 d5!3",
  AH: "eb4", AI: "eb4@3 ~@5", AJ: "d4@3 ~", AK: "d4 eb4@2 f4@3 eb4 bb3", AL: "~ eb4!3 eb4@2 bb3!2",
  AM: "[bb4@6 g4 g4@2 f4@2 eb4@2 eb4!2 bb4]/2", AN: "[bb4@6 g4 g4@2 f4@2 eb4@2 f4@3]/2", AO: "bb3!2 bb3@6",
  AP: "eb3 g3 g3@6", AQ: "g3 bb3 bb3@6", AR: "eb4 g4 g4@6",
})).s("gm_alto_sax").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@20 A B C B A B C@2 A B C@2 D ~@4 E F E G H I J I J I J I ~@16 K L M N O P Q R S ~@20 T U V W X Y Z AA AB@2
>`.pickRestart({
  A: "g4@3 g4@2 g4!3", B: "f4@3 f4@2 f4!3", C: "eb4@3 eb4@2 eb4!3", D: "eb4@3 ~", E: "c4@2 g4!2 c5!2 ~ bb4",
  F: "~ g4 ~ f4 ~ eb4 ~ d4", G: "~ g4 ~ f4 ~ eb4 ~ c4", H: "f5 g5 f5 ~@2 g5 d5 bb4", I: "bb4 f5 d5 bb4@2 f5 d5 f5",
  J: "f5 g5 f5 ~@2 f5 d5 bb4", K: "~@3 eb5 d5!4", L: "d5@3 d5!4 eb5", M: "eb5@3 eb5!5", N: "eb5 bb4!2 eb5!2 bb4 c5@2",
  O: "c5@3 eb5 d5!4", P: "d5@2 d5!4 eb5 c5", Q: "c5 g5!4 eb5@2 g5", R: "eb5!2 bb4 eb5@2 f5@3", S: "f5 eb5@6 eb5",
  T: "bb4!2 bb4@6", U: "f5", V: "eb5 c5!3 c5@4", W: "c5", X: "~@2 eb4!2 eb4@2 eb4!2", Y: "d4!2 eb4!2 eb4@4", Z: "eb4!8",
  AA: "d4 eb4@2 f4 f4@4", AB: "eb5",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@4 A B A C A B A C A B D C A B A C E F G H E F G H E F G H ~ I@2 J K I@2 J K L M N M N M N M E F G H E F G H E F G H
  E F G H ~ O P ~@23 Q R S R S R S R Q R S R T
>`.pickRestart({
  A: "c3 eb3 g3@2 g3@2 c3@2", B: "bb2 d3 f3 d3", C: "bb2 d3 f3@2", D: "c3 eb3 g3@4 c3@2", E: "eb3 g3 bb3@3 g3 eb3 d3",
  F: "bb2 d3 f3@3 d3 bb2 c3", G: "c3 eb3 g3@3 eb3 c3 bb2", H: "ab2 c3 eb3@3 c3 bb2 d3",
  I: "[~ eb4!4 eb4@2 f4@2 d4@2 c4@2 bb3@2 c4]/2", J: "~@4 eb4@2 eb4@2 eb4@2 eb4@2 eb4@2 f4!2", K: "d4 ~",
  L: "c3@2 g3!2 c4!2 ~ bb3", M: "~ g3 ~ f3 ~ eb3 ~ d3", N: "c4@2 g3!2 c4!2 ~ bb3", O: "ab2@3 ab2@2 g2 f2 eb2",
  P: "ab2 bb2 bb2@4 bb2@4 bb2@6", Q: "eb4!2", R: "bb3 f4", S: "eb4 g3", T: "eb4 ~",
})).s("gm_trombone").gain(0.25)

// other · trombone
const trombone_2 = note(`<
  A B A B A B A B A B A B A B A B A B A B C D E D C D E C@2 D E C F A G A B A B A B A B A B A H A I J@2 K J@3 K C J@2 K
  C J@2 K C K D L D K M K D N O A B P Q J@2 K J@3 K C J@2 K C J@2 K C J@2 K C J@2 C R@2
>`.pickRestart({
  A: "~@2 eb3!3 eb3@2 ~", B: "~ d3 ~ d3@2 f3 d3 ~", C: "eb3@3 eb3@2 eb3!3", D: "f3@3 f3@2 f3!3", E: "c3@3 c3@2 c3!3",
  F: "eb3@3 ~", G: "~ eb3 ~ eb3@2 f3 d3 ~", H: "~ d3 ~ d3 f3 d3 ~@2", I: "~ d3 ~ d3@2 g3 f3 g3", J: "bb3@3 bb3@2 bb3!3",
  K: "g3@3 g3@2 g3!3", L: "g3@3 g3!5", M: "f3@3 f3!3 f3@2", N: "g3", O: "g3@3 ~@5", P: "~@2 g3!3 g3@2 f3", Q: "f3@3 ~",
  R: "eb3",
})).s("gm_trombone").gain(0.25)

// other · tuba · "Euphonium"
const tuba = note(`<
  A B A B A B A B A B A B A B A B A B A C D E F E G E D ~@6 A B A B A B A B A B A B A B A C H I J I H I J@2 H I J@2 H I
  J@2 K L M N O P Q R S ~ A B T U H I J I H I J@2 H I J@2 H I J V W X Y Z W I AA F@2
>`.pickRestart({
  A: "~@2 eb4!3 eb4@2 ~", B: "~ d4 ~ d4@2 ~@2 d4", C: "~ d4 ~ d4@2 d4!3", D: "eb4", E: "d4", F: "c4", G: "g4",
  H: "g4@3 g4@2 g4!3", I: "f4@3 f4@2 f4!3", J: "eb4@3 eb4@2 eb4!3", K: "~@3 eb3 d3!4", L: "d3@3 d3!4 eb3",
  M: "eb3@3 eb3!5", N: "eb3 bb2!2 eb3!2 bb2 c3@2", O: "c3@3 eb3 d3!4", P: "d3@2 d3!4 eb3 c3", Q: "c3 g3!4 eb3@2 g3",
  R: "eb3!2 bb2 eb3@2 f3@3", S: "f3 eb3@6 eb3", T: "~@2 eb4!3 eb4@2 d4", U: "d4@3 ~", V: "ab3@3 ab3@2 ab3!3",
  W: "g3@3 g3@2 g3!3", X: "f3@3 f3@2 f3!3", Y: "eb3@3 eb3@2 eb3!3", Z: "bb3@3 bb3@2 bb3!3", AA: "c4@3 c4@2 c4!3",
})).s("gm_tuba").gain(0.25)

// bass · tuba
const bass = note(`<
  A@2 B@8 C D C D C D C D C E F G H I F G J K F G J K L C D C D C D C D C D B@6 M N O P M N Q R S N Q R S N Q R T U T U
  T U T U V W C D X@2 S N O P M N Q R S N Q R S N Q R S N Q R S N R Y@2
>`.pickRestart({
  A: "[c3@3 c3!2 c3@2 bb2@3 ~ bb2@2 ~@3]/2", B: "[c3@2 c3!3 c3@2 bb2@3 ~ bb2@2 ~@3]/2", C: "c3@2 c3!3 c3@2 bb2",
  D: "bb2@2 ~ bb2@2 ~@3", E: "bb2@2 ~ bb2@2 bb2!3", F: "eb3!3 eb3@2 eb3@3", G: "bb2!3 bb2@2 bb2@3", H: "c3!3 c3@2 c3@3",
  I: "bb2!3 bb2@2 bb2!2 c3", J: "c3!3 c3@2 c3!2 bb2", K: "ab2!3 ab2@2 ab2@3", L: "ab2@3 ~", M: "eb3!8", N: "bb2!8",
  O: "c3!8", P: "bb2!7 c3", Q: "c3!7 bb2", R: "ab2!8", S: "eb2!8", T: "c3@2 g3!2 c4!2 ~ bb3", U: "~ g3 ~ f3 ~ eb3 ~ d3",
  V: "c3", W: "c3@3 ~@5", X: "[c3@2 c3!3 c3@2 bb2@7 ~@2]/2", Y: "ab2",
})).s("gm_tuba").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@20 A@7 B A@4 C ~@14 D B A@7 B A@8 ~@14 A@7 B A@3 B A@3 B A@3 B A@3 B E>".pickRestart({
  A: "x ~@2 x ~ x ~ x", B: "x ~@6 x", C: "x ~@2 x ~ x ~@2", D: "~@3 x ~ x ~ x", E: "x",
})).gain(0.3)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@32 [~@7 x] [x ~@2 x ~ x ~ x]!14 x ~@17 [x ~@2 x ~ x ~ x]!8 x ~@30>").gain(0.2)

// drums · rim
const rim = s("rim").struct("<A@4 B@15 A ~@13 C@7 A ~@32 C@5 ~@26>".pickRestart({
  A: "~ x ~@2", B: "~ x ~@6", C: "~ x ~ x",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<~@19 A B@13 ~@14 B@18 ~@14 B ~ B@22 ~>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.3)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@40 [~@3 x] [~ x ~ x]!6 ~@18 [~ x ~ x]!8 ~@31>").gain(0.15)

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@7 A ~@20 A ~@7 A ~@29 A ~@3 A ~@3 A ~@3 A ~@3 A ~>".pickRestart({
  A: "~@3 x!3 ~@2",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!19 [x!3 ~@4 x] ~@12 [~ x!7] [x!8]!15 [x!3 ~@4 x] ~@55>").gain(0.25)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@73 [~ x!7] [x!8]!4 ~@26>").gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@7 A ~@20 A ~@7 A ~@29 A ~@3 A ~@3 A ~@3 A ~@3 A ~>".pickRestart({
  A: "~@3 x!3 ~@2",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@19 A B@7 A B@5 ~@15 A B@7 A B@9 ~@3 B ~@3 B ~@5 B@7 A B@3 A B@3 A B@3 A B@3 A B
>`.pickRestart({
  A: "~@3 x", B: "x",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@20 A@7 B A@4 ~@17 A@7 B A@8 ~@14 A@7 B A@3 B A@3 B A@3 B A@3 B ~>".pickRestart({
  A: "~ x!7", B: "x!3 ~@4 x",
})).gain(0.3)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@65 [~ x!7] [x!8]!3 [~ x!7] [x!8]!3 ~@31>").gain(0.15)

stack(
  clarinet, alto_sax, trumpet, trombone, trombone_2, tuba, bass, kick, kick_soft, rim, snare, snare_soft, low_tom,
  hihat, hihat_soft, mid_tom, crash, ride, ride_soft
)