Strudelify

Kansas City

Fats Domino

KeyD♭ majorTempo122 bpm
0:00/0:00
// Kansas City — Domino Fats
// 122 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 1 "C1-Lead Vocal" voice oohs (copy of ch 9 "C9-P68-Lead Vocal" voice oohs); ch 3 "C3-P2-Piano Left Hand" piano (copy of ch 2 "C2-P65-Bass" electric bass finger)
// note: Full arrangement: all 75 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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.

// bass · electric bass finger · "C2-P65-Bass"
const bass = note(`<
  ~ A B C D@4 E B@2 D F A B C D@4 E B@2 D F A B C D@4 E B@2 D F A B C D@4 E B@2 D F A B D@5 E B@2 D F A B C D A B C D A
  B C G@3
>`.pickRestart({
  A: "ab2@3 c3@3 eb3@3 c3@2 eb3", B: "gb2@3 bb2@3 db3@3 bb2@2 db3", C: "db2@5 ~ f2@6 ab2@6 f2@4 ab2@2",
  D: "db2@3 f2@3 ab2@3 f2@2 ab2", E: "db2@6 f2@6 ab2@6 f2@3 ~ ab2@2", F: "db2@6 f2@6 ab2@6 f2@4 ab2 ~",
  G: "[db2 ~ b1 c2 ~ db2 ~@3 db2@19 ~@8]/3",
})).s("gm_electric_bass_finger").gain(0.66)

// chords · piano · "C4-P3-Piano"
const piano = note(`<
  ~ A B C@6 D@2 C@2 E D C@6 D@2 C@2 E D C@6 D@2 C@2 E D C@2 F@3 G H@2 F I J H K L C@4 D@2 C@2 E D C@2 E D C@2 E D C M@3
>`.pickRestart({
  A: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~", // Ab
  B: "[gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4]@2", // Gb
  C: "~@4 [f3,ab3,db4]@3 ~@3 [f3,ab3,db4]@3 ~@3 [f3,ab3,db4]@3 ~@3 [f3,ab3,db4]@2", // Db
  D: "~@4 [gb3,bb3,db4]@3 ~@3 [gb3,bb3,db4]@3 ~@3 [gb3,bb3,db4]@3 ~@3 [gb3,bb3,db4]@2", // Gb
  E: "~@4 [ab3,c4,eb4]@3 ~@3 [ab3,c4,eb4]@3 ~@3 [ab3,c4,eb4]@3 ~@3 [ab3,c4,eb4]@2", // Ab
  F: "[b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~", // Db7
  G: "[b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4]@2, ~@22 ab4 ~", // Db7
  H: "[e4,gb4,bb4] db4 [e4,gb4,bb4] db4 [e4,gb4,bb4] db4 [e4,gb4,bb4] db4 [e4,gb4,bb4] db4 [e4,gb4,bb4] db4", // Gb7
  I: "[b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,f4,ab4] ~, ~@11 db4", // Db7 Fdim
  J: "[eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~ [gb4,ab4]@2, ~@22 [eb4,c5] ~", // Ab7 Gbsus2 Cm
  K: "[b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4] ~ [b3,db4,f4,ab4]@2", // Db7
  L: "~@4 [f3,ab3,db4]@3 ~@3 [f3,ab3,db4]@2 ~@4 [f3,ab3,db4]@3 ~@3 [f3,ab3,db4]@2", // Db
  M: "[[db4,e4] f4@3 ~@2 g4 ab4 ~@2 g4 ab4@2 ~@5 [b3,db4,f4,ab4]@34 ~@20, ab4@4 ~@2 [db4,db5]@2 ~@2 [db4,db5]@3 ~@5 a4 ~@53]/3", // Dbm Db7 Db
})).s("gm_piano").gain(0.29).pan(0.8)

