Strudelify

Love Games

Level 42

KeyD majorTempo106 bpm
0:00/0:00
// Love Games — Level 42
// 106 bpm, 4/4, key D 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: Full arrangement: all 129 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(106/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 · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@4 A B C@2 ~@14 D@2 E F G H I J K@2 L M N O P Q R ~ E F G H I J ~@20 S T U V W X Y ~ L M N O P Q R ~@13 E F G H I J
  ~@4 E F G H I J ~@2 E F G H I J ~@2 E F Z ~@6
>`.pickRestart({
  A: "~@2 f#5 g5 ~@2 g5 ~ f#5 g5 ~ g5 ~@4, ~ [b4,d5,e5]@5 ~@2", // E7
  B: "~@2 f#5 g5 ~@2 g5 ~ f#5 g5 ~ g5 ~@4, ~@2 [b4,d5,e5]@11 ~@3", // E7
  C: "[[f#4,a4,d5]@10 ~@2 [f#4,a4,d5]@2 [g#4,b4,e5]@15 ~@3]/2", // D E
  D: "[[f#5,a5,d6]@11 ~ [f#5,a5,d6]@2 [g#5,b5,e6]@14 ~@4]/2", // D E
  E: "~@2 [d4,f#4,b4] ~ [d4,f#4,b4] a4 ~ [d4,f#4,a4] ~@2 b4 ~ [d4,f#4,b4] ~@3, ~@9 [d4,f#4,a4]@2 ~@5", // Bm D Bm D
  F: "~ b4 ~ [d4,f#4,b4] ~@3 b4 ~ [d4,f#4,b4] ~@6, [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@4", // Bm D
  G: "~ b4 ~ [d4,f#4,b4] ~@3 b4 ~ [d4,b4] f#4 ~@2 b4 ~ [d4,f#4,b4], [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~", // Bm G Bm D
  H: "~@3 b4 ~@2 [d4,f#4,b4] ~@9, ~ [d4,f#4,a4] ~@6", // Bm D
  I: "[c#4,e4,a4] ~@3 [e4,a4,c#5] d5 ~ [e4,a4,d5] ~@2 [e4,a4,c#5] d5 ~ [e4,a4,d5] ~@2", // A Dsus2 A Dsus2
  J: "[e4,a4,c#5] d5 ~ [e4,a4,d5] ~@6 [e4,a4,c#5] d5 ~ [e4,a4,d5] ~@2", K: "[~@6 [f#4,a4,d5] [g#4,b4,e5]@4 ~@5]/2",
  L: "[d4,f#4,a4]@3 ~", M: "[d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@2 ~@2 [c4,e4,g4]@3 ~ [d4,f#4,a4]@2 ~@2",
  N: "[e4,g4,b4,d5]@8 ~@2 [e4,g4,b4,d5] ~@2 [e4,g4,b4,d5] ~@2", // Em7
  O: "[d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~ [c4,e4,g4]@3 ~ [d4,f#4,a4]@2 ~@2", // D C D
  P: "[a4,c5,e5]@7 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2, g4 ~@15", Q: "[d4,f4,a4]@8 ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2",
  R: "[d#4,g4,a#4]@13 ~@3", S: "~@12 [f#4,b4] [d4,d5,f#5,b5] [d4,f#4] [b4,d5,f#5,b5]",
  T: "~@8 [f#4,b4] [d5,f#5,b5] [d4,f#4,b4] [d5,f#5,b5] [d4,f#4,b4] [d5,f#5,b5] [d4,f#4,b4] ~", // B5 Bm
  U: "~@8 [d4,a4] ~ [d4,f#4,a4] [d5,f#5,a5] [d4,f#4,a4] [d5,f#5,a5] ~@2", // D5 D
  V: "~@6 [d4,f#4,a4] [d5,f#5,a5] [d4,f#4,a4] [d5,f#5,a5] [d4,f#4,a4] [d5,f#5,a5] ~@4", // D
  W: "~@9 [c#4,e4,g4] [c#4,e4,g4,e5,g5] [c#5,e5,g5] [c#4,e4,g4] ~@3", // C#dim
  X: "~@8 c#4 [e4,g4] [c#4,e4,g4,e5] [c#5,e5,g5] [c#4,e4,g4] [c#5,e5,g5] ~@2", // Em C#dim
  Y: "~@8 [d4,f#4,a4] [d5,f#5,a5] [d4,f#4,a4] [d5,f#5,a5] ~@4", // D
  Z: "~ b4 ~ [d4,f#4,b4] ~@2 [d4,f#4,a4]@2 ~@8, [d4,f#4,a4] ~@7", // Bm D
})).s("gm_acoustic_guitar_steel").gain(0.5)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note("<~@68 A ~@2 B ~@50 C D E F ~@3>".pickRestart({
  A: "~@8 f#4 ~@7", B: "~@10 c#5 ~@5", C: "~@7 b4 ~ [d4,b4] f#4 ~@2 b4 ~ [d4,f#4,b4], ~@6 [d4,f#4,a4] ~",
  D: "~@3 b4 ~@2 [d4,f#4,b4] ~@9, ~ [d4,f#4,a4] ~@6", // Bm D
  E: "[c#4,e4,a4] ~@3 [e4,a4,c#5] d5 ~ [e4,a4,d5] ~@2 [e4,a4,c#5] d5 ~ [e4,a4,d5] ~@2", // A Dsus2 A Dsus2
  F: "[e4,a4,c#5] d5 ~ [e4,a4,d5] ~@6 [e4,a4,c#5] d5 ~ [e4,a4,d5] ~@2", // A Dsus2 A Dsus2
})).s("gm_acoustic_guitar_steel").gain(0.21)

// bass · slap bass 2 · "SLAPBASS"
const bass = note(`<
  ~@2 A B A B A B A B C D E F A G A B H D E F A B A B C D I F A G J K J L M N O P A B C D E F A G A B H D E F A B A B C
  D I F A B A G A B H D E F A B J K J L M Q O P A B A B A B C D E F A B A B C D E F A B A G A B C D I F A G A B C D E F
  A G A B C D E F A G ~
