Strudelify

Paying the Price of Love

Bee Gees

KeyA majorTempo106 bpm
0:00/0:00
// Paying the Price of Love — Bee Gees
// 106 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 18, 4/4 at bar 19, 2/4 at bar 47, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 108 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 · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@5 A@2 B C B C D E ~@4 F G H G I J K@4 L@7 M N O N O P@2 ~@5 Q R Q R S T U V W@2 X Y@2 Z@8 AA@2 AB AC AB AD ~@8 S T U
  V W@2 X AE@2 S T U V W@2 X AE@2 S T U V W@2 X AE@2
>`.pickRestart({
  A: "[g4,b4,e5]@3 [f#4,a4,d5] ~@4", B: "[g4,c5,e5]@3 [a4,c5,e5] ~@4", C: "[f#4,b4,d5]@3 [f#4,a4,d5] ~@4",
  D: "g5@2 f#5@2 e5@9 ~ [a4,d5]@2, b4@13 ~@3, e5 ~@3", E: "[g4,b4,e5] ~@2 [g4,b4,e5] ~@4", F: "~@8 [g3,b3,d4]@7 ~",
  G: "[b3,d4,f#4] [g3,c4,e4]", H: "[a3,d4,f#4]@7 ~ [g3,b3,d4]@7 ~", I: "[a3,d4,f#4]@7 ~ [b3,d4,g4]@8",
  J: "[b3,d4,f#4] [b3,e4,g4]", // Bm Em
  K: "[[c4,e4,g4]@2 [b3,g4]@2 [b3,f#4]@2 [c4,e4,g4]@3 [d4,f#4,a4] [b3,g4]@2 f#4@2 [e4,g4]@2, ~ d4@2 ~@2 d4@2 ~, ~@48 b3@15 ~]/4", // C Em B5 C D Em
  L: "[[c4,e4,g4]@8 [b3,d4,g4]@16 [c4,e4]@12 [b3,d4]@4 [c4,e4]@11 [b3,d4]@4 ~ [c4,e4]@16 ~@16 b4 ~@3 a4 ~@3 g4 ~@3 f#4 ~@3 [g4,b4,e5]@6 [f#4,a4,d5]@2, ~@24 a3@16 a3@31 ~ [g3,b3,d4]@32 ~@8]/7", // C G C Bm C Bm C Em …
  M: "~@4 [g4,b4,e5]@3 [f#4,a4,d5]", N: "~@4 [g4,c5,e5]@3 [a4,c5,e5]", O: "~@4 [f#4,b4,d5]@3 [f#4,a4,d5]",
  P: "[~@8 g5@2 f#5@2 e5@9 ~ [a4,d5]@2 [g#4,b4,e5]@2 ~@4 [g#4,b4,e5]@2, ~@8 b4@13 ~@11, ~@2 e5 ~@5]/2", // D5 E
  Q: "[g3,b3,d4]@7 ~ [b3,d4,f#4]@8", R: "[g3,c4,e4]@8 [a3,d4,f#4]@7 ~", S: "[c#4,e4,a4] [c#4,e4,g#4]",
  T: "[c#4,f#4,a4] [d4,f#4,a4]", U: "[c#4,a4] [c#4,g#4], e4", V: "[d4,f#4,a4]@3 [e4,g#4,b4]",
  W: "[[c#4,a4] g#4 [f#4,a4] [d4,f#4,a4], e4 ~, ~@8 c#4@15 ~@9]/2", X: "[c#4,e4,a4]",
  Y: "[f#4@28 a4@3 ~, [b3,d4]@31 ~]/2", // Bm
  Z: "[~@32 c#4@3 d4@3 ~@2 c#4@3 d4@3 ~@2 c#4@3 d4@3 ~@2 f#4@3 g4@3 a4@2, [g3,a3], e4@76 e4@15 ~ e4@16 e4@20]/8", // Gsus2
  AA: "[a4,c#5,f#5]@3 [g#4,b4,e5] ~@4", AB: "[a4,d5,f#5]@3 [b4,d5,f#5] ~@4", AC: "[g#4,c#5,e5]@3 [g#4,b4,e5] ~@4",
  AD: "[b4,d5,f#5]@3 [a4,d5,f#5] ~@4", AE: "[f#4@24 a4@7 ~, [b3,d4]@31 ~]/2",
})).s("gm_pad_poly").gain(0.46).pan(0.2)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@4 A B@2 C D C E F G H I H I J K L K M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AH AJ AK AL AK AL AM AN
  AO AP AQ AR AS AT AU AV@3 AW AV@2 AW AX AY@2 AZ BA AZ BB BC BD BE BD BF BG BE BH AM AN AO AP AQ AR AS AT BI AM AN AO
  AP AQ AR AS AT BI AM AN AO AP AQ AR AS AT BJ
>`.pickRestart({
  A: "~@2 b2 ~ a2@2 ~ g2 a2 ~ g2@6", B: "e2 d2 e2 ~@3 c2 d2 ~ c2 d2 ~@5", C: "c2 a1 c2@2 ~@2 c2 a1 c2 a1 c2@2 ~@4",
  D: "d2 b1 d2 ~@3 d2 b1 d2 b1 d2 ~ g1 ~ a1 ~", E: "a1 ~ a1@2 ~ a1!2 ~ a1@2 ~@6",
  F: "d2!2 e2 ~@3 d2 e2 d2 e2 d2 ~@3 d2@2", G: "e2 ~ e2@2 ~@3 e2!2 ~ e2@2 ~@4", H: "e1@2 ~@2 e1 ~@4 e1 ~@2 e1 ~@3",
  I: "e1!4 ~@2 e1 ~@2 e1!2 ~@5", J: "b1 c2 ~ c2!2 ~@3 g1 ~ g1 ~@3 g1!2", K: "b1 ~ b1 ~@3 b1!2 c2 ~ c2 ~@3 c2!2",
  L: "~ d2 ~ d2 ~ d2!2 ~ g1 ~ g1 ~@3 g1!2", M: "~ d2 ~ d2 ~ d2!2 ~ g1 e1 g1@2 ~@2 g1!2",
  N: "b1 ~ b1@2 ~@2 g1 b1 e1 d1 e1 ~@3 b1 ~", O: "c2 b1 c2 ~@3 c2@2 g1 ~ g1 ~@3 g1 e1",
  P: "b1 ~ b1 ~@3 g1 b1 c2 ~ c2@2 ~@2 c2@2", Q: "d2 ~ d2@2 d1@2 d1@2 g1 e1 g1 ~@3 g1!2",
  R: "b1 a1 b1 ~@3 b1 a1 e2 d2 e2@2 ~@2 e2@2", S: "c2 ~ c2 ~ b1 c2 b1 ~ g1@2 g1 ~@3 g1 e1",
  T: "g1 ~ g1 ~@3 g1 ~ a1 g1 a1 ~@3 a1 g1", U: "a1 g1 a1 ~@3 a1 ~ a1 g1 a1 ~@3 g1!2",
  V: "a1 g1 a1 ~@3 g1!2 a1 g1 a1 ~@2 a1 ~ g1", W: "a1 g1 a1 ~@3 g1 ~ g1 ~ g1 ~@3 g1 e1",
  X: "g1!2 [e1,g1] ~@3 e1 g1!2 ~ g1 ~@3 g1!2", Y: "b1 g1 b1 ~ g1 ~ g1 ~ e2 d2 e2 ~@3 c2 d2",
  Z: "~ c2 d2 ~@5 e2 d2 e2 ~@3 c2 d2", AA: "~ c2 d2 ~@5 c2 a1 c2@2 ~@2 c2 a1", AB: "c2 a1 c2@2 ~@4 d2 b1 d2 ~@3 d2 b1",
  AC: "d2 b1 d2 ~ g1 ~ a1 ~ c2 a1 c2@2 ~@2 c2 a1", AD: "c2 a1 c2@2 ~@4 a1 ~ a1@2 ~ a1!2 ~",
  AE: "a1@2 ~@6 d2!2 e2 ~@3 d2 e2", AF: "d2 e2 d2 ~@3 d2@2 e2 ~ e2@2 ~@3 e2", AG: "e2 ~ e2@2 ~@4 e1@2 ~@2 e1 ~@3",
  AH: "~ e1 ~@2 e1 ~@3 e1!4 ~@2 e1 ~", AI: "~ e1!2 ~@5 e1@2 ~@2 e1 ~@3", AJ: "~ e1!2 ~@5 b1 c2 ~ c2!2 ~@3",
  AK: "g1 ~ g1 ~@3 g1!2 b1 ~ b1 ~@3 b1!2", AL: "c2 ~ c2 ~@3 c2!2 ~ d2 ~ d2 ~ d2!2 ~",
  AM: "a1 f#1 a1@2 ~@2 a1!2 c#2 ~ c#2@2 ~@2 a1 c#2", AN: "f#1 e1 f#1 ~@3 c#2 ~ d2 c#2 d2 ~@3 d2@2",
  AO: "a1 ~ a1 ~@3 a1 f#1 c#2 ~ c#2 ~@3 a1 c#2", AP: "d2 ~ d2@2 ~@2 d2@2 e2 ~ e2@2 e1@2 e1@2",
  AQ: "a1 f#1 a1 ~@3 a1!2 c#2 b1 c#2 ~@3 c#2 b1", AR: "f#2 e2 f#2@2 ~@2 f#2@2 d2 ~ d2 ~ c#2 d2 c#2 ~",
  AS: "a1@2 a1 ~@3 a1 f#1 a1 ~ a1 ~@3 a1 ~", AT: "b1 a1 b1 ~@3 b1 a1 b1 a1 b1 ~@3 b1 ~",
  AU: "b1 a1 b1 ~@3 a1!2 b1 a1 b1 ~@3 a1!2", AV: "a1!2 g1 ~ a1 ~ g1 a1 ~ a1 ~@4 a1 ~",
  AW: "a1!2 g1 ~ a1 ~ g1 a1 ~@2 c#2 ~ d2 ~ e2 ~", AX: "a1 ~ a#1 ~ b1@2 c2 ~ c#2 ~ d2 ~ d#2 e2 a1 ~",
  AY: "f#2 e2 f#2 ~@3 d2 e2 ~ d2 e2 ~@5", AZ: "d2 b1 d2@2 ~@2 d2 b1 d2 b1 d2@2 ~@4", BA: "b1 ~ b1@2 ~ b1!2 ~ b1@2 ~@6",
  BB: "d2 b1 d2@2 ~@2 d2 b1 d2 b1 d2@2 a1 ~ b1 ~", BC: "a1 ~ a1 ~@2 a1 ~@2 a1 ~ d2 ~ d2 c2 a1 ~",
  BD: "~@2 a1 ~@2 a1 ~@2 a1 ~ d2 ~ d2 c2 a1 ~", BE: "a1!2 g1 a1 ~@5 d2 ~@2 d2 c2 a1 ~",
  BF: "a1!2 g1 a1 ~@5 c2 ~@2 c2!2 ~@2", BG: "~@2 a1 ~@2 d2 ~@2 d2 ~ d2 ~ d2 c2 a1 ~", BH: "d1",
  BI: "b1 a1 b1 ~@3 a1!2 d2 c2 d2 ~@3 d2 c2", BJ: "b1 a1 b1 ~@3 a1!2 d2 c2 d2 ~@5",
})).s("gm_synth_bass_1").gain(0.34)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@13 A B@7 C D E@4 F@7 ~@5 G@5 H@3 I@2 J K L M N O@2 P Q@2 ~@2 R@6 S@6 ~@8 K L M N O@2 P T@2 K L M N O@2 P T@2 K L M N
  O@2 P T@2
