Strudelify
Are You Ready for Loving Me cover art

De Top 10 Van

Are You Ready for Loving Me

Rene Froger

KeyG majorTempo135 bpm
0:00/0:00
// Are You Ready for Loving Me — Rene Froger
// 135 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · "A.Piano"
const piano = note(`<
  ~@20 A@2 B@2 C@2 B@2 D E F G H@2 I@2 J ~@16 A@2 B@2 C@2 B@2 D E F G H@2 I@2 J ~@16 K L M N O P Q R ~@31 S
>`.pickRestart({
  A: "[[a2,g3,c4,e4]@31 ~]/2", B: "[[g2,b3,d4,f#4]@31 ~]/2", C: "[[c4,e4]@26 ~@2 e4@3 ~, [a2,g3]@31 ~, ~@26 c4@5 ~]/2",
  D: "[c3,b3,e4,b4]@15 ~", E: "[c3,d4,f#4,a4]@15 ~", F: "[b2,d4,f#4,a4]@15 ~", G: "[e3,b3,d4,g4]@15 ~",
  H: "[[a3,c4]@26 ~@2 c4@2 a2 ~, e4@31 ~, a2@7 ~, ~@26 a3@5 ~]/2", I: "[[d3,g3,c4,e4]@15 ~]/2", J: "[d3,a3,d4] ~@15",
  K: "[f4,a#4,d5]@15 ~", L: "[g4,c5,e5]@15 ~", M: "[e4,g4,c5]@15 ~", N: "[f4,a4,d5]@15 ~", O: "[d#4,g4,a#4]@15 ~",
  P: "[a#3,d#4,g4]@7 ~", Q: "[c4,e4,g4]@7 ~ [e4,g4,c5]@7 ~", R: "[f#4,a4,d5]@3 ~@13",
  S: "~@4 [d5,f#5,a5] [d5,g5,b5] ~@2", // D G
})).s("gm_piano").gain(0.42).pan(0.4)

// bass · electric bass finger · "#Fing.Bas"
const bass = note(`<
  ~@4 A@2 B C D E F@2 A@2 B C D E F@2 D@2 F G D@2 F@2 A@2 B H I@2 E@2 J A@2 B C D E F@2 A@2 B C D E F K D@2 F G D@2 F@2
  A@2 B H I@2 E@2 J A@2 B C D E F@2 A@2 B C D E F K L@2 D E M A E J A@2 B C D E F@2 A@2 B C D E F K A@2 B C D E F@2 A@2
  B C D E F N
>`.pickRestart({
  A: "c2 c3 c2 c3 c2 c3 c2 c3", B: "b1 b2 b1 b2 b1 b2 b1 b2", C: "e2 e3 e2 e3 e2 e3 e2 e3",
  D: "a1 a2 a1 a2 a1 a2 a1 a2", E: "d2 d3 d2 d3 d2 d3 d2 d3", F: "g1 g2 g1 g2 g1 g2 g1 g2",
  G: "g1 g2 g1 g2 g1 g2 g#1 g#2", H: "e1 e2 f#1 f#2 g1 g2 g#1 g#2", I: "a1 a2 g1 g2 e1 e2 g1 g2", J: "d2 ~@7",
  K: "g1 g2 g1 g2 ~ g#1@2 g#2", L: "a#1 a#2 a#1 a#2 a#1 a#2 a#1 a#2", M: "d#2 d#3 d#2 d#3 d#2 d#3 d#2 d#3",
  N: "g1@2 g2@2 g1@2 g2@2 g2 ~ g1@3 ~@3",
})).s("gm_electric_bass_finger").gain(0.64)