>`.pickRestart({
  A: "e2 ~ e2 ~ b2 e2 ~ e2 ~ e2 ~ e2 d5 a2 b2 d3", B: "e2 ~ e2 ~ b2 e2 ~ e2 ~ e2 ~ e2 a2 b2 d3 e3",
  C: "b2@2 ~ b2 c#3@2 ~ c#3 d3@2 ~ d3 f#3@2 e3 f#3", D: "b2 ~ b2 ~ c#3 ~ c#3 ~ d3 ~ d3 e3@2 ~ d3 e3",
  E: "a2@2 ~ a2 b2@3 ~ c#3@3 d3@2 ~ e3 ~", F: "a2 ~ a2 ~ b2 ~ b2 ~ c#3@2 ~ d3@2 ~ e3 ~",
  G: "e2 ~ e2 ~ b2 e2 ~ e2 ~ e2 ~ e2 e3@3 e3", H: "b2@2 ~ b2 c#3@2 ~ c#3 d3@2 ~ d3 f#3 ~ e3 f#3",
  I: "a2@2 ~ a2 b2@3 ~ c#3@2 ~ d3@2 ~ e3 ~", J: "c3 ~ c3 ~@2 g2 a2 g2 c3 ~ c3 ~@2 g2 a2 g2",
  K: "b2 ~ b2 ~@3 b2!2 a2 ~ a2!2 b2 ~ b2!2", L: "b2 ~ b2@2 ~@2 b2!2 a2 ~ a2!2 b2 ~ b2!2",
  M: "f2@2 ~ f2 c3@2 ~ f2 f2@2 ~ f2 c3 f2 b2@2", N: "a#2 ~@2 a#2 f3@2 ~ a#2 a#2@2 ~ a#2 f3 a#2 d3@2",
  O: "d#3@2 ~ d#3 a#3@2 ~ d#3 d#3@2 ~ d#3 a#3 d4 d#4 f4", P: "c3@3 ~ c#3@4 d3@3 ~@3 d#3 e3",
  Q: "a#2@2 ~ a#2 f3@2 ~ a#2 a#2@2 ~ a#2 f3 a#2 d3@2",
})).s("gm_slap_bass_2").gain(0.64)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@6 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 G@2 H@2 K@2 L M N O ~@4 P@2 G@2 Q@2 R@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2
  S@2 B@2 C@2 D@2 E@2 L M N O ~@3 T@2 U@3 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 V@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2
  ~@5
>`.pickRestart({
  A: "[[f#4,a4,d5]@5 ~ [f#4,a4,d5] [g#4,b4,e5]@8 ~]/2", B: "[[d6,f#6,b6]@21 ~@11]/2", C: "[[d5,f#5,a5]@29 ~@3]/2",
  D: "[[c#5,e5,g5]@25 ~@7]/2", E: "[[f#5,a5,d6]@11 ~ [f#5,a5,d6]@2 [g#5,b5,e6]@15 ~@3, ~@14 [b4,e5]@17 ~]/2",
  F: "[[d6,f#6,b6]@31 ~]/2", G: "[d5,f#5,a5]/2", H: "[a4,c#5,e5]/2",
  I: "[[f#5,a5,d6]@10 ~@2 [f#5,a5,d6]@2 [g#5,b5,e6]@11 ~@3 d6@2 e6@2]/2", J: "[d6,b6]/2",
  K: "[[f#5,a5,d6]@12 [f#5,a5,d6]@2 ~@7 g#6@10 ~, ~@14 g#5@17 ~, ~@14 [b5,e6]@9 ~@9, ~@20 b6@11 ~]/2", // D E5
  L: "~@3 d6@13, d5, ~ e5@15, ~ b5@7", M: "d5 ~@3 d6@12, ~ e5@15, ~@2 a5@13 ~, ~@3 b5@13",
  N: "~ d6@3, d5, ~ e5@15, ~@3 [a5,b5]@13", O: "~@2 d6@5 ~, d5@7 ~, ~@2 a5@11 ~@3, ~@3 b5@11 ~@2", P: "[d5,f#5,b5]/2",
  Q: "[c#5,e5,g5]/2", R: "[[d5,f#5,a5]@12 [d5,f#5,a5]@2 [e5,g#5,b5]@15 ~@3]/2",
  S: "[[f#5,a5,d6]@10 ~@2 [f#5,a5,d6]@2 [b5,e6]@9 ~ [g#6,b6]@6 ~@2, ~@14 [b4,e5,g#5]@15 ~@3, ~@23 e6@7 ~@2]/2", // D E5 G#m E
  T: "[~@14 [d#6,g6,a#6] [d6,f#6,b6]@13 ~@4]/2", // D# Bm
  U: "[~@11 f#5@3 ~@25 a5 [d5,a5]!4 [d5,a5]@2 ~@2, e6@13 ~@35, ~@3 g6@10 ~@35, ~@3 d6@4 ~@17, ~@8 a5@5 ~ [e5,g5,b5]@32 ~@2]/3", // D5 Em
  V: "[[f#5,a5,d6]@10 ~@2 [f#5,a5,d6]@2 [b5,e6]@9 ~ b6@6 ~@2, ~@14 [b4,e5,g#5]@15 ~@3, ~@23 [e6,g#6]@7 ~@2]/2", // D E5 E
})).s("gm_epiano1").gain(0.48)

