Strudelify

Love Is All Around

The Troggs

KeyD majorTempo100 bpm
0:00/0:00
// Love Is All Around — The Troggs
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// other · electric guitar clean · "Guitar1"
const electric_guitar_clean = note(`<
  A B A B C D@2 E C D@2 F C G@2 E C D@2 H I J K L M N O P Q@2 C D@2 E C G@2 F C D@2 E C R@2 H I J K L M N O S Q@2 C D@2
  E C R@2 T@4 U ~@5
>`.pickRestart({
  A: "a3@5 ~ a3@2 d4@5 ~ d4@2", B: "e4@5 ~ e4@2 e4@2 d4@3 ~ b3@2", C: "f#4!2 e4 f#4 e4 b3@3",
  D: "[~@2 g4@2 g4@2 a4@2 e4@2 e4@3 ~ f#4@4 ~@2 e4@2 f#4@2 e4@2 b3@6, ~@9 f#4@2 ~@5]/2",
  E: "~@2 g4@2 g4@2 a4@2 e4@2 e4@3 ~ a3@2", F: "~@2 g4@2 b4@2 a4@2 e4@2 e4@3 ~ a3@2",
  G: "[~@2 [g4,b4]@2 [g4,b4]@2 a4@2 e4@2 e4@3 ~ f#4@4 ~@2 e4@2 f#4@2 e4@2 b3@6, ~@9 f#4@2 ~@5]/2", // G
  H: "~@2 g4@2 b4@2 a4@2 e4@2 e4@3 ~@3", I: "f#4@2 e4@3 ~ c#4@4 a3@2 b3@2 b3@2", J: "g4@2 g4@3 ~ g4@4 g4@3 ~ g4@2",
  K: "f#4@2 e4@3 ~ e4@7 ~ b3@2", L: "g4@3 ~ g4@2 g4@5 ~ g4@2 a4@2", M: "d4@2 d4@2 d4@2 d4@7 ~ a3@2",
  N: "g4@3 ~ g4@2 g4@4 g4@3 ~ g4@2", O: "f#4@2 e4@3 ~ e4@7 ~ d4@2", P: "e4@2 f#4@3 ~ e4@7 ~ b4@2",
  Q: "[a4@2 b4@3 ~ a4@12 ~@12 a3@2]/2",
  R: "[~@2 g4@2 g4@2 a4@2 e4@2 e4@3 ~ f#4@4 ~@2 e4@2 f#4@2 e4@2 b3@3 ~ b3@2, ~@9 f#4@2 ~@5]/2",
  S: "e4@2 f#4@3 ~ e4@7 ~ [e4,b4]@2", // E5
  T: "[~@2 b4@2 b4@2 a4@2 e4@2 e4@3 ~ f#4@4 ~@2 e4@2 f#4@2 e4@2 b3@3 ~ b3@2, ~@9 f#4@2 ~@5]/2",
  U: "~@2 b4@2 b4@2 a4@2 e4@2 e4@3 ~@3",
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.8)

// other · electric guitar clean · "Guitar1" · soft notes
const electric_guitar_clean_2 = note("<~@67 A@2 B@4>".pickRestart({
  A: "[~@14 f#4@4 ~@2 e4@2 f#4@2 e4@2 b3@3 ~ b3@2, ~@9 f#4@2 ~@5]/2",
  B: "[~@2 b4@2 b4@2 a4@2 e4@2 e4@3 ~ f#4@4 ~@2 e4@2 f#4@2 e4@2 b3@3 ~ b3@2, ~@9 f#4@2 ~@5]/2",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.8)

// other · electric guitar muted · "Guitar2"
const electric_guitar_muted = note(`<
  A B A B C D@2 E C D@2 E C D@2 E C D@2 F G H I J K L M N O@2 C D@2 E C D@2 E C D@2 E C D@2 F G H I J K L P Q O@2 C D@2
  E C D@6 R ~@5
>`.pickRestart({
  A: "a3@5 ~ a3@2 d4@5 ~ d4@2", B: "e4@5 ~ e4@2 e4@2 d4@3 ~ b3@2", C: "f#4@2 f#4@2 e4@2 d4@2 e4@2 b3@3 ~ b3@2",
  D: "[~@2 b4@2 b4@2 a4@2 e4@2 e4@3 ~ f#4@4 f#4@2 e4@2 f#4@2 e4@2 b3@3 ~ b3@2]/2",
  E: "~@2 g4@2 f#4@2 e4@2 a4@2 a4@3 ~ a3@2", F: "~@2 g4@2 f#4@2 e4@2 a4@2 a4@3 ~@3",
  G: "f#4@2 e4@3 ~ c#4@4 a3@2 b3@2 g3@2", H: "g4@2 g4@3 ~ g4@4 g4@3 ~ g4@2", I: "f#4@2 e4@3 ~@9 b3@2",
  J: "g4@3 ~@9 g4@2 a4@2", K: "d4@2 d4@2 d4@2 d4@7 ~ a3@2", L: "g4@3 ~ g4@2 g4@4 g4@3 ~ g4@2", M: "f#4@2 e4@3 ~@9 d4@2",
  N: "e4@2 e4@3 ~@9 b4@2", O: "[a4@2 a4@3 ~ a4@12 ~@12 a3@2]/2", P: "f#4@2 e4@3 ~ e4@5 ~@3 d4@2",
  Q: "e4@2 e4@3 ~ e4@5 ~@3 b4@2", R: "~@2 b4@2 b4@2 a4@2 e4@2 e4@3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.31).pan(0.2)

// other · electric guitar muted · "Guitar2" · soft notes
const electric_guitar_muted_2 = note("<~@67 A@2 B@4>".pickRestart({
  A: "[~@14 f#4@4 f#4@2 e4@2 f#4@2 e4@2 b3@3 ~ b3@2]/2",
  B: "[~@2 b4@2 b4@2 a4@2 e4@2 e4@3 ~ f#4@4 f#4@2 e4@2 f#4@2 e4@2 b3@3 ~ b3@2]/2",
})).s("gm_electric_guitar_muted").gain(0.12).pan(0.2)

// chords · reed organ · "Orgn1"
const reed_organ = note(`<
  ~@12 A B A B A C A C ~ D E D F D E G H I A B A J A B A J A C A C A C A C ~ D E D K D E@2 L I ~@17
>`.pickRestart({
  A: "[f#4,a4] [g4,b4]", B: "[b4,d5] [a4,c#5]", C: "[b4,d5,f#5] [a4,c#5,e5]", D: "[d4,g4]", E: "[b3,e4]",
  F: "~@4 d5 ~ f#4 a4, ~@3 a4@2 a4@2 ~", G: "[b3,e4]@5 ~@2 [b3,g4]",
  H: "[e4,a4]@2 [f#4,b4]@3 ~ e4@2 e4@2 [e4,a4]@3 ~ [e4,a4]@2, ~@3 a4@2 ~@3", I: "[e4,a4] ~@7", J: "[b4,d5] [a4,c#5,e5]",
  K: "~@3 a4 d5 a4 f#4 a4, [a3,d4]", L: "~@2 [f#4,b4]@3 ~ [e4,a4]@4 [e4,a4]@4 [e4,a4]@2, [e4,a4]@3 ~@5",
})).s("gm_reed_organ").gain(0.22)

// chords · reed organ · "Orgn1" · soft notes
const reed_organ_soft = note("<~@24 A ~@31 B@8 C@2 D@7>".pickRestart({
  A: "[a3,d4], a4@3 ~@5", B: "[[a4,b4,d5,a5]@31 ~]/2", C: "[a4,b4,d5,a5]/2", D: "[a4,b4,d5,a5]",
})).s("gm_reed_organ").gain(0.11)

// chords · drawbar organ · "Orgn2"
const drawbar_organ = note(`<
  A B A B C D C E C D C E C D C E C D C E ~ F G F H F G I J K C D C E C D C E C D C E C D C E ~ F G F H F G I J K C D C
  E C D L M L M L N ~@5
>`.pickRestart({
  A: "f#3@3 ~ b3@3 ~", B: "c#4@3 ~ b3@3 ~", C: "[a3,d4]@3 ~ [f#3,a3]@3 ~ g3@6 ~@2",
  D: "[d4,g4]@3 ~ [b3,d4]@3 ~ [g3,c#4]@2 [g3,c#4]@2 [g3,c#4]@2 [g3,c#4]@2", // G5 Bm Gdim
  E: "[b3,d4]@3 ~ [g3,b3]@3 ~ [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2 ~@2", // Bm G C#dim
  F: "[b3,d4]@3 ~ [b3,d4]@3 ~ [b3,d4]@3 ~ [b3,d4]@3 ~", G: "[g3,b3]@3 ~ [g3,b3]@3 ~ [g3,b3]@3 ~ g3@3 ~",
  H: "[f#3,a3]@3 ~ [f#3,a3]@3 ~ [f#3,a3]@3 ~ f#3@3 ~", I: "[g3,b3]@3 ~ [g3,b3]@3 ~ [g3,b3]@2 [g3,b3]@2 b3@3 ~",
  J: "[c#4,e4]@2 [c#4,e4]@3 ~ [c#4,e4]@4 [c#4,e4]@3 ~ [c#4,e4]@2", K: "[c#4,e4]@2 ~@2 e4@3 ~ f#4@3 ~ g4@2 a3@2",
  L: "[a3,d4]@3 ~ [a3,d4]@3 ~ g3@6 ~@2", M: "[d4,g4]@3 ~ [b3,d4]@3 ~ [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2",
  N: "[d4,g4]@3 ~ [b3,d4]@3 ~ [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2 ~@2", // G5 Bm C#dim
})).s("gm_drawbar_organ").gain(0.12).pan(0.2)

// chords · drawbar organ · "Orgn2" · soft notes · C#dim D5 G5 Bm C#dim D5 G5 Bm …
const drawbar_organ_soft = note(`<
  ~@67
  [~@7 [c#4,g4]]
  [[a3,d4]@3 ~ [a3,d4]@3 ~ g3@6 ~@2]
  [[d4,g4]@3 ~ [b3,d4]@3 ~ [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2]
  [[a3,d4]@3 ~ [a3,d4]@3 ~ g3@6 ~@2]
  [[d4,g4]@3 ~ [b3,d4]@3 ~ [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2 [c#4,g4]@2]
  [[a3,d4]@3 ~ [a3,d4]@3 ~ g3@6 ~@2]
>`).s("gm_drawbar_organ").gain(0.05).pan(0.2)

// bass · fretless bass · "Bass"
const bass = note(`<
  A B A C D E D E D E D E D E D E D E D E F G H I J G K L M N D E D E D E D E D E D E D E D E F G H I J G K L M N D E D
  E D E D E D E D O ~@5
>`.pickRestart({
  A: "d3@5 ~ d3@2 g3@5 ~ g3@2", B: "a3@5 ~ a3@2 g3@5 ~ g3@2", C: "a3@5 ~ a3@2 g3@5 ~ g2@2",
  D: "d2@5 ~ d2@2 e2@2 e2@3 ~ e2@2", E: "g2@5 ~ g2@2 a2@2 a2@3 ~ a2@2", F: "b3@2 a3@3 ~ f#3@4 d3@2 e3@3 ~",
  G: "g2@5 ~ g2@2 g2@5 ~ f#2@2", H: "e2@5 ~ e2@2 e2@2 f#2@2 g2@2 b2@2", I: "g2@5 ~ g2@2 g2@3 ~ f#2@2 e2@2",
  J: "d2@5 ~ d3@2 d3@5 ~ d3@2", K: "e2@5 ~ e2@2 e2@2 f#2@2 g2@2 d3@2", L: "e3@5 ~ e2@2 e2@3 ~ e2@2 e2@2",
  M: "a2@5 ~ a2@2 a2@5 ~ a2@2", N: "a2@3 ~ g2@3 ~ f#2@3 ~ e2@3 ~", O: "g2@5 ~ g2@2 a2@2 a2@3 ~@3",
})).s("gm_fretless_bass").gain(0.4)

// bass · fretless bass · "Bass" · soft notes
const bass_soft = note(`<
  ~@67
  [~@7 a2]
  [d2@5 ~ d2@2 e2@2 e2@3 ~ e2@2]
  [g2@5 ~ g2@2 a2@2 a2@3 ~ a2@2]
  [d2@5 ~ d2@2 e2@2 e2@3 ~ e2@2]
  [g2@5 ~ g2@2 a2@2 a2@3 ~ a2@2]
  [d2@5 ~ d2@2 e2@2 e2@3 ~ e2@2]
>`).s("gm_fretless_bass").gain(0.15)

// other · timpani
const timpani = note("<[d3 g3] [a3 g3] [d3 g3] [a3 g3] ~@69>").s("gm_timpani").gain(0.48)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@66 [~@7 x] [x ~@2 x!2 ~@2 x]!6>").gain(0.21)

// drums · snare
const snare = s("sd").struct("<~@12 A@8 ~ A@8 B ~@8 A@8 ~ A@8 B A@11 ~@6>".pickRestart({
  A: "~ x ~ x", B: "x",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@67 [~ x ~ x]!6>").gain(0.21)

// drums · low tom
const low_tom = s("lt").struct("<[x!2]!4 ~@25 [~@3 x] ~@43>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 [~ x!2 ~] ~@43>").gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@16 ~ A@8 B A@16 ~ A@8 ~ A@10 C ~@6>".pickRestart({
  A: "x!8", B: "~ x!3", C: "x!7 ~",
})).gain(0.64)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@66 [~@7 x] [x!8]!6>").gain(0.21)

// drums · bongos
const bongos = s("bongo:18").struct("<A@12 ~@9 A@8 ~ A@8 ~@9 A@8 ~ A@11 ~@6>".pickRestart({
  A: "~ x ~ x",
})).gain(1.69)

// drums · bongos · soft notes
const bongos_soft = s("bongo:18").struct("<~@67 [~ x ~ x]!6>").gain(0.56)

stack(
  electric_guitar_clean, electric_guitar_clean_2, electric_guitar_muted, electric_guitar_muted_2, reed_organ,
  reed_organ_soft, drawbar_organ, drawbar_organ_soft, bass, bass_soft, timpani, kick, kick_soft, snare, snare_soft,
  low_tom, mid_tom, tambourine, tambourine_soft, bongos, bongos_soft
)

More by The Troggs