// other · brass section · "Brass Sec"
const brass_section = note(`<
  ~@4 A B C@2 D@2 E F A B C@2 D@2 E G ~@15 H I J@2 K@2 L M N O P@2 Q@2 L M R S ~@15 H I J@2 K@2 L M N O P@2 Q@2 L M R S
  ~@3 T@2 U V I J@2 K@2 L M N O P@2 Q@2 L M R S J@2 K@2 L M N O P@2 Q@2 L M W X
>`.pickRestart({
  A: "~@2 [e4,e5] ~ [e4,e5]@2 [c4,c5] ~ [e4,e5]@2 [c4,c5] ~ [g4,g5]@2 [f#4,f#5] ~", B: "~@2 [d4,d5] ~@13",
  C: "[~@2 [f#4,f#5] ~ [f#4,f#5]@2 [d4,d5] ~ f#5@2 [d4,d5] ~ [a4,a5]@2 [g4,b4,e5,g5]@17 ~, ~@8 f#4 ~@3 b4 ~@19]/2", // F# D A Em
  D: "~@2 [g4,g5] ~@3 [g4,g5] ~@3 [g4,g5] ~@5", E: "~@2 [g4,g5] ~@3 [g4,g5] ~@9",
  F: "~@2 d4 e4 g4 ~ [g3,g4]@3 ~ [a3,a4] [b3,b4] [d4,d5] [e4,e5] [g4,g5] ~", // G A B D E G
  G: "~@2 d4 e4 g4 ~ g3@3 ~ [a3,a4] [b3,b4] [d4,d5] [e4,e5] [g4,g5] ~", // A B D E G
  H: "~@10 [d4,d5] [e4,e5] [g4,g5] [a4,a5] [c5,c6] [c#5,c#6]", I: "[d5,d6] ~@7",
  J: "[~@2 [e4,e5] ~ [e4,e5]@2 [c4,c5] ~ [e4,e5]@2 [c4,c5] ~ [g4,b4,g5]@2 [f#4,a4,f#5]@16 ~@2, ~@6 d5@9 ~]/2", // E C E C G F#m
  K: "[[f#4,f#5]@2 [d4,d5] ~ [f#4,f#5]@2 [d4,d5] ~ f#5@2 [d4,d5] ~ [a4,a5]@2 [g4,b4,e5,g5]@17 ~, ~@8 f#4 ~@23]/2", // F# D F# D A Em
  L: "[e4,e5]@4 [e4,e5]@5 ~ [e4,e5] ~@5", M: "[e4,e5]@3 ~ [e4,e5]@4 ~@2 [e4,e5] ~@5", N: "~@2 [g4,g5] ~@5 [g4,g5] ~@7",
  O: "~@2 [g3,g4] [a3,a4] [b3,b4] ~ [a3,a4] [b3,b4] [d4,d5] ~ [b3,b4] [d4,d5] [e4,e5] ~ [d4,d5] [e4,e5]", // G A B A B D B D …
  P: "[[g4,g5] ~ [g4,g5] ~ [g4,g5]@2 [e4,e5] ~ [g4,g5]@2 [e4,e5] ~ [b4,g5,b5]@2 [a4,f#5,a5]@14 ~@4, ~@3 d5@4 ~]/2", // G E G E Em D
  Q: "[[f#4,f#5]@2 [d4,d5] ~ [f#4,f#5]@2 [d4,d5] ~ [f#4,f#5]@2 [d4,d5] ~ [a4,b4,e5,a5]@2 [g4,b4,e5,g5]@17 ~]/2", // F# D F# D F# D Asus2 Em
  R: "[d4,d5]@3 ~ [d4,d5]@4 ~@2 [d4,d5] ~@3 [b3,b4] [d4,d5]", // D B D
  S: "[e4,e5] ~ [d4,d5] [e4,e5] [g4,g5] ~ [e4,e5] [g4,g5] [a4,c5,e5,a5]@2 [b4,d5,g5,b5]@6", // E D E G E G Am G
  T: "[~@3 [f3,f4] [a3,a4] [a#3,a#4] ~ [a#3,a#4]@8 ~]/2", U: "~@3 [c4,c5] [d#4,d#5] [g4,g5] ~@2",
  V: "~@12 [g4,g5] [a4,a5] [c5,c6] [c#5,c#6]", W: "[d4,d5]@9 ~ [a3,a4] [b3,b4] [d4,d5] ~ [b3,b4] [d4,d5]",
  X: "[e4,e5] ~ [d4,d5] [e4,e5] [g4,g5] ~ [e4,e5] [g4,g5] [a4,c5,e5,a5]@2 [b4,d5,g5,b5]@2 ~@4", // E D E G E G Am G
})).s("gm_brass_section").gain(0.76).pan(0.7)

