Strudelify
Whole Lotta Loving cover art

Whole Lotta Loving

Fats Domino

KeyB♭ majorTempo188 bpm
0:00/0:00
// Whole Lotta Loving — Domino Fats
// 188 bpm, 2/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 156 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(188/2)

// 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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D A E F G A H C I J K L M N O P Q N O R S N T N O U O V R O@2 R@2 N T N W O@2 R@2 O@2 R@2 O X Y Z AA B C D A AB
  F G A AC AD AE AF AG AH AI@6 AJ AK@6 AL@5 AM AN AO AP AQ F AR AP AS AT@2 AU AV AW AX N O P Q N O R S N T N O U O V R
  O@2 R@2 N T N W O@2 R@2 O@2 R@2 O X Y AY A B C D A E F G A H C I AZ@2 BA BB@5
>`.pickRestart({
  A: "~@8 [d4,f4]@2 ~@2 [bb3,d4,f4]@3 ~, ~@8 bb3 ~@7", B: "~@5 bb3@2 ~ [bb3,d4,f4]@4 ~@4, ~@2 [d4,g4] ~@5",
  C: "~@4 [eb4,g4,bb4] ~ [g4,bb4]@2, ~@6 eb4 ~", D: "~@5 [eb4,g4]@3 [eb4,g4,bb4]@4 ~@4, ~@5 c5@5 ~@6",
  E: "~@2 [bb3,g4] ~ [bb3,d4,f4]@2 ~@2, ~@4 d4 ~@11", F: "~@8 [a3,c4]@2 ~@2 [f3,a3,c4]@3 ~, ~@8 f3 ~@7",
  G: "~@4 [a3,d4]@2 ~@2 [f3,a3,c4]@3 ~@5, ~@4 f3 ~@11", H: "~@4 d4 bb3@2 ~ [bb3,d4,f4]@3 ~@5, ~@2 g4 ~@5",
  I: "~@4 [eb4,g4]@3 ~ [g4,bb4]@2 ~@6, ~ c5 ~@2", // Eb Gm
  J: "~ [a3,f4]@2 ~ [f3,a3,c4,f4]@3 ~@5 [a3,c4]@2 ~@2, ~ [f3,c4] ~@10 [f3,f4] ~@3", // Dm F Am F5 F
  K: "[f3,a3,c4,f4]@3 ~@6 [f3,f4]@3 ~@4, ~@8 [a3,c4]@3 ~@5", L: "~ [bb3,d4]@4 ~@11, f3 ~@3", M: "~ [f3,a3,c4]@5 ~@10",
  N: "~@8 [bb3,d4,f4]@3 ~@5", O: "~@2 [bb3,d4,f4] ~", P: "~@8 [bb3,eb4,g4]@3 ~@5",
  Q: "~@7 bb3@8 ~, ~@7 eb4@5 ~@4, ~@7 g4@3 ~@6", R: "~@2 [eb4,g4,bb4] ~", S: "~@7 [eb4,g4,bb4]@4 ~@5",
  T: "~@8 [c4,f4,a4]@3 ~@5", U: "~@2 [bb3,f4] ~, ~@7 d4@5 ~@4", V: "~@9 bb4@4 ~@3, ~@2 g4 ~, ~@9 eb4@2 ~@5",
  W: "~@8 [bb3,d4,f4]@5 ~@3", X: "~@2 [c4,f4,a4] ~", Y: "~@8 [bb3,d4,f4]@7 ~", Z: "~ [bb3,d4,f4]",
  AA: "~@7 [bb3,d4,f4]@2 ~@2 [bb3,d4,f4]@4 ~", AB: "~@5 [bb3,g4]@3 [bb3,d4,f4]@4 ~@4, ~@5 d4 ~@10",
  AC: "~@5 [bb3,d4,g4]@2 ~@2 g4 ~@6, ~@8 [bb3,d4,f4]@3 ~@5", AD: "~@4 [g4,bb4] ~ [g4,bb4]@2, ~@8 eb4 ~@3 eb4@2 ~@2",
  AE: "~@2 [eb4,c5]@2 [g4,bb4] ~@3, ~@2 g4 ~@5", AF: "[a3,c4]@2 ~@2 [f3,a3,c4]@3 ~@5 c4 f3 ~@2, f3 ~@11 a3@2 ~@2",
  AG: "[f3,a3,c4]@3 ~@5 [a3,c4]@4 ~@4, ~@4 f3 ~@3", AH: "[f3,bb3,d4]@5 ~@11",
  AI: "[[f3,a3,c4,f4]@8 ~@8 [g4,bb4]@5 ~@3 [c5,ab5,c6]@4 ~ eb5@2 ~ [g4,bb4]@4 ~@4 [ab4,c5,c6]@4 [eb4,eb5]@3 ~ [bb4,g5]@4 ~@4 [ab5,c6]@4 [eb4,eb5]@3 ~@5 [eb4,eb5]@3 ~@6 [d4,f4]@8 bb3@3 [eb4,g4]@5 bb3@3, ~@15 bb5@5 ~@3 ab4@6 ~@2 [g5,bb5]@5 eb5@3 ab5@5 ~@9 eb5@4 ~@7 [g4,bb5]@6 ~@7 bb3@3 ~@16, ~@16 g5@3 ~@2 [eb4,eb5]@4 ~@3 eb4@4 ~@5 eb4@4 ~@6 [g4,bb5]@5 eb4@3 [ab4,c5]@5 ~@3 bb4@8 ~@25, ~@65 g5@5 ~@26]/6", // F Gm Fm Gm Ab Eb Ab Eb …
  AJ: "[d4,f4]@5 bb3@3 [eb4,g4]@4 ~ bb3@3", // Dm Eb
  AK: "[~ d4@4 bb3@3 ~@5 [d4,f4,bb4]@5 ~@4 bb4@4 ~@6 c5@2 g4@3 e4@3 ~@4 e4@2 ~@14 e4@2 ~@2 c3@3 ~@2 e4@3 c3@5 d4@3 c3@5 ~@3 c3@5 f4@3, f4@8 ~@13 f4@7 ~@14 g4@4 ~@4 g4@4 c4@4 g4@4 c4@10 ~@13 c4@2 ~@9, ~@21 d4@4 ~@4 c4@13 ~@4 c4@4 ~@2 e4@4 c5@4 ~@4 c5@5 ~@17 c5@4 ~@6, ~@21 bb3@2 ~@9 c3@5 ~@3 [c3,c5]@4 ~@4 [c3,c5]@4 ~@5 c3@3 ~@7 g4@5 ~@5 [e4,g4,c5]@5 ~@3 [e4,g4]@5 ~@6]/6", // Bb C Em
  AL: "[f3@5 [f4,a4,c5]@3 f3@5 f4@3 f3@5 f4@3 ~@6 c5 ~@2 c5 ~@3 [d5,d6]@3 ~ [db5,db6]@3 ~ [c5,c6]@10 ~ f3@5 bb3@5 ~@6 [bb3,f4]@2 ~@3 [bb3,d4,f4]@3, ~@13 [a4,c5]@15 ~ a4@2 ~ [a4,eb5,eb6]@3 ~@45, ~@24 f3@29 ~@27, ~@30 f4@26 ~@16 d4 ~@7, ~@3 f5@2 ~@3]/5", // F D Db C Bb5 Bb Am Adim
  AM: "~@2 g4@2 f4@3 ~, ~@4 bb3@9 ~@3, ~@4 d4 ~@11", AN: "~@4 [eb4,g4,bb4] ~ [eb4,g4,bb4]@2",
  AO: "~@2 [g4,bb4] ~, ~@5 eb4@10 ~, ~@5 c5@5 ~@6", AP: "~@8 [bb3,d4,f4]@2 ~@2 [bb3,d4,f4]@3 ~",
  AQ: "~@5 g4@2 ~ [d4,f4]@4 ~@4, ~@5 bb3@9 ~@2, ~@5 d4 ~@10", // Dm
  AR: "~@5 [f3,d4]@2 ~ [a3,c4]@5 ~@3, ~@5 a3 ~@2 f3@3 ~@5, ~@8 d4 ~@7", // Dm Am
  AS: "~@5 [bb3,d4,g4]@2 ~@2 f4@4 ~@3, ~@8 [bb3,d4]@3 ~@5", // Gm Bb
  AT: "[~@8 [g4,bb4]@2 ~@2 [g4,bb4]@5 ~@3 [eb4,g4,c5]@6 ~@6, ~ eb3@29 ~@2, ~@8 eb4 ~@3 eb4@3 ~@17]/2", // Gm Cm
  AU: "[f2,f3,a3,c4]@3 ~@2 f2@4 ~@3 [a3,c4] f3 ~@2, f4 ~@3 [f3,a3,c4,f4]@4 ~@4 [f2,f4]@2 ~@2", // F Am F
  AV: "[f2,f3,a3,c4,f4]@3 ~@5 [f3,a3,c4,f4]@3 ~@5, ~@8 f2@5 ~@3", AW: "[bb2,bb3,d4,f4,bb4]@3 ~@5",
  AX: "[f2,f3,a3,c4,f4]@9 ~@7", AY: "~@7 [bb3,d4,f4]@9",
  AZ: "[~ [a3,f4]@2 ~ [f3,a3,c4,f4]@3 ~@5 [a3,c4]@2 ~ c5 [f3,a3,c4,f4]@3 ~@6 f3@2 ~@5, [a4,c5]@6 ~@9 a4@2 ~@8 f4 ~@6, ~ [f3,c4] ~@10 [f3,f4] ~@11 [a3,c4]@3 ~@5]/2", // Dm F Am F Am F5 F Am
  BA: "~ [e7,f7] ~@2 bb6 a6 ~@5 bb5 a5 g5 f5 e5, [f3,f4]@3 c7@2 ~ g6@2 e6@2 c6@2 ~@4, ~ [bb3,d4]@4 ~@11, ~@2 d7@2 ~@3 f6@2 d6@2 ~@5", // Fmaj7 F Bb
  BB: "[~@3 [c4,d4,f4,bb4]@62 ~@15]/5", // Bb
})).s("gm_piano").gain(0.38).pan(0.7)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@2 B@2 A@2 C@2 A@2 D@2 E F G H A@2 I@2 A@2 I@2 J K A@4 B@2 A@2 B@2 J K L@2 A@2 B@2 A@2 B@2 J K A@4 B@2 A@2 M@2 A@2
  I@2 E F N O P Q R S T U V W X Y Z AA AB AC AD AE AF@2 AG@2 T AH AI@2 AJ K AK AL E F AM F A@2 I@2 A@2 I@2 J K A@4 B@2
  A@2 B@2 J K L@2 A@2 B@2 A@2 B@2 J K A@4 B@2 A@2 C@2 A@2 D@2 E F AN AO@4 ~
>`.pickRestart({
  A: "[bb1@29 ~@3]/2", B: "[eb2@15 ~]/2", C: "[f1@27 ~@5]/2", D: "[eb2@3 ~]/2", E: "f1@2 ~@3 f1@3 ~@5 f1@2 ~",
  F: "f1@3 ~@5 f1@4 ~@4", G: "bb1 ~@3", H: "f1@11 ~@5", I: "[eb2@27 ~@5]/2", J: "bb1@3 ~", K: "f2@3 ~",
  L: "[bb1@27 ~@5]/2", M: "[f1@15 ~]/2", N: "bb1@3 ~@5", O: "f1@9 ~@4 bb1@3", P: "eb1@6 ~@2 g1@7 ~",
  Q: "bb1@7 ~ c2@5 ~@3", R: "db2@3 ~ c2@3 ~", S: "bb1@4 g1@3 ~", T: "bb1@6 ~@2 d2@7 ~", U: "f2@6 ~@2 g2@5 ~@3",
  V: "ab2@5 ~@3 g2@6 ~@2", W: "f2@4 d2@3 ~", X: "c2@6 ~@2 e2@7 ~", Y: "g2@6 ~@2 a2@7 ~", Z: "c3@3 ~ a2@3 ~",
  AA: "g2@7 ~ e2@5 ~@3", AB: "f1@7 ~ a1@7 ~", AC: "c2@5 f1@2 ~ d2@5 f1@2 ~", AD: "eb2@5 f1@3 d2@5 ~@3",
  AE: "c2@7 ~ a1@5 c2@2 ~", AF: "bb1@6 ~@2 f2@7 ~", AG: "eb2@3 ~ bb2@3 ~", AH: "f2@6 ~@2 g2@5 d2 ~@2",
  AI: "f1@7 ~ c2@8", AJ: "bb1@15 ~", AK: "eb2@7 ~", AL: "bb2@3 ~", AM: "bb1@5 ~@8 f1@2 ~", AN: "~ bb1@6 ~@9",
  AO: "[~ bb1@62 ~]/4",
})).s("gm_acoustic_bass").gain(0.38)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  A@2 B@2 C@2 D E F@2 G@2 H I J K ~@36 L@2 M@2 N@2 O P Q@2 R@2 S ~ T U ~@32 V@2 W@2 X@2 Y@2 Z AA AB@2 AC@2 AD@2 X@2 AE@2
  AF AA AG@2 AH@2 AI ~ AH@2 AJ ~ AK AA AG@2 A@2 B@2 C@2 D E F@2 G@2 H I J ~@5
