Strudelify

Turn Your Love Around

George Benson

KeyC majorTempo105 bpm
0:00/0:00
// Turn Your Love Around — George Benson
// 105 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 7 "Slap Bass 1" slap bass 1 (copy of ch 2 "Acoustic Bass" acoustic bass)
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · epiano1 · "E.Piano"
const epiano1 = note(`<
  A@2 B@8 C@5 D E@2 F@6 G@5 H@6 I J@2 K@2 L@7 D M@5 N@6 O@5 P Q@3 ~ R@6 S@2 T@6 S U V@6 W X Y@8 Z@3 ~
>`.pickRestart({
  A: "[~@8 [b3,d4]@4 [b3,d4,g4]@3 [a3,c4,e4]@17, ~@8 g3@7 f3 ~@16]/2", // Bm G Am
  B: "[~@8 [g3,b3,d4]@4 [a2,b3,d4,g4] ~@2 [d2,f3,a3,c4,e4]@24 ~ [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@2 [d2,f3,a3,c4,e4]@24 ~ [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@27 [g3,a#3,c#4,f4]@4 [a2,g3,a#3,c#4,f4]@3 ~ d2@16, ~@79 [d2,f3,a3,c4,e4]@32 [f3,a3,c4,e4]@17, ~@104 a1@7 ~@17]/8", // G Dm7 G Dm7 G Gm7b5 Dm7 Fmaj7
  C: "[~@8 [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@2 [d2,f3,a3,c4,e4]@24 ~ [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@32 f4@3, ~@47 [d2,f3,a3,c4]@32 ~, ~@47 e4@28 e4@5, ~@9 [g1,g3,b3,d4]]/5", // G Dm7 G Dm7 G
  D: "~@13 g3@3, [c2,b3,e4], g3@13 ~@3, ~@5 e3@3", // Cmaj7
  E: "[[g3,a#3,c#4]@4 [g3,a#3,c#4]@4 [a#3,c#4]@4 [a#3,c#4,g4]@3 [d2,f3,a3,c4,e4]@8 ~@9, a1 ~, f4 [g3,f4] ~@2, ~@4 e4@11 ~@17]/2", // Gdim A#m Gdim Dm7 G7
  F: "[~@8 [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@2 [d2,f3,a3,c4,e4]@24 ~ [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@32 f4@2 ~@14 g3@3, ~@47 [d2,f3,a3,c4]@32 ~ c2@16, ~@47 e4@28 e4@4 [b3,e4]@17, ~@72 [g1,g3,b3,d4]@8 g3@13 ~@3, ~@15 e3]/6", // G Dm7 G Dm7 E5 G
  G: "[[g3,a#3,c#4]@4 [g3,a#3,c#4]@4 [a#3,c#4]@4 [a#3,c#4,g4]@3 ~@13 g4@3 ~@13 g4@3 ~@13 g4@3 [e3,g#3,b3,d4]@2 ~@15, a1@16 ~@16 g1@15 ~ f1@16 ~@16, f4@8 [g3,f4]@8 ~@8 d4@7 [f3,a3,c4,e4]@16 [f3,a3,c4,e4]@17 ~@16, ~@4 e4@11 [f1,f3,a3,c4,e4]@16 ~@9 d4@7 ~@9 d4@7 e1 ~@16]/5", // Gdim A#m Gdim E7 G7 Fmaj7
  H: "[[g3,a3,c4,e4]@12 [g3,a3,c4,e4]@2 ~ [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@7 [g3,a3,c4,e4]@13 [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@8 ~ [g#3,b3,d4,f4]@7 [g3,a3,c4,e4]@11 ~@2 [g3,a3,c4,e4]@3 ~ a3@7 ~ [g#3,b3,d4,f4]@7 ~, ~@79 [c4,e4,g4]@8 ~@9]/6", // Am7 G#dim Am7 G#dim Am7 G#dim C
  I: "f3@3 ~@10 d4@3, e4@11 c4@5, c4 a3, a3@5 g3@11, ~@3 f3@13",
  J: "[[g#3,b3,e4]@8 [g3,a#3,c#4]@3 [g3,a#3,c#4,e4]@4 ~ e4@10 ~@6, ~@8 f4@7 [f3,a3,c4]@11 ~@6]/2", // E Gdim F
  K: "[~@8 [a1,g3,b3,d4]@4 [a2,b3,d4,g4] ~@2 [d2,f3,a3,c4,e4]@17]/2", // G Dm7
  L: "[~@8 [a1,g3,a#3,c#4] ~@3 [a2,g3,a#3,c#4,f4] ~@3 d2@23 ~ [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@2 [d2,f3,a3,c4,e4]@24 ~ [a1,g3,b3,d4] ~@3 [a2,b3,d4,g4] ~@32 f4@3, ~@8 f4@2 ~@5 [f3,a3,c4,e4]@24 ~@40 [d2,f3,a3,c4]@32 ~, ~@79 e4@28 e4@5, ~@13 [g1,g3,b3,d4]]/7", // Gdim Gm7b5 G Dm7 G Fmaj7 Dm7 G
  M: "[[g3,a#3,c#4]@4 [g3,a#3,c#4]@4 [a#3,c#4]@4 [a#3,c#4,g4]@3 ~@13 g4@3 ~@13 g4@3 ~@13 g4@3 ~ [e1,e3] ~@15, a1@16 ~@16 g1@15 ~ f1@16 ~@16, f4@8 [g3,f4]@8 ~@8 d4@7 [f3,a3,c4,e4]@16 [f3,a3,c4,e4]@17 ~@16, ~@4 e4@11 [f1,f3,a3,c4,e4]@16 ~@9 d4@7 ~@9 d4@7 [g#3,b3,d4]@2 ~@15]/5", // Gdim A#m Gdim E G7 Fmaj7 G#dim
  N: "[[g3,a3,c4,e4]@12 [g3,a3,c4,e4]@2 ~ [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@7 [g3,a3,c4,e4]@13 [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@7 [g3,a3,c4,e4]@11 ~@2 [g3,a3,c4,e4]@3 ~ a3@7 ~ [g#3,b3,d4,f4]@7 ~, ~@79 [c4,e4,g4]@8 ~@9]/6", // Am7 G#dim Am7 G#dim Am7 G#dim C
  O: "[[f3,c4,e4]@15 [f#3,a3,b3,d4]@8 [f3,g#3,b3,d4]@8 ~ g3@15 [f#3,a3]@5 [f#3,a3,b3,d4]@3 ~ [e3,f#3,a3,c4]@3 ~ [f#3,a3,b3,d4]@3 ~ f3@15 ~, ~@31 [a3,c4,e4]@16 [c4,e4]@8 ~@8 [a3,c4,e4]@16 ~]/5", // Fmaj7 Bm7 Fdim F#m Bm7 F#m7b5 Bm7 Am …
  P: "[a3,b3] [a3,b3,d4,f4] g#3 [f3,g#3,b3,d4], [f#3,e4] e4, ~@8 c4 ~@7", // Asus2 Bm7b5 Fdim F#7
  Q: "[[c4,e4]@6 ~ c4@8 [c4,e4]@7 ~ c4@8 [c4,e4]@7 ~ c4@8 [e3,g#3,b3,d4], [g3,a3]@15 g3@16 [f3,a3]@16 ~, ~@6 e4@9 ~@7 e4@9 ~@7 e4@9 ~]/3", // C E7 Gsus2 F
  R: "[[g3,a3,c4,e4]@12 [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@6 ~ [g3,a3,c4,e4]@12 ~ [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@6 ~ [g3,a3,c4,e4]@12 ~ [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@7 ~]/6", // Am7 G#dim Am7 G#dim Am7 G#dim
  S: "[f3,a3,c4,e4]@15 ~", // Fmaj7
  T: "[[g3,a3,c4,e4]@12 [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@7 [g3,a3,c4,e4]@13 [g3,a3,c4,e4]@2 ~ [a3,c4,e4,g4]@8 ~ [g#3,b3,d4,f4]@6 ~ [g3,a3,c4,e4]@13 [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@7 ~]/6", // Am7 G#dim Am7 G#dim Am7 G#dim
  U: "[f3,a3,c4,e4]@7 ~", // Fmaj7
  V: "[[g3,a3,c4,e4]@12 [g3,a3,c4,e4]@2 ~ [a3,c4,e4,g4]@8 ~ [g#3,b3,d4,f4]@7 [g3,a3,c4,e4]@12 ~ [g3,a3,c4,e4]@3 [a3,c4,e4,g4]@8 ~ [g#3,b3,d4,f4]@7 [g3,a3,c4,e4]@13 [g3,a3,c4,e4]@2 ~ [a3,c4,e4,g4]@9 [g#3,b3,d4,f4]@7 ~]/6", // Am7 G#dim Am7 G#dim Am7 G#dim
  W: "f3@3 ~@10 d4@2 ~, e4@11 c4@4 ~, c4@8 a3@7 ~, a3@6 g3@9 ~, ~@3 f3@12 ~",
  X: "[g#3,b3,e4]@8 [g3,a#3,c#4]@3 [g3,a#3,c#4,e4]@4 ~, ~ f4", // E Gdim
  Y: "[~@24 [b3,d4]@4 [a2,b3,d4,g4]@3 [d2,f3,a3,c4,e4]@24 ~ [b3,d4]@4 [a2,b3,d4,g4]@3 ~ d2@23 ~ [b3,d4]@4 [a2,b3,d4,g4]@3 ~@25 [g3,a#3,c#4,f4]@4 [a2,g3,a#3,c#4,f4]@3 f3, [f3,a3,c4,e4]@31 ~@32 [f3,a3,c4,e4]@24 ~@8 [f3,a3,c4,e4]@32 ~, ~@24 [a1,g3]@8 ~@24 [a1,g3]@7 ~@25 [a1,g3]@7 ~ d2@32]/8", // Bm G Dm7 Bm G Bm G Gm7b5 …
  Z: "[~ c4@2, [d2,a3]@7 e4@32 ~@9, c4@3 [f4,a4]@16 ~@5, e4@5 c5@32 ~@11, ~ e5@8 ~@3]/3", // D5 F
})).s("gm_epiano1").gain(0.47)