// chords · acoustic guitar nylon · "C5-P21-Guitar"
const acoustic_guitar_nylon = note(`<
  ~ A B C D C@4 B@2 C@2 A B C D C@4 B@2 C@2 A B C D C@4 B@2 C@2 A B C E@5 F@8 G C@3 B@2 C@2 A B C D A B C D A B C H I@2
>`.pickRestart({
  A: "[ab4,c5,eb5] ~@2 [ab4,db5,f5] ~@2 [ab4,c5,eb5] ~@2 [ab4,db5,f5] ~@2", // Ab Db Ab Db
  B: "[gb4,bb4,db5] ~@2 [gb4,b4,eb5] ~@2 [gb4,bb4,db5] ~@2 [gb4,b4,eb5] ~@2", // Gb B Gb B
  C: "[db4,f4,ab4] ~@2 [db4,gb4,bb4] ~@2 [db4,f4,ab4] ~@2 [db4,gb4,bb4] ~@2", // Db Gb Db Gb
  D: "[db4,f4,ab4] ~@2 [db4,gb4,bb4] ~@2 [db4,f4,ab4] ~@5", // Db Gb Db
  E: "[[f4,ab4]@2 ~@4 [gb4,bb4]@2 ~@4 f4@2 ~@2 g4@2 g4@3 ~ g4@2 ab4@2 ab4 ~ ab4@2 ab4 ~ ab4 ~ ab4 ~ ab4@3 ~ e4@3 ~@5 gb4@4 ~@2 gb4@4 ~@2 ab4@4 ~@2 e4@4 ~@2 e4@3 ~@3 e4@6 e4 ~ f4@2 ab4@2 bb4@2 db5@2 e5@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 f5@3 ~ db5@2 b4 ~ ab4@2 gb4 ~, db4@3 db4@3 db4@26 db4@6 db4@22, ~@12 ab4 ~@107]/5", // Fm Gb
  F: "[gb4 ~ e4@2 ~@8 e4@2 ~@4 e4@3 ~@3 gb4@5 ~ gb4@6 gb4@5 ~@5 g4@4 ab4@2 g4@8 ab4@4 ~@2 e4@3 ~@3 e4@5 ~ db4@4 db4@6 ~@2 e4@3 ~ gb4@2 gb4@5 ~ g4@5 ~ ab4@3 ~ e4@2 ~ e4 ~@2 e4@2 gb4@5 ~ gb4@6 ab4@3 ~ e4@2 ~ eb4 ~@2 e4@8 db4@4 ~@8 e4@3 ~ e4@2 gb4@5 ~ gb4@6 ~ ab4@3 e4@2 ~@4 b3 ~, ~@4 db4@12 db4@6 db4@48 db4@8 ~@10 db4@26 db4@25 db4@11 ~@4 db4@32 db4@6, ~@142 g4 ~@49]/8",
  G: "[f4,ab4] ~@2 db4@3 [f4,ab4] ~@2 [gb4,bb4] ~@2, db4@3 gb4 ~@2 db4@3 db4@3, ~@6 bb4 ~@17", // Fm Gb
  H: "[db4,f4,ab4] ~@2 [db4,gb4,bb4] ~ [db4,f4,ab4] ~@6", // Db Gb Db
  I: "[~@2 db4 ~@2 gb4 ~@2 gb4@4 ~@2 gb4@5 e4 gb4 ~ e4 db4@3 ~@22]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.22).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!72 ~ [~ x ~@22]>").gain(0.59)

// drums · snare
const snare = s("sd").struct("<A B@39 C B@10 D E B@19 F ~ G>".pickRestart({
  A: "~@16 x!3 ~ x ~ x ~", B: "~ x ~ x", C: "~@3 x ~@5 x!3", D: "x!12", E: "x ~ x ~ x ~ x ~ x ~ x!3 ~@3 x ~ x ~@5",
  F: "~@2 x!2 ~ x ~@3 x ~@2", G: "~@3 x!2 ~@19",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<~@5 A B@35 C ~@11 A B@18 C ~@2>".pickRestart({
  A: "~@2 x!2 ~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "x",
})).gain(0.59)

// drums · crash
const crash = s("cr").struct("<~@5 A ~@35 A ~@10 B ~@19 B ~@2>".pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct(`<
  ~
  [x ~ x!2 ~ x!2 ~ x!2 ~ x]!4
  x
  ~@35
  [~@2 x!2 ~ x!2 ~ x!2 ~ x]
  [x ~ x!2 ~ x!2 ~ x!2 ~ x]!11
  x
  ~@21
>`).gain(0.46)

stack(bass, piano, acoustic_guitar_nylon, kick, snare, hihat, crash, ride)

More by Fats Domino