>`.pickRestart({
  A: "[e4,g4,b4]", // Em
  B: "[f#4@19 a4@5 a3@15 a4@8 d#4@8 ~ b3@7 ~ a3@7 ~ [g3,c4,e4]@7 [a3,f#4]@8 [b3,g4]@9 [a3,f#4]@8 [g3,c4,e4]@8, [b3,d4]@23 ~ c4@31 ~ d4@15 ~@8 d4@23 ~@10, ~@24 e4@23 g4@16 f#4@8 ~@41]/7", // C D Em D C Bm
  C: "[a3,d4,f#4] [b3,d4,g4]", D: "[b3,d4,f#4] [b3,e4,g4]",
  E: "[[c4,e4,g4]@2 [b3,g4]@2 [b3,f#4]@2 [c4,e4,g4]@3 [d4,f#4,a4] [b3,g4]@2 f#4@2 [e4,g4]@2, ~ d4@2 ~@2 d4@2 ~, ~@48 b3@15 ~]/4", // C Em B5 C D Em
  F: "[[c4,e4,g4]@8 [b3,d4,g4]@16 [c4,e4]@12 [b3,d4]@4 [c4,e4]@11 [b3,d4]@4 ~ [c4,e4]@16 ~@16 b4@4 a4@4 g4@4 f#4@4 ~@8, ~@24 a3@16 a3@31 ~ [g3,b3,d4]@32 ~@8]/7", // C G C Bm C Bm C G
  G: "[~@8 g3@16 g#3@16 [e4,g4,b4]@16 f#4@19 a4@5, ~@8 [e3,b3]@32 ~@16 [b3,d4]@23 ~]/5", // Em E5 Bm
  H: "[a3@15 a4@8 d#4@8 ~ b3@7 ~ a3@7 ~, c4@31 ~ d4@15 ~, e4@23 g4@16 f#4@8 ~]/3",
  I: "[[g3,c4,e4]@7 [a3,f#4]@8 [b3,g4]@9 [a3,f#4]@8, ~@7 d4@23 ~@2]/2", J: "[g3,c4,e4,g5] [a3,d4,f#4,d5]",
  K: "[c#4,e4,a4] [c#4,e4,g#4]", L: "[c#4,f#4,a4] [d4,f#4,a4]", M: "[c#4,a4] [c#4,g#4], e4",
  N: "[d4,f#4,a4]@3 [e4,g#4,b4]", O: "[[c#4,a4] g#4 [f#4,a4] [d4,f#4,a4], e4 ~, ~@8 c#4@15 ~@9]/2", P: "[c#4,e4,a4]",
  Q: "[b3,d4,f#4]/2", R: "[d4@16 c#4@3 d4@3 e4@2 c#4@3 d4@3 e4@2 c#4@3 d4@3 e4@2 f#4@3 g4@3 a4@2, [g3,a3]]/6",
  S: "[[a3,c#4,f#4]@5 [g#3,b3,e4]@10 [a3,c#4,f#4]@6 [g#3,b3,e4]@10 [a3,d4,f#4]@6 [b3,d4,f#4]@10 [g#3,c#4,e4]@6 [g#3,b3,e4]@10 [a3,d4,f#4]@6 [b3,d4,f#4]@10 [b3,d4,f#4]@6 [a3,d4,f#4]@9 ~@2]/6", // F#m E F#m E D Bm C#m E …
  T: "[f#4@24 a4@7 ~, [b3,d4]]/2", // Bm
})).s("gm_synth_strings_1").gain(0.35).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@17 A B@2 C@2 ~@24 D E D E ~@58>".pickRestart({
  A: "~@9 d4@6 ~, ~@4 [g3,b3,g4]@3 ~", // G
  B: "[[b3,d4,f#4]@7 ~ [g3,c4,e4]@6 ~@2 [d4,f#4]@7 ~@2 d4@6 ~, ~@15 a3@8 ~ [g3,b3,g4]@6 ~@2]/2", // Bm C D G
  C: "[[b3,d4,f#4]@7 ~ [g3,c4,e4]@6 ~@2 [d4,f#4]@7 ~@9, ~@15 a3@8 ~@9]/2", // Bm C D
  D: "~ d4@6 ~ [b3,d4,f#4]@7 ~, [g3,b3,g4]@3 ~@5", E: "[g3,c4,e4]@6 ~@2 [d4,f#4]@7 ~, ~@7 a3@8 ~",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.8)

// other · overdriven guitar · "CLEAN GTR"
const overdriven_guitar = note("<~@59 A@4 B@4 ~@5 C D E F C G H I@2 ~@27>".pickRestart({
  A: "[[a2,e3]@63 ~]/4", B: "[a2,e3]/4", C: "~@7 a2", D: "a2 ~@15", E: "~@2 e2 g2", F: "a2@3 ~@13", G: "a2 ~@7",
  H: "~@10 e2@3 g2@3", I: "[a2 ~@6 d2@9]/2",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.8)

// other · piano · "A.PIANO 3"
const piano = note("<~@72 A B C D A D E F@2 ~@27>".pickRestart({
  A: "~@7 [a2,a3]", B: "[a2,a3] ~@15", C: "~@8 [e2,e3]@4 [g2,g3]@3 ~", D: "[a2,a3] ~@7", E: "~@10 [e2,e3]@3 [g2,g3]@3",
  F: "[[a2,a3] ~@6 [d2,d3]@9]/2", // A D
})).s("gm_piano").gain(0.45)

// drums · kick
const kick = s("bd").struct("<A B@3 C B@12 D E@28 B@34 F B@26 G>".pickRestart({
  A: "~@7 x", B: "x ~@2 x ~@2 x!2 ~ x!2 ~@3 x ~", C: "x ~@2 x!2 ~@3", D: "x ~@2 x ~@2 x!3 ~@2 x ~@2 x!2",
  E: "~ x!2 ~@3 x ~ x ~@2 x ~@2 x!2", F: "x ~@2 x!2 ~ x!5 ~ x ~ x ~", G: "x ~@2 x ~@2 x!2 ~ x!2 ~@5",
})).gain(0.4)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A@3 ~ A@6 B A ~@20 C D@6 E F ~@25 A@6 ~@35>".pickRestart({
  A: "~@2 x ~@11 x!2", B: "~@2 x ~@12 x", C: "~@5 x ~@2", D: "~@6 x!2 ~@2 x ~@5", E: "~@7 x ~@2 x ~@5",
  F: "~@6 x!2 ~@8",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@80 [x!4] ~@27>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@20 C B C B C B C B C B C B C B@15 D B D B D B D B D B@2 D B D B D B D B@15 D B D B D B D B@2 D B D B D B D B@2 D B
  D B D B D@2
>`.pickRestart({
  A: "~@6 x!2", B: "x!8", C: "x!3 ~ x!4", D: "x!7 ~",
})).gain(0.36)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@5 [x!16]!102 [x!14 ~@2]>").gain(0.31)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@73 A B A B A B A B A B A B A B A B A@2 B A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "~@5 x ~ x ~@4 x ~@3", B: "~@5 x ~ x ~ x ~@4 x!2", C: "~@5 x ~ x ~ x ~@6",
})).gain(1.15)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@73 A B A B A B A B A B A B A B A B A@2 B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@14 x!2", B: "~@11 x ~ x ~@2",
})).gain(1.15)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~@73 A B A B A B A B A B A B A B A B A@2 B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 x!2 ~@5 x ~ x ~@4", B: "~@2 x!2 ~@4 x ~@7",
})).gain(1.15)

stack(
  pad_poly, bass, synth_strings_1, electric_guitar_clean, overdriven_guitar, piano, kick, snare, snare_soft, low_tom,
  hihat, open_hat, tambourine, congas, congas_2, congas_3
)

More by Bee Gees