// bass · acoustic bass
const bass = note(`<
  ~ A@2 B@2 C@2 D@2 A@2 B@2 E@2 F G A@2 B@2 E@2 H I J K L ~ M N M N M O P Q C@2 D@2 A@2 B@2 E@2 H I J K R@2 M N M N M O
  S@3 T U@5 ~ M N M N M O V W@2 N M N M O V X M N M N M O P Q A@2 B@2 C@2 Y@4 ~@2
>`.pickRestart({
  A: "[~ a1 c2 ~ d2 ~ c2 ~ d2@3 ~ d2 ~@2 c2@2 ~ d2 ~ d2 ~@11]/2",
  B: "[~ a1 c2 ~ d2 ~ c2 ~ d2@3 ~ d2 ~@2 c2@2 ~ d2 ~ d2 ~@6 g2@2 a1 ~@2]/2",
  C: "[~ a1 c2 ~ d2 ~ c2 ~ d2@3 ~ d2 ~@2 c2@3 d2 ~ d2 ~@11]/2",
  D: "[~ a1 c2 ~ d2 ~ c2 ~ d2@3 ~ d2 ~@2 c2@2 ~ d2 ~ d2 ~@2 g2@2 a1 g2 ~ f2 ~ e2@2]/2",
  E: "[~ a1 c2 ~ d2 ~ c2 ~ d2@3 ~ d2 ~@2 c2@3 d2 ~ d2 ~@3 g1@3 ~ g1@3 ~]/2", F: "c2@2 ~ c2@2 f0 a1 ~ c2 ~@7",
  G: "a1@6 ~ g2@2 a1 g2 ~ f2 ~ e2@2", H: "c2@2 ~ c2@2 g1 a1 ~ c2@6 ~@2", I: "a1@3 ~ a1@3 ~ a1@3 ~ a1@2 g1 f1",
  J: "~@2 f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1", K: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 f1",
  L: "~@2 f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 e1", M: "a1 e1 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 g1@2 ~",
  N: "f1 ~ f1 ~ f1 ~ f1 ~ e1 ~ e1 ~ g1 ~ g1 ~", O: "f1 ~ f1 ~ f1 ~ f1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  P: "f1@2 ~ f1@2 c1 d1 ~ f1@7 ~", Q: "e1@15 ~", R: "[~@2 f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 e1@2 ~@15]/2",
  S: "[f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 b1@2 ~ b1 ~ b1 ~ b1 ~ e1 ~ e1 ~ e1 ~ e1 a1@2 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ e1 d1]/3",
  T: "~@2 d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 e1 ~ f1",
  U: "[~@2 f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 b1@2 ~ b1 ~ b1 ~ b1 ~ e1 ~ e1 ~ g1 e1 g1 a1@2 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 e1 a1 g1@2 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 e1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 d1 f1 e1]/5",
  V: "d1!2 ~ d1 e1@3 ~ f1!2 ~ f1 f#1@3 ~",
  W: "[g1!2 ~ g1 f1@2 ~@2 e2@3 ~ d2 ~ c2 a1 a1 e1 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 g1@2 ~, ~@4 g1@25 ~@3]/2",
  X: "g1!2 ~ g1 f1@2 ~@2 e2@3 ~ d2 ~ c2 a1", Y: "[~ a1 c2 ~ d2 ~ c2 ~ d2@3 ~ d2 ~@2 c2@2 ~ d2 ~ d2@8 ~@2 e2@32 ~@2]/4",
})).s("gm_acoustic_bass").gain(0.64)

