Strudelify

Come Back and Stay

Young Paul

KeyF♯ minorTempo130 bpm
0:00/0:00
// Come Back and Stay — Paul Young
// 130 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 164 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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.

// bass · slap bass 2
const bass = note(`<
  ~@5 A B C D E C@2 F G H I J K H I L M N O P Q R S N T P Q R S U V U W H I J K H I L X N O P Q R S N T P Q R S U V U W
  H I J K H I L M Y@2 Z AA Y@2 Z AB Y@2 Z AA Y@2 Z AA ~@18 U V U V U V U W H I J K H I L X H I J K H I L M Y@2 Z AA Y@2
  Z AB H I J K H I L M H I J K H I L X H I J K H I AC ~@5
>`.pickRestart({
  A: "~@2 d2@6 b1@5 ~ a1@2", B: "f#1@6 f#2 ~@8 f#2", C: "f#1@6 f#2 ~@9", D: "d1@6 d2 ~@8 d2", E: "d1@6 d2 ~@9",
  F: "d1@3 d2 ~@4", G: "d2 c#2 b1 a1", H: "f#1@4 ~@2 f#1 ~ f#1@6 ~@2", I: "a1@5 ~ a1 ~ a1@5 ~@3",
  J: "d2@5 ~ d2 ~ d2@6 c3@2", K: "~@2 b2 ~ c3 ~ b2 ~ c3 ~ b2 ~ c3@2 ~@2, ~@2 b1 ~", L: "d2@5 ~ d2 ~ d2@6 d2 ~",
  M: "e2 ~@3 f#2 ~ f#2@2 b1@4 ~@4, ~@4 a2 ~@3", N: "~@6 f#2@6 e2@2 f#2 ~", O: "~@6 f#2@6 f#2 ~@3",
  P: "f#1 ~@5 f#2@6 ~@4", Q: "~@2 f#2 ~@3 f#2@6 e2@4", R: "~@6 d2@6 b1@2 a1 ~", S: "d1 ~@5 d2@7 ~@3",
  T: "~@3 f#2@3 ~@2", U: "f#1@4 f#2 ~ c#2 ~ e2 ~@3 e2@2 f#2@2", V: "d2@4 ~@2 d2 ~@9", W: "d2@4 c#2@4 b1@4 a1@3 ~",
  X: "f#2 a2 ~@2 b1@2 ~@2, ~@4 e3@11 ~", Y: "f#1 ~ f#2 ~ f#1 ~ [f#1,f#2]@6 e2@2 f#2@2",
  Z: "d1@2 d2 ~ d1 ~ [d1,d2]@6 b1@2 a1@2", AA: "d1@2 d2 ~ d1 ~ [d1,d2]@6 b1@2 a1 ~",
  AB: "d1 ~ d2 ~ d1 ~ [d1,d2]@6 b1@2 a1 ~", AC: "d2@5 ~ d2 ~ d2@6 ~@2",
})).s("gm_slap_bass_2").gain(0.4)