>`.pickRestart({
  A: "[~@9 [d4,f4]@11 ~@4 f4@3 ~@5, ~@21 [d4,g4]@6 ~@5]/2", B: "[~@8 [g4,bb4]@11 ~ c5@2 ~ bb4@2 ~@7, ~@20 g4@5 ~@7]/2",
  C: "[~@8 [d4,f4]@11 ~@2 [d4,g4]@2 ~ d4@4 ~@4, ~@12 f4 ~@3]/2", D: "~ [a3,c4]", E: "~@4 d4@3 c4@3 ~@6",
  F: "[~@8 [d4,f4]@11 ~@5 f4@3 ~@5, ~@21 [d4,g4]@6 ~@5]/2", G: "[~@8 [g4,bb4]@11 ~ c5@3 bb4@3 ~@6]/2",
  H: "[f4,a4]@2 ~@2 [f4,a4]@3 ~@5 [f4,a4]@2 ~@2", I: "[f4,a4]@3 ~@5 [f4,a4]@3 ~@5", J: "~ [f4,bb4]@3 ~@12",
  K: "~ [f4,a4]@11 ~@4", L: "[~@8 [d4,f4]@3 ~ g4@8 ~@4 d4@4 bb3@2 ~@2, ~@8 bb3@15 ~@9, ~@10 f4@5 ~]/2",
  M: "[~@8 [eb4,g4]@3 ~ [eb4,c5]@7 ~@5 g4@5 ~@3, ~@8 bb4@6 ~@6 bb4@9 ~@3, ~@11 g4@7 ~@14]/2", // Eb Cm
  N: "[~@8 [bb3,d4,f4]@3 ~@13 d4@5 ~@3, ~@12 [bb3,g4]@11 ~@9, ~@20 f4@9 ~@3]/2", O: "~@8 [f4,a4,c5]@3 ~ [a4,d5]@4",
  P: "~@5 f4@4 a4@5 ~@2, ~@5 c5@8 ~@3", Q: "[~@8 [d4,f4]@3 ~ g4@7 ~@5 d4@5 ~@3, ~@8 bb3@11 ~ f4@9 ~@3]/2",
  R: "[~@4 bb4@2 ~@4 bb4@2 g4 ~@3, ~@8 g4@9 ~@15, ~@8 eb4@3 ~ c5@13 ~@7]/2", S: "[f4,a4,c5]@5 ~@3",
  T: "[bb3,d4,f4]@5 ~@11", U: "[f4,a4,c5]@9 ~@7", V: "[~@8 d4@13 bb3@4 d4@5 ~@2, ~@4 f4@11 ~]/2",
  W: "[~@4 [g4,bb4]@7 ~@5, ~@8 eb4@11 ~@13]/2", X: "[~@12 bb3@6 ~@2 bb3@4 d4@5 ~@3, ~@8 f4@21 ~@3, ~@8 d4@13 ~@11]/2",
  Y: "[~@8 [g4,bb4]@11 ~@13]/2", Z: "~@8 [d4,f4]@5 bb3@2 ~", AA: "~@8 [c4,f4]@5 ~@3, ~@8 a4@3 ~@5",
  AB: "[~@4 [bb3,d4,f4]@7 ~@5]/2", AC: "[~@6 g4 ~, ~@4 [d4,f4]@11 ~]/2", AD: "[~@8 [eb4,g4,bb4]@11 ~@13]/2",
  AE: "[~@8 [eb4,g4,bb4]@15 ~@9]/2", AF: "~@4 [d4,f4]@3 ~", AG: "[~@8 [d4,f4]@13 ~@11, ~ bb3 ~@2]/2",
  AH: "[~@6 bb3@3 ~@3 g4@2 ~@2, ~@8 [d4,f4]@21 ~@3]/2", AI: "~@8 [eb4,g4,bb4]@7 ~", AJ: "~@4 [eb4,g4,bb4]@3 ~",
  AK: "bb3@8 [d4,f4]@5 ~@3", // Dm
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@3 A ~@3 B ~@3 C ~@43 D ~@2 E ~ F G H@2 ~@48 I J ~@11 K ~@3 J ~@13 B ~@3 C ~@8
>`.pickRestart({
  A: "~@7 c5@2 ~@7", B: "~@4 a3@5 ~@7", C: "~@4 g4@7 ~@5", D: "~@4 eb4@5 ~@7", E: "~@3 f4", F: "~@11 d4@5",
  G: "~@4 bb3@3 ~@9", H: "[~@11 eb4@15 ~@6]/2", I: "~@3 bb3", J: "~@4 bb3@5 ~@7", K: "~@5 bb3@4 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.16).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4 B ~@4
>`.pickRestart({
  A: "x", B: "~ x ~@6",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct("<A@12 B C D@2 A@80 B C D@2 A@48 B C D E ~@4>".pickRestart({
  A: "~ x", B: "x ~@4 x ~@7 x ~@2", C: "x!2", D: "x", E: "~ x ~@6",
})).gain(0.49)

// drums · clap
const clap = s("cp").struct("<~@41 A ~@3 A ~@79 A ~@3 A ~@26>".pickRestart({
  A: "x!2",
})).gain(0.49)

// drums · low tom
const low_tom = s("lt").struct("<~@150 [~@13 x ~@2] x ~@4>").gain(0.49)

// drums · hihat
const hihat = s("hh").struct("<A@6 B A@5 C A D E A@74 B A@5 C A D E A@42 B A@5 C A E ~@5>".pickRestart({
  A: "x!2", B: "x ~@4 x ~@2 x ~@7", C: "x ~@4 x ~@7 x ~@2", D: "x ~@12 x ~@2", E: "x",
})).gain(0.33)

// drums · mid tom
const mid_tom = s("mt").struct("<~@150 [~@11 x ~ x ~@2] ~@5>").gain(0.44)

// drums · high tom
const high_tom = s("ht").struct("<~@150 [~@5 x ~@2] ~@5>").gain(0.38)

// drums · ride
const ride = s("rd").struct("<A@12 B A C ~ A@80 B A C ~ A@48 B A C ~@5>".pickRestart({
  A: "x!2", B: "x ~@4 x ~@7 x ~@2", C: "x",
})).gain(0.33)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@29 A ~@3 A ~@79 A ~@3 A ~@38>".pickRestart({
  A: "x!2",
})).gain(2.77)

stack(
  piano, bass, electric_guitar_jazz, electric_guitar_jazz_2, kick, snare, clap, low_tom, hihat, mid_tom, high_tom, ride,
  cabasa
)

More by Fats Domino