// other · pan flute
const pan_flute = note("<~ A@2 B ~ C@2 B ~@29 A@2 B ~@53 A@2 B ~ C@2 B ~@5>".pickRestart({
  A: "[~@9 d5 e5 ~ g5 ~ a5 c6@3 a5 ~@13]/2", B: "~@8 e6 [c6,d6] d6 [a5,c6] g5 a5 ~ a5",
  C: "[~@9 d5 e5 ~ g5 ~ a5 c6@3 a5 ~ a5 ~@11]/2",
})).s("gm_pan_flute").gain(0.53)

// other · brass section · "Brass 1"
const brass_section = note(`<
  ~@27 A ~ B ~ C ~ B ~@17 D ~ B ~ C ~ B ~@9 D ~ B ~ C ~ B ~ E F B ~ C ~ B ~ E F B ~ C ~ B ~@15
>`.pickRestart({
  A: "~@15 [g#4,b4,e5]", B: "~ [c4,c5] [a3,a4] ~ [c4,c5] ~ [a3,a4] ~ [c4,c5] ~ [e4,e5] ~ [g3,g4] [a3,a4] ~ [a3,a4]",
  C: "~ [g3,g4] [a3,a4] [c4,c5] ~ [c4,c5] [d4,d5] [e4,e5] ~@4 [g4,b4,d5,g5]@3 [e4,a4,c5,e5]", D: "~@15 [g#3,b3,e4]",
  E: "~ [c4,c5] [a3,a4] [e3,e4] [g3,g4] [a3,a4] [d3,d4] [c3,c4] ~@8", // C A E G A D C
  F: "~ [a3,a4] [e3,e4] [c3,c4] [d3,d4] [e3,e4] [c3,c4] [a2,a3] ~@8", // A E C D E C A
})).s("gm_brass_section").gain(0.41).pan(0.4)