// bass · slap bass 2 · soft notes
const bass_soft = note(`<
  ~@11 A ~@5 B ~@3 C D E F G H I D@2 F G H I J ~ J ~@4 B ~@3 K D E F G H I D@2 F G H I J ~ J ~@4 B ~@3 C ~@16 L@2 M N
  O@2 L@2 M N O@2 L@2 M N O@2 J ~ J ~ J ~ J ~@4 B ~@3 K ~@3 B ~@3 C ~@11 B ~@3 C ~@3 B ~@3 K ~@3 B ~@8
>`.pickRestart({
  A: "~@15 d2", B: "d2@4 c#2@4 ~@4 a1@3 ~", C: "d2 ~ e2@2 c#2@4 ~@4 a1@3 ~, ~@5 a2@3", D: "f#1 ~ f#2 ~ f#1 ~@11",
  E: "f#1 ~ f#2 ~ f#1 ~@9 f#1 ~", F: "~@2 f#2 ~ f#1 ~@7 e2@2 f#2 ~", G: "f#1 ~@3 f#1 ~@11", H: "d1 ~ d2 ~ d1 ~@11",
  I: "~@2 d2 ~ d1 ~@11", J: "~@10 c#2 ~@5", K: "d2 ~@3 c#2@4 ~@4 a1@3 ~", L: "[f#1@21 ~@3 a1@3 c#2@3 e2@2]/2",
  M: "f#2@7 g#2", N: "a2@6 g#2 a2@2 f#2@7", O: "d2/2",
})).s("gm_slap_bass_2").gain(0.2)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@6 A@2 B@2 A@2 B@2 C D E@2 C D E@2 ~@12 F G F G C D E@2 C D E@2 ~@12 F G F G C D E@2 C D E@2 A@2 B@2 A@2 B@2 A@2 B@2
  A@2 B@2 ~@10 H@3 ~@5 F G F G F G F G C D E@2 C D E@2 C D E@2 C D E@2 I@2 J@2 I@2 J@2 C D E@2 C D E@2 C D E@2 C D E@2 C
  D E@2 C D E@2 C D E@2
>`.pickRestart({
  A: "[[f#4,a4,c#5,f#5]@31 ~]/2", B: "[[f#4,a4,b4,f#5]@31 ~]/2", C: "f#5 e5, [f#4,a4,c#5]", D: "[c#5,e5] e5, a4",
  E: "[[a4,b4]@2 a4@29 ~, [d5,f#5]@31 ~]/2", F: "[a3,c#4,f#4]@13 ~@3", G: "[a3,d4,f#4]@13 ~@3", H: "[f#5@37 ~@11]/3",
  I: "[[f#3,a3,c#4,f#4]@31 ~]/2", J: "[[f#3,a3,b3,f#4]@31 ~]/2",
})).s("gm_synth_strings_1").gain(0.12)

// other · tubular bells
const tubular_bells = note(`<
  ~@6 A@2 B@2 A@2 B@2 ~@20 C D C D ~@8 E ~@3 D ~ C ~@3 D ~ C D C D ~@8 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 E ~@3 D ~@5 D ~ C
  ~@3 D ~ C D C D C D C D ~@52
>`.pickRestart({
  A: "[[f#4,f#5]@15 ~]/2", B: "[[d4,d5]@15 ~]/2", C: "f#4 ~@15", D: "d4 ~@15", E: "~@4 f#4 ~@11",
})).s("gm_tubular_bells").gain(0.28).pan(0.6)

// other · tubular bells · soft notes
const tubular_bells_soft = note("<~@46 A ~@3 B ~ C ~@3 B ~@29 A ~@3 B ~@5 B ~ C ~@3 B ~@61>".pickRestart({
  A: "~@4 f#5 ~@11", B: "d5 ~@15", C: "f#5 ~@15",
})).s("gm_tubular_bells").gain(0.16).pan(0.6)

// bass · fretless bass
const bass_2 = note(`<
  ~@5 A ~@14 B C D E D F G H D I D F G H ~@10 J K D E D F G H D I D F G H ~@10 B C L@2 M N L@2 M N L@2 O P L@2 M N Q@2 R
  S T@2 Q@2 R S T@2 Q@2 R S T@2 U ~ U ~ U ~ U ~@7 J K ~@6 B C L@2 O N L@2 O N ~@6 B C ~@6 J K ~@12