// chords · epiano1 · "E.PIANO 1" · soft notes
const epiano1_soft = note("<~@24 A@2 ~@5 B C D E F ~@29 G ~@8 C D E F ~@7 H ~@17 G ~@20 I@2 J@2 ~>".pickRestart({
  A: "f#6/2", B: "~@7 b5@8 ~, ~@6 e6@9 ~", C: "~ g5@15", D: "~ f#5@7", E: "~ g5@7", F: "~ f#5@6 ~, ~ e5@13 ~@2",
  G: "~@7 b5@7 ~@2", H: "~@4 a5 [d5,a5] a5 d5 ~@8", I: "[[c#5,e5,g5]@25 ~@7]/2",
  J: "[[f#5,a5,d6]@11 ~ [f#5,a5,d6]@2 [g#5,b5,e6]@15 ~@3, ~@14 [b4,e5]@17 ~]/2", // D E E5
})).s("gm_epiano1").gain(0.28)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@36 A B C ~@39 A B C ~@48>".pickRestart({
  A: "[a4,c5]", B: "[d4,a4], c5 ~@15", C: "[d#4,g4,a#4]@15 ~",
})).s("gm_rock_organ").gain(0.3)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@36 e4 f4 ~@40 e4 f4 ~@49>").s("gm_rock_organ").gain(0.15)

// drums · kick
const kick = s("bd").struct("<~ A B@29 C B@8 D B@25 E B@14 F D B@21 D B@7 D B@7 D B@7 ~>".pickRestart({
  A: "~@3 x", B: "x!2", C: "x ~@7 x ~@2 x!2 ~@3", D: "x ~@2 x ~@2 x ~@9", E: "x ~@2 x ~@2 x ~ x ~@7",
  F: "x ~@7 x ~@5 x!2",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~ A B@29 C B@8 A B@22 D B@18 A B@10 D B@10 A B@7 A B@7 ~@9>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@7 x ~ x!2",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@120 [~@3 x] [~ x ~ x]!7 ~>").gain(0.24)

// drums · clap
const clap = s("cp").struct(`<
  ~ A ~@2 A@4 ~@7 A ~@24 A@2 ~@5 A ~@17 B C ~@5 A@2 ~@8 A@2 ~ A@7 ~@2 A@8 ~@2 A@2 ~@5 A@3 ~@5 A@3 ~@5 A ~
>`.pickRestart({
  A: "~@3 x", B: "~@6 x!2", C: "x!3 ~@5",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!16]!29 [x!12 ~ x!3] [x!16]!96 ~>").gain(0.48)

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

// drums · crash
const crash = s("cr").struct("<~@8 A ~@7 A ~@7 A ~@15 A ~@25 A ~@14 B A ~@11 A ~@9 A ~@7 A ~@7 A ~@8>".pickRestart({
  A: "x", B: "x!4",
})).gain(0.72)

// drums · mt
const mt = s("mt").struct("<~@7 [~@3 x!4 ~@4 x!2 ~@3] ~@65 [~@3 x!4 ~@4 x!2 ~@3] ~@55>").gain(0.72)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, bass, epiano1, epiano1_soft, rock_organ, rock_organ_soft, kick, snare,
  snare_soft, clap, hihat, open_hat, crash, mt
)

More by Level 42