// other · string ensemble 2 · "Slow Strings"
const string_ensemble_2 = note(`<
  A@8 ~@6 B C D@2 ~@4 B E@8 F G H@3 ~ I@4 ~@5 B J@8 F G K@2 L M@8 ~ K@2 F G N G O P K@2 Q@2 N G R S T@2 U@2 V@3 ~ W@8 X
  ~@3
>`.pickRestart({
  A: "[~ g5@31]/8", B: "~@8 f4@3 g4@3 a4@2", C: "g4", D: "[f4@2 e4@2 f4@2 e4@3 ~@7]/2",
  E: "[g4@15 f4@5 e4@4 f4@4 g4@3 e4@9 d4@4 g4@3 e4@9 d4@4 g4@3 e4@9 d4@4 g4@3 [e4,g#4]@2 ~@14 g5@13 e5@3 c5@16 ~]/8", // E
  F: "g5 a5", G: "c5", H: "[g5@4 e5 c5@11]/3", I: "[g5@63 ~]/4",
  J: "[g4@15 f4@5 e4@4 f4@4 g4@3 e4@9 d4@4 g4@3 e4@9 d4@4 g4@3 e4@9 d4@4 g4@3 [e4,g#4]@2 ~@14 g5@13 e5@3 c5@17]/8", // E
  K: "[g5@12 e5@3 c5@17]/2", L: "[f4,a4,e5]@15 ~, c5 ~@15",
  M: "[[f#4,a4,b4,d5]@7 ~ [f4,g#4,b4,d5]@6 ~ [e4,g4,a4,c5]@15 ~ [e4,f#4,a4,c5]@16 [f4,a4,c5]@14 ~@2 [f#4,a4,b4,d5]@8 ~ [f4,g#4,b4,d5]@6 ~@2 [e4,g4]@15 [e4,g4,c5]@15 ~ [f4,a4,c5]@16 [e4,g#4,b4], ~@79 [a4,c5]@16 ~@33]/8", // Bm7 Fdim Am7 F#m7b5 F Bm7 Fdim Em …
  N: "g5@3 e5", O: "d5@4 e5@5 f5@3 f#5@4", P: "g5 f5 e5 d5", Q: "[g5@8 a5@4 g5@3 c5@17]/2",
  R: "~ d5@4 e5@3 f5@3 ~ f#5@4", S: "g5 ~@3 f5@4 e5@4 d5@4", T: "[~ g5@11 e5@3 c5@17]/2", U: "[g5@8 a5@5 e5@2 c5@17]/2",
  V: "[g5@9 ~@3 e5@3 c5@28 ~@5]/3",
  W: "[~@9 d5 e5 ~@3 a5 c6@3 a5 ~@21 [d6,e6] c6 d6 [a5,c6] ~ a5 ~ a5 ~@25 d5 e5 ~@3 a5 c6@3 a5 ~ a5 ~@19 [d6,e6] c6 d6 [a5,c6] ~ a5 ~ a5 ~@16, ~ g5@11 g5@32 g5@32 g5@32 g5@20]/8", // Dsus2 Am Dsus2 Am
  X: "~ [f4,a4,c5]@11 ~@4, e5@11 ~@5", // F
})).s("gm_string_ensemble_2").gain(0.34)