>`.pickRestart({
  A: "~@2 d3@5 ~ b2@5 ~ a2@2", B: "~@7 d3", C: "e3 ~ e3@2 f#3 ~ f#3@2 a3@2 a3@6",
  D: "f#1 ~ f#2 ~ f#1 ~ f#2@6 e2@2 f#2 ~", E: "f#1 ~ f#2 ~ f#1 ~ f#2@6 f#2 ~ f#1 ~", F: "f#1 ~ f#2 ~ f#1 ~ f#2@6 e2@4",
  G: "d1 ~ d2 ~ d1 ~ d2@6 b1@2 a1 ~", H: "d1 ~ d2 ~ d1 ~ d2@7 ~@3", I: "f#1 ~ f#2 ~ f#1 ~ f#2@6 ~@4", J: "~@15 e2",
  K: "f#2@2 a2@2 e3@11 ~", L: "f#2 ~ f#3 ~ f#2 ~ f#2@6 e3@2 f#3@2", M: "d2 ~ d3 ~ d2 ~ d2@5 ~ b2@2 a2@2",
  N: "d2 ~ d3 ~ d2 ~ d2@6 b2@2 a2 ~", O: "d2@2 d3 ~ d2 ~ d2@5 ~ b2@2 a2@2", P: "d2@2 d3 ~ d2 ~ d2@6 b2@2 a2 ~",
  Q: "[f#1@21 ~@2 f#1 a1@3 c#2@3 e2@2]/2", R: "f#2@7 g#2", S: "a2@6 g#2 a2@2 f#2@7", T: "d2/2",
  U: "[c#3,e3]@3 e3 c#3 ~@11", // C#m
})).s("gm_fretless_bass").gain(0.29)

// other · music box
const music_box = note(`<
  ~@14 A B C ~ A B D ~@17 A B C ~ A B D ~@17 A B C ~ A B D ~ E ~ F ~@5 E ~ F ~@31 A B C ~ A B D ~ A B C ~ A B D ~ E ~ F
  ~@5 A B C ~ A B D ~ A B C ~ A B D ~ A B C ~ A B D ~@5
>`.pickRestart({
  A: "f#6 ~@7 e6 ~@7", B: "c#6 ~@7 e6 ~@7", C: "b6 ~ a6 ~@13", D: "b5 ~ a5 ~@13", E: "~@2 f#7 ~@5 a7 ~@7",
  F: "~@2 b7 ~@13",
})).s("gm_music_box").gain(0.1).pan(0.4)

// chords · pad warm
const pad_warm = note(`<
  ~@22 A@4 B@2 C@4 B@2 ~@4 D@2 E@2 D@2 E@2 A@4 B@2 C@4 B@2 ~@4 D@2 E@2 D@2 E@2 F@2 G@2 F@2 G@2 F@2 G@2 F@2 G@2 A@4 B@2
  A@4 B@2 C@4 B@2 ~@8 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 F@2 G@2 F@2 G@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 E@2 D@2 ~@6