// other · string ensemble 1 · "#Vlo.Strn"
const string_ensemble_1 = note(`<
  ~@4 A B C D E F G H A B C D E F G H ~@7 I J K@2 L M@4 N A B C D E F G H A B C D E F G H ~@7 I J K@2 L M@4 N A B C D E
  F G H A B C D E F G H ~@8 O P Q D E F G H R S T U V F G H O P Q D E F G H R S T U V F W ~
>`.pickRestart({
  A: "[e4,e5]@3 [g4,g5]", B: "[f#4,f#5]@2 [d4,d5] [c4,c5]", C: "[b3,b4]@2 [d4,d5] [f#4,f#5]",
  D: "[g4,g5]@2 [e4,e5] [d4,d5]", E: "[c4,c5]@2 [e4,e5] [g4,g5]", F: "[c5,c6]@6 [b4,b5] [c5,c6]",
  G: "[d5,d6]@2 [b4,b5] [g4,g5]", H: "[d4,d5]", I: "d4 e4 g4 a4", J: "[e4,b4]", K: "[f#4@3 e4 d4@4, a4]/2",
  L: "e4@3 d4, g4", M: "[c4 e4 c5@2, g4]/4", N: "[a4,d5] ~@15", O: "[g4,g5]@3 [b4,b5]",
  P: "[a4,a5]@2 [f#4,f#5] [e4,e5]", Q: "[d4,d5]@2 [f#4,f#5] [a4,a5]", R: "[e5,e6]@3 [g5,g6]", S: "[f#5,f#6]",
  T: "[d5,d6]@3 [f#5,f#6]", U: "[e5,e6]@2 [d5,d6] [b4,b5]", V: "[g4,g5]@2 [e4,e5] [g4,g5]", W: "[d5,d6]",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.2)

// chords · string ensemble 1 · "#St.Strin"
const string_ensemble_1_2 = note(`<
  ~@4 A@2 B C D E F@2 A@2 B C D E F@2 G@2 H@2 G@2 H@2 I J K L M@2 N@2 O A@2 B C D E F@2 A@2 B C D E F@2 G@2 H@2 G@2 H@2
  I J K L M@2 N@2 O A@2 B C D E F@2 A@2 B C D E F@2 P Q R S T U V W A@2 B C D E F@2 A@2 B C D E F@2 A@2 B C D E F@2 A@2
  B C D E X@2
>`.pickRestart({
  A: "[[g3,c4,e4]@15 ~ [a3,d4,f#4]@15 ~, c3]/2", B: "[b2,a3,d4,f#4]", C: "[e3,b3,d4,g4]@15 ~", D: "[a2,c4,e4,g4]",
  E: "[c3,g3,c4,e4]", F: "[[g2,g3,b3,d4]@31 ~]/2", G: "[a2,g3,c4,e4]/2", H: "[g2,b3,d4,f#4]/2",
  I: "[e5,e6]@3 [a5,a6], [c3,g3,c4,e4]", J: "[f#5,f#6]@3 [e5,e6], [c3,a3,d4,f#4]",
  K: "[d5,d6]@3 [f#5,f#6], [b2,a3,d4,f#4]", L: "[g5,g6]@3 [e5,e6], [e3,b3,d4,g4]",
  M: "[[g4,g5] [a4,a5] [b4,b5] [e5,e6], [a2,g3,c4,e4]]/2", N: "[d3,g3,c4,e4,d5,d6]/2", O: "[d3,a3,d4,f#4] ~@15",
  P: "[a#3,f4,a#4,d5]", Q: "[a#3,g4,c5,e5]", R: "[a3,e4,g4,c5]", S: "[d4,f4,a4,d5]", T: "[d#4,g4,a#4,d#5]",
  U: "[c4,d#4,g4,a#4]", V: "[d4,e4,g4,c5] [e4,g4,c5,e5]", W: "[a4,d5,f#5]@3 ~@13", X: "[[g2,g3,b3,d4]@7 ~]/2",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.3)

// chords · electric guitar clean · "#Chrs.Gtr"
const electric_guitar_clean = note(`<
  ~@4 A B C D E F G@2 A B C D E F G@2 H@2 I@2 H@2 I@2 A B C D E@2 F@2 J A B C D E F G@2 A B C D E F G@2 H@2 I@2 H@2 I@2
  A B C D E@2 F@2 J A B C D E F G@2 A B C D E F G@2 ~@8 A B C D E F G@2 A B C D E F G@2 A B C D E F G@2 A B C D E F G K
>`.pickRestart({
  A: "~ g3@2 [c3,g3,c4,e4] [c3,g3] ~ [c4,e4] c3!2 g3@2 [c3,g3,c4,e4] [c3,g3] ~ [c4,e4] c3", // C C5 C C5 C
  B: "[d3,a3] [d3,a3]@2 [d3,a3,d4,f#4] [d3,a3] ~ [d4,f#4] d3 ~ [d3,a3]@2 [d3,a3,d4,f#4] [d3,a3] ~ [a3,d4] d3, [d4,f#4]@3 ~@5 f#4@3 ~@5", // D5 D D5 D D5 D D5 D
  C: "[b2,a3] [b2,a3]@2 [b2,a3,d4,f#4] b2 ~ [a3,d4] b2 [b2,a3] [b2,a3]@2 [b2,a3,d4,f#4] [b2,a3] ~ [a3,d4] b2, [d4,f#4]@3 ~@5 [d4,f#4]@3 ~@5", // B7 Bm7 D5 B7 Bm7 B7 D5 D
  D: "[e3,b3] [e3,b3]@2 [e3,b3,e4,g4] e3 ~ [b3,e4] e3 [e3,b3] [e3,b3]@2 [e3,b3,e4,g4] [e3,b3] ~ [b3,e4] e3, [e4,g4]@3 ~@5 [e4,g4]@3 ~@5", // E5 Em E5 Em E5 Em
  E: "[a2,a3] [a2,a3]@2 [a2,a3,c4,e4] [a2,a3] ~ [c4,e4] a2 ~ [a2,a3]@2 [a2,a3,c4,e4] [a2,a3] ~ [a3,c4] a2, [c4,e4]@3 ~@5 e4@3 ~@5", // A Am A C A Am A Am …
  F: "[d3,g3] ~ g3 [d3,g3,c4,e4] [d3,g3] ~ [c4,e4] d3 ~@2 g3 [d3,g3,c4,e4] [d3,g3] ~ [g3,c4] d3, [c4,e4]@3 ~@5 e4@3 ~@5, ~ [d3,g3]@2 ~@6 [d3,g3]@2 ~@5", // G5 C G5 C G5 C5 C G5
  G: "[g3,b3] ~ b3 [g3,b3,d4,g4] [g3,b3] ~ [d4,g4] g3 ~@2 b3 [g3,b3,d4,g4] [g3,b3] ~ [b3,d4] g3, [d4,g4]@3 ~@5 g4@3 ~@5, ~ [g3,b3]@2 ~@6 [g3,b3]@2 ~@5", // G G5 G Bm G5 G
  H: "[a2,g3] [a2,g3]@2 [a2,g3,c4,e4] [a2,g3] ~ [c4,e4] a2 ~ [a2,g3]@2 [a2,g3,c4,e4] [a2,g3] ~ [g3,c4] a2, [c4,e4]@3 ~@5 e4@3 ~@5", // A7 Am7 A7 C A7 Am7 A7 C5 …
  I: "[g3,b3] ~ b3 [g3,b3,d4,f#4] [g3,b3] ~ [d4,f#4] g3 ~@2 b3 [g3,b3,d4,f#4] [g3,b3] ~ [b3,d4] g3, [d4,f#4]@3 ~@5 f#4@3 ~@5, ~ [g3,b3]@2 ~@6 [g3,b3]@2 ~@5", // G Gmaj7 G D Gmaj7 G Bm D …
  J: "[d3,a3,d4,f#4] ~@7", K: "[g3,b3] ~ b3 [g3,b3,d4,g4] [g3,b3] ~ [d4,g4] g3 ~@8, [d4,g4]@3 ~@13, ~ [g3,b3]@2 ~@13",
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.8)

// chords · electric guitar clean · "#Chrs.Gtr" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@4 A B C D B ~@3 A B C D B ~@3 E@2 ~@2 E@2 ~@2 A B C D B@2 ~@3 A B C D B ~@3 A B C D B ~@3 E@2 ~@2 E@2 ~@2 A B C D
  B@2 ~@3 A B C D B ~@3 A B C D B ~@11 A B C D B ~@3 A B C D B ~@3 A B C D B ~@3 A B C D B ~@3
>`.pickRestart({
  A: "[c3,g3] ~ g3 ~@5 g3 ~ g3 ~@5, [c4,e4]@3 ~@5 [c4,e4]@3 ~@5, ~ c3@2 ~@6 c3@2 ~@5", B: "~@2 a3 ~@7 a3 ~@5",
  C: "~@2 a3 ~ a3 ~@5 a3 ~@5", D: "~@2 b3 ~ b3 ~@5 b3 ~@5", E: "~@2 g3 ~@7 g3 ~@5",
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.8)

// other · glockenspiel · "#Glck.Chm"
const glockenspiel = note("<~@21 A B@4 C@2 D E F G ~@22 A B@4 C@2 D E F G ~@61>".pickRestart({
  A: "~ [c6,c7] [g6,g7] [f#6,f#7]", B: "[[d6,d7]@13 [c6,c7] [g6,g7] [f#6,f#7]]/4",
  C: "[d6@16 d5@3 ~ [e5,e6]@4 [g5,g6]@4 [a5,a6]@3 ~, d7, ~ d6]/2", D: "[e6,e7]@11 ~ [a6,a7]@4",
  E: "[f#6,f#7]@3 [e6,e7]", F: "[d6,d7]@3 [f#6,f#7]", G: "[g6,g7]@7 ~",
})).s("gm_glockenspiel").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  A@6 B A B A@2 B A@2 B A B A@2 B A@16 C A@2 B A B A@2 B A@2 B A B A@2 D A@16 C A@2 B A B A@2 B A@2 B A B A@2 D A@7 C
  A@2 B A B A@2 B A@2 B A B A@2 D A@2 B A B A@2 B A@2 B A B A@2 E
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x", D: "x ~ x ~ x!4", E: "x ~ x!4 ~@2",
})).gain(0.72)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@3 A ~@7 B ~@7 C ~@15 D ~@8 B ~@7 C ~@15 D ~@8 B ~@7 C ~@6 D E ~@7 B ~@7 C ~@7 B ~@7 F
>`.pickRestart({
  A: "~@9 x ~@3 x!2 ~", B: "~@9 x ~@6", C: "~@3 x ~@4", D: "~@7 x ~@3 x ~ x!2 ~", E: "~@5 x ~@2", F: "~ x ~ x ~@4",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@32 A ~@32 A ~@23 B ~@15 C>".pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@5 x ~@2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@2 B@16 C@16 ~ B@16 C@16 ~ B@16 D@7 ~ B@30 E F>".pickRestart({
  A: "x!14 ~@2", B: "x!4", C: "x!7 ~", D: "x!8", E: "~ x ~ x ~ x ~ x", F: "~ x ~ x ~@2 x ~",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@11 A ~@7 B ~@16 C ~@7 A ~@7 B ~@16 C ~@7 A ~@7 B ~@7 D ~@7 A ~@7 E ~@7 A ~@8
>`.pickRestart({
  A: "~@4 x ~@2 x", B: "~@12 x!2 ~@2", C: "~@5 x ~ x", D: "~@7 x", E: "~@12 x!3 ~",
})).gain(0.64)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@11 A ~@32 A ~@32 A ~@23 A ~@15 A ~@8>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A@2 B@16 A@16 ~ B@16 A@16 ~ B@16 ~@8 B@30 C D>".pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~ x", C: "x!4", D: "x ~ x ~ x!2 ~@2",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@19 A ~@32 A ~@32 A ~@23 B ~@16>".pickRestart({
  A: "~@5 x ~@2", B: "~@9 x!3 ~@4",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@7 A ~@7 A ~@16 A ~@7 A ~@7 A ~@16 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@5 A ~
>`.pickRestart({
  A: "x",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct("<~@86 [x!4]!7 ~@33>").gain(0.56)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@86 [~ x ~ x ~ x ~ x]!7 ~@33>").gain(0.16)

// drums · congas
const congas = s("conga:13").struct(`<
  ~
  [~ x ~@2 x!2 ~@2]!35
  ~
  [~ x ~@2 x!2 ~@2]!32
  ~
  [~ x ~@2 x!2 ~@2]!23
  ~
  [~ x ~@2 x!2 ~@2]!32
>`).gain(1.54)

// … 19 more lines

More by Rene Froger