// drums · kick
const kick = s("bd").struct("<A B@27 C B@6 D E B@15 C B@15 C B@22 D E B@8 F ~@3>".pickRestart({
  A: "x!2 ~@2", B: "x ~@2 x!2 ~@3", C: "x ~@11 x!4", D: "x ~@2 x!2 ~ x ~", E: "x", F: "~@3 x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<~ A@27 B A@6 C ~ A@15 B A@15 B A@22 C ~ A@8 D ~@3>".pickRestart({
  A: "~ x ~ x", B: "x ~ x!2", C: "~ x ~@2", D: "~@11 x!2 ~@3",
})).gain(0.72)

// drums · clap
const clap = s("cp").struct("<~ A@27 ~ A@6 B ~ A@15 ~ A@15 ~ A@22 B ~ A@8 ~@4>".pickRestart({
  A: "~ x ~ x", B: "x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@13 x!3] ~@23 [~@13 x!3] ~@15 [~@13 x!3] ~@36>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<A B@27 ~ B@7 C B@15 ~ B@15 ~ B@23 C B@8 ~@4>".pickRestart({
  A: "x!2 ~@2", B: "x!8", C: "~ x ~ x ~ x ~@2",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~@5 x ~@2] ~@23 [~@5 x ~@2] ~@15 [~@5 x ~@2] ~@36>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~@7 A ~@7 A ~@11 B ~@7 C ~@3 A ~@3 A ~@3 A ~@3 B ~@15 B ~@23 C ~@7 A ~@4
>`.pickRestart({
  A: "~@15 x", B: "x", C: "~@13 x ~@2",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct("<~@101 [x!9 ~@7] ~@3>").gain(0.64)

stack(
  epiano1, bass, pan_flute, brass_section, string_ensemble_2, kick, snare, clap, low_tom, hihat, mid_tom, open_hat, ride
)

More by George Benson