>`.pickRestart({
  A: "[a3,c#4,e4,f#4]/4", B: "[a3,c#4,d4,f#4]/2", C: "[a3,c#4,e4,f#4]/2", D: "[a3,c#4]", E: "[a3,d4]/2",
  F: "[a3,c#4]/2", G: "[b3,d4]/2",
})).s("gm_pad_warm").gain(0.17)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@46 A B A B C D A B A E F D ~@106>".pickRestart({
  A: "[c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 ~ c#4 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2, ~@3 [c#4,e4] ~@4", // C#m
  B: "[c#4,e4]@2 ~ c#4 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 ~ c#4 [c#4,e4]@2 [c#4,e4]@2, ~ [c#4,e4] ~@3 [c#4,e4] ~@2", // C#m
  C: "[d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 ~ d4 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2, ~@3 [d4,f#4] ~@4", // D
  D: "[d4,f#4]@2 ~ d4 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 ~ d4 [d4,f#4]@2 [d4,f#4]@2, ~ [d4,f#4] ~@3 [d4,f#4] ~@2", // D
  E: "[c#4,e4]@2 ~ c#4 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2, ~ [c#4,e4] ~@6", // C#m
  F: "[d4,f#4]@2 ~ d4 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2 [d4,f#4]@2, ~ [d4,f#4] ~@6", // D
})).s("gm_electric_guitar_clean").gain(0.19)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A@7 B C@8 A@16 C@8 A@5 D A@10 C@8 E@2 F E@4 F@2 E F E@3 F B A@26 C@16 E@2 F E@4 F C@27 G
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x!2", C: "x ~@2 x!2 ~@3", D: "x ~@2 x ~ x ~@2", E: "x ~@2 x!2 ~@2 x", F: "x ~@3 x ~@2 x",
  G: "x",
})).gain(0.42)

// drums · rim
const rim = s("rim").struct("<[~@5 x ~@3 x ~@3 x ~@2] [~ x ~@14] ~@162>").gain(0.25)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A B C D E ~@80 F G@3 H I ~@43 J ~@28>".pickRestart({
  A: "~@5 x ~@10", B: "~@7 x ~ x ~@6", C: "~@11 x ~ x ~@2", D: "~@15 x", E: "~@2 x ~ x ~ x ~ x!2 ~ x!2 ~ x ~",
  F: "~@6 x!2", G: "x!3 ~@3 x!2", H: "x!3 ~@2 x!3", I: "x!3 ~@3 x ~", J: "~@7 x ~@8",
})).gain(0.21)

// drums · clap
const clap = s("cp").struct(`<
  ~@2 A B C ~@16 D ~@12 E ~ E ~@8 D ~@11 F E ~ E ~@8 D G@16 ~@18 E ~ E ~ E ~ E ~@8 D ~@7 D G@8 ~@7 H ~@7 H ~@7 H ~@4
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@11 x ~@4", C: "~@15 x", D: "~@5 x!3", E: "~ x ~@2", F: "~ x ~ x", G: "~@5 x!2 ~", H: "~@3 x",
})).gain(0.34)

// drums · low tom
const low_tom = s("lt").struct("<~@2 [~@3 x ~ x ~ x ~@8] [~@7 x ~ x ~ x ~@4] [~@11 x ~ x ~ x] ~@159>").gain(0.42)

// drums · hihat
const hihat = s("hh").struct("<~@6 [x!4]!157 x>").gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A B C D ~@10 E ~ E ~ E ~@19 E ~ E ~ E ~@19 E ~ E ~ E ~@2 E@15 ~@28 E ~ E ~ E ~@3 E ~ E ~ E ~@2 E@8 ~ E ~ E ~ E ~@3 E
  ~ E ~ E ~@3 E ~ E ~ E ~@3 E ~@2
>`.pickRestart({
  A: "~@9 x ~@2 x ~@2 x", B: "~ x ~@5 x ~@5 x ~@2", C: "x ~@2 x ~ x ~@5 x ~@4", D: "~ x ~@2 x ~@2 x ~ x ~@5 x",
  E: "~@7 x",
})).gain(0.42)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~ [~@8 x ~@2 x ~@2 x ~] [~@12 x ~@2 x] [~ x ~@6] [x ~@2 x ~@2 x ~@9] ~@159>")
  .gain(0.13)

// drums · open hat
const open_hat = s("oh").struct("<~@5 [~@2 x ~@3 x ~@2 x ~@4 x ~] ~@158>").gain(0.17)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@34 A ~ A ~@21 A ~ A ~@43 A ~ A ~ A ~ A ~@53>".pickRestart({
  A: "~ x",
})).gain(2.47)

// drums · claves
const claves = s("clave:2").struct("<~@92 [x ~ x ~ x!3 ~]!20 ~@52>").gain(1.65)

// drums · claves · soft notes
const claves_soft = s("clave:2").struct("<~@93 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@52>".pickRestart({
  A: "~@7 x",
})).gain(0.82)

stack(
  bass, bass_soft, synth_strings_1, tubular_bells, tubular_bells_soft, bass_2, music_box, pad_warm,
  electric_guitar_clean, kick, rim, snare, snare_soft, clap, low_tom, hihat, mid_tom, mid_tom_soft, open_hat, vibraslap,
  claves, claves_soft
)

More by Young Paul