Strudelify

Hello Josephine

Fats Domino

KeyB majorTempo170 bpm
0:00/0:00
// Hello Josephine — Domino Fats
// 170 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 5 "guitar" Elec Gtr 2 -> overdriven guitar
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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 · acoustic bass · "bass"
const bass = note(`<
  ~@7 A@3 B C@2 A@2 D C A E A@4 C F A G H I J A K L M B C@2 N B O P A E A@4 C@2 A@2 D C A E A@4 C@2 A Q D C A R A@4 C@2
  A B D C A E S T S@2 U@2 V W X Y Z AA AB A@2 B AC C A@2 D AD A AE
>`.pickRestart({
  A: "b1 ~ b1 ~ d#2 ~ d#2 ~ f#2 ~ f#2 ~ d#2 ~ f#2 ~", B: "b1 ~ b1 ~ d#2 ~ d#2 ~ f#2 ~ f#2 ~ d#2@2 f#2 ~",
  C: "e1 ~ e1 ~ g#1 ~ g#1 ~ b1 ~ b1 ~ g#1 ~ b1 ~", D: "f#1 ~ f#1 ~ a#1 ~ a#1 ~ c#2 ~ c#2 ~ a#1 ~ c#2 ~", E: "b1 ~@15",
  F: "e1 ~ e1 ~ g#1 ~ g#1 ~ b1 ~ b1 ~ g#1@2 b1 ~", G: "b1 ~ b1 ~ d#2 ~ d#2 ~ f#2 ~ f#2 ~ d#2 ~ f#2@2",
  H: "f#1 ~ f#1 ~ a#1 ~ a#1 ~ c#2 ~ c#2 ~ a#1@2 c#2 ~", I: "[d#1,e1] ~ e1 ~ g#1 ~ g#1 ~ b1 ~ b1 ~ g#1 ~ b1 ~",
  J: "b1 ~ b1 ~ d#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~", K: "b1 ~ b1 ~ d#2 ~ f#2 ~ f#2 ~ f#2 ~ d#2 ~ f#2 ~",
  L: "b1 ~ b1 ~ d#2 ~ d#2 ~ f#2 ~@3 d#2 ~ f#2 ~", M: "b1 ~ b1 ~ d#2 ~ d#2 ~ f#2 ~ f#2 ~ d#2 ~ d#2 ~",
  N: "[a#1,b1] ~ b1 ~ d#2 ~ d#2 ~ f#2 ~ f#2 ~ d#2 ~ f#2 ~", O: "f#1 ~ f#1 ~ [a#1,b1] ~ a#1 ~ c#2 ~ c#2 ~ a#1 ~ c#2 ~",
  P: "e1 ~ e1 ~ g#1 ~ g#1 ~ [a#1,b1] ~ b1 ~ g#1 ~ b1 ~", Q: "b1 ~ b1 ~ [d#2,e2] ~ d#2 ~ f#2 ~ f#2 ~ d#2 ~ f#2 ~",
  R: "b1 ~ b1 ~ d#2 ~ d#2 ~ f#2 ~ d#2 ~ d#2 ~ d#2 ~", S: "b1 ~@5 b1 ~ b1 ~@7", T: "b1 ~@7 b1 ~@7",
  U: "e1 ~@5 e1 ~ e1 ~@7", V: "b1 ~@5 b1 ~ b1@2 ~@6", W: "b1 ~@7 b1@2 ~@6", X: "f#1 ~@5 f#1 ~ f#1 ~@7",
  Y: "e1 ~@7 e1 ~@7", Z: "b1 ~@3 b1@2 ~@2 b1 ~@3 b1@2 ~@2", AA: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  AB: "b1 ~ b1 ~ d#2 ~ [d#2,e2] ~ f#2 ~ f#2 ~ d#2 ~ f#2 ~", AC: "e1 ~ [d#1,e1] ~ g#1 ~ g#1 ~ b1 ~ b1 ~ g#1 ~ b1 ~",
  AD: "e1 ~ e1 ~ g#1 ~ [a#1,b1] ~ b1 ~ b1 ~ g#1 ~ b1 ~", AE: "b1@7 ~",
})).s("gm_acoustic_bass").gain(0.64)

// chords · piano
const piano = note(`<
  ~@7 A B C D E F G D H I J K L M J N O F M D P O Q R S J T D U V T N W X J K J@3 D Y F J Z AA AB J AC J@2 AD D AE AF AG
  D AH U AI R AJ J@2 D AK F J D AL U AM AC AN AO AN AP AQ AR AS AN AT AU AN AC J@2 Q N AV F AW D AX AB Q R
>`.pickRestart({
  A: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4]@2 f#4 ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4] ~ [d#4,f#4,b4] ~, ~@6 b4 ~", // B G#m B G#5 B
  B: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,b4] ~ [d#4,f#4,b4] ~, ~@6 g#4 ~", // B G#m B G#m B
  C: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,b4]@2 f#4 ~, ~@12 g#4 ~@3", // B G#m B G#m
  D: "[d#4,a4,b4] ~ [d#4,a4,b4] ~ [d#4,g#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4]@2 f#4 ~", // B7 G#m B G#m
  E: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,e5]@2 b4 ~, ~@12 c#5 ~@3", // E C#m E C#m
  F: "[g#4,d5,e5] ~ [g#4,d5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5]@2 b4 ~", // E7 C#m E C#m
  G: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4]@2 f#4 ~, ~@4 g#4@2 ~@6 b4 ~@3", // B G#m B G#5
  H: "[a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,d#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,d#5,f#5]@2 c#5 ~", // F# D#m F# D#m
  I: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5]@2 b4 ~, ~@2 e5 ~@5", // E C#5 E C#m
  J: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~", // B G#m B G#m B
  K: "[d#4,f#4] ~@15, b4 ~@7", // D#m
  L: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4]@2 f#4 ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~", // B G#m B G#m B
  M: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [g#4,b4] ~ [f#4,b4] ~, ~@6 d#4 ~", // B G#m B G#m B5
  N: "[d#4,a4,b4] ~ [d#4,a4,b4] ~ [d#4,g#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4]@2 f#4 ~, ~@12 b4 ~@3", // B7 G#m B G#5
  O: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4] ~", // E C#m E C#m G#m
  P: "[a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,d#5,f#5]@2 c#5 ~, ~@2 d#5 ~@5", // F# D#m F# D#m
  Q: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [g#4,b4] ~ [d#4,f#4,b4] ~, ~@6 d#4 ~", // B G#m B G#m B
  R: "[d#4,f#4,b4] ~@7", // B
  S: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4]@2 [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~, ~@4 b4 ~@11", // B G#5 B G#m B
  T: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4] ~", // B G#m B G#m D#m
  U: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5]@2 b4 ~", // E C#m E C#m
  V: "[g#4,d5,e5] ~ [g#4,d5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5] ~ [g#4,b4] ~, ~@6 e5 ~", // E7 C#m E C#5 G#m
  W: "[a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,d#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,d#5] ~ [a#4,c#5] ~, ~@6 f#5 ~", // F# D#m F# D#5 A#m
  X: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [c#5,e5]@2 [g#4,b4] ~, ~@12 g#4 ~@3", // E C#m E C#m G#m
  Y: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [c#5,e5] ~ [b4,e5] ~, ~@6 g#4 ~", // E C#m E C#m E5
  Z: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [g#4,b4]@2 [d#4,f#4] ~, ~@12 d#4 ~@3", // B G#m B G#m D#m
  AA: "[c#5,f#5] ~ [c#5,f#5] ~ [a#4,d#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,d#5] ~ [a#4,c#5] ~, a#4 ~@5 f#5 ~", // F#5 D#m F# D#5 A#m
  AB: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5] ~ [g#4,b4] ~, ~@6 e5 ~", // E C#m E C#5 G#m
  AC: "[d#4,f#4,b4] ~@15", // B
  AD: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4]@2 [f#4,b4] ~, ~@12 b4 ~@3", // B G#m B G#5 B5
  AE: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,e5]@2 b4 ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [c#5,e5]@2 [g#4,b4] ~, ~@4 c#5 ~@7 g#4 ~@3", // E C#m E C#m G#m
  AF: "[g#4,d5,e5] ~ [g#4,d5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [c#5,e5]@2 [g#4,b4] ~, ~@12 g#4 ~@3", // E7 C#m E C#m G#m
  AG: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~, ~@2 g#4 ~@5", // B G#m B G#m B
  AH: "[a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5] ~ [a#4,d#5,f#5]@2 c#5 ~, ~@2 d#5 ~@2 f#5 ~@2", // F# D#m F# A#m D#m
  AI: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [g#4,b4] ~ [f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~, ~@2 d#4 ~@5", // B G#m B5 B G#m B
  AJ: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~, ~@2 d#4 ~@5", // B G#m B G#m B
  AK: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [c#5,e5] ~ [b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5] ~ [g#4,b4,e5] ~, ~@2 g#4 ~@5", // E C#m E5 E C#m E
  AL: "[a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,d#5,f#5]@2 c#5 ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,f#5]@2 c#5 ~, ~@12 d#5 ~@3", // F# D#m F# D#m
  AM: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,b4]@2 [d#4,f#4,b4] ~, ~@12 g#4 ~@3", // B G#m B G#m B
  AN: "~@4 [d#4,f#4,b4] ~ [d#4,f#4,b4] ~@5 [d#4,f#4,b4] ~@3", // B
  AO: "~@4 [d#4,f#4,b4] ~ [d#4,f#4,b4] ~@5 [d#4,b4]@2 ~@2, ~@12 f#4 ~@3", // B G#m
  AP: "~@4 [d#4,a4,b4] ~ [d#4,a4,b4] ~@5 [d#4,a4,b4] ~@3", AQ: "~@4 [e4,g#4,b4] ~ [e4,g#4,b4] ~@5 [e4,g#4,b4] ~@3",
  AR: "~@4 [e4,g#4,d5] ~ [e4,g#4,d5] ~@5 [e4,g#4]@2 ~@2, ~@12 d5 ~@3", // E7 E
  AS: "~@4 [d#4,f#4,b4] ~ [d#4,f#4,b4] ~@5 [f#4,b4] ~@3, ~@6 d#4 ~", // B B5
  AT: "~@4 [f#4,a#4,c#5] ~ [a#4,c#5] ~@5 [a#4,c#5] ~@3, ~@3 f#4 ~@2 f#4 ~", // F# A#m
  AU: "~@4 [e4,g#4,b4] ~ [e4,g#4,b4] ~@5 [g#4,b4] ~@3, ~@6 e4 ~", // E G#m
  AV: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,c#5,e5]@2 [b4,e5] ~, ~@2 c#5 ~@5", // E C#m E C#m E5
  AW: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,b4] ~ [d#4,f#4,b4] ~, ~@2 g#4 ~@3 g#4 ~", // B G#m B G#m B
  AX: "[a#4,f#5]@2 [c#5,f#5] ~ [a#4,d#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,f#5]@2 [a#4,c#5] ~, c#5 ~@11 d#5 ~@3", // D#m F#5 D#m F# D#m A#m
})).s("gm_piano").gain(0.4).pan(0.6)

// chords · overdriven guitar · "guitar"
const overdriven_guitar = note("<~@30 A B C D E F@2 G H I J K ~@24 L M N O P Q R S T U V K ~@25>".pickRestart({
  A: "~@10 [f#4,b4] ~ [g#4,b4] ~ f#4 ~", B: "b4@2 g#4 ~ [f#4,b4] ~ [d#4,b4]@3 ~ [d#4,b4] ~ [f#4,b4]@2 d#4 ~, a4 ~@15",
  C: "[a4,b4]@2 [g#4,b4] ~ f#4@2 d#4@3 ~ [d#4,b4] ~ [f#4,b4]@2 d#4 ~", // Asus2 G#m B5
  D: "[a4,a#4] ~ f#4@2 d#4 ~ [a4,b4]@2 f#4 ~ d#4 ~ [a4,a#4,b4]@2 f#4 ~, b4@4 ~@2 a#4 ~@9", // A#maj7 Asus2
  E: "[a4,b4]@2 f#4 ~ d#4 ~ [a4,a#4] ~ f#4 ~ d#4 ~ [e4,f#4,b4]@2 d#4 ~, ~@3 b4 ~@4", // Asus2 A#maj7 Esus2
  F: "[[b4,e5]@3 ~ [b4,e5]@3 ~ [b4,e5]@2 g#4 ~ b4 ~ [d5,e5]@4 c#5 ~ b4 ~ g#4 ~ d5@2 b4 ~ g#4 ~ b4@2, ~@24 e5@4 ~@2 g4 ~]/2", // E5 Dsus2
  G: "~@2 [g#4,b4] ~ f#4@2 d#4 ~ [f#4,b4]@2 d#4 ~ f#4 ~ [a4,b4]@2", // G#m B5 Asus2
  H: "~@2 [g#4,a#4,b4]@2 ~@2 [f#4,b4]@4 d#4 ~ [f#4,b4]@2 d#4 ~", // G#m B5
  I: "[a#4,c#5]@3 ~ [a#4,c#5]@3 ~@3 g#4@2 f#4 ~ [g#4,b4]@2, b4 ~@3 b4 ~@3 [a#4,c#5]@4 ~@2 a#4 ~", // A#m G#m A#m
  J: "~@2 [g#4,b4]@3 ~ g#4@3 ~ f#4@2 e4@3 ~, ~@3 b4@4 ~", K: "[f#4,b4]", L: "~@10 [f#4,b4] ~ g#4@2 f#4 ~",
  M: "[a4,b4] ~ g#4 ~ f#4 ~ [d#4,b4]@3 ~ [d#4,b4] ~ [f#4,b4] ~ d#4 ~", // Asus2 G#m B5
  N: "[a4,b4] ~ b4@2 f#4 ~ [d#4,b4]@3 ~ [d#4,b4] ~ [f#4,b4]@2 d#4 ~, ~@2 g#4 ~@13", // Asus2 G#m B5
  O: "a4 ~ f#4@2 d#4 ~ [a4,a#4] ~ f#4@2 d#4 ~ [a4,b4]@2 f#4 ~, b4@2 ~ b4 ~@4", // A#maj7 Asus2
  P: "[a4,b4]@2 f#4 ~ d#4 ~ [a4,b4]@2 f#4 ~ d#4 ~ [a4,b4]@2 ~@2, ~@6 a#4 ~@9", // Asus2
  Q: "[b4,e5]@3 ~ [b4,e5]@3 ~ [b4,e5]@2 g#4 ~ b4 ~ [d5,e5]@2", // E5 Dsus2
  R: "~@2 [c#5,d#5,e5]@2 ~@2 [b4,e5]@4 g#4 ~ [b4,e5]@2 g#4 ~", // C#m E5
  S: "[g#4,b4]@3 ~ [g#4,b4]@3 ~ b4@2 f#4 ~ d#4 ~ [f#4,b4]@2, [f#4,g4] ~@7 g#4 ~@7", // G#m B5 Gmaj7
  T: "~@2 [f#4,b4]@3 ~ [f#4,b4]@4 d#4 ~ [f#4,b4]@2 d#4 ~", // B5
  U: "[a#4,c#5]@3 ~ [a#4,c#5]@3 ~ b4 ~ g#4@2 f#4 ~ [g#4,a#4,b4]@2, b4 ~@3 b4 ~@3 [a#4,c#5]@4 ~@4", // A#m G#m A#m
  V: "~@2 [g#4,b4]@2 ~@2 g#4@3 ~ f#4@2 e4@2 ~@2, ~@3 b4@3 ~@2, ~@6 a#4 ~@9", // G#m
})).s("gm_overdriven_guitar").gain(0.56).pan(0.4)

// chords · overdriven guitar · "guitar" · soft notes
const overdriven_guitar_soft = note("<~@30 A B C ~ B ~ D@2 ~@28 E F G ~ H ~@2 I ~@2 J ~@26>".pickRestart({
  A: "~@14 b4 ~", B: "a#4 ~@15", C: "~@4 b4@5 ~@7", D: "[~@2 e5 ~ e5 ~@10 g#4@2 ~@3 b4@2 ~@10]/2", E: "~@6 b4 ~",
  F: "~@2 b4 ~ b4 ~@11", G: "~@6 g#4 ~", H: "~@10 b4 ~@3 [c#4,d#4] ~", I: "~@4 a#4 ~@3 a#4 ~@7", J: "~ a#4 ~@6",
})).s("gm_overdriven_guitar").gain(0.32).pan(0.4)

// chords · drawbar organ · "organ"
const drawbar_organ = note(`<
  ~@7 A@4 B@2 C@2 D E F ~ G@4 H@2 I@2 J K F ~ L@4 M@2 I@2 D N O ~ P@4 Q@4 R N O ~ S@4 T@2 U@2 D V O ~ W@4 X@2 Y@2 Z AA O
  ~@13 P@4 AB@2 AC@3 V AD@2
>`.pickRestart({
  A: "[b5@56 a5@7 ~, [f#5,d#6]]/4", B: "[b5@15 ~ d6@16, [g#5,e6]]/2", C: "[[f#5,b5,d#6]@31 ~]/2", D: "[f#5,a#5,c#6]",
  E: "[g#5,b5,e6]@15 ~", F: "[f#5,b5,d#6]", G: "[b5@24 a5@7 ~, [f#5,d#6]@63 ~]/4", H: "[g#5,b5,e6]/2",
  I: "[f#5,b5,d#6]/2", J: "[a#5,c#6], f#6@7 ~", K: "[g#5,b5,e6]", L: "[b5@48 a5@15 ~, [f#5,d#6]@63 ~]/4",
  M: "[b5@15 ~ d6@15 ~, [g#5,e6]]/2", N: "[e5,g#5,b5]", O: "[d#5,f#5,b5]", P: "[b5@48 a5@15 ~, [f#5,d#6]]/4",
  Q: "[[e5,g#5]@31 ~ [f#5,d#6]@31 ~, b5]/4", R: "[a#5,c#6], f#5@7 ~",
  S: "[~@48 a5@15 ~, f#5@63 ~, b5@3 ~, d#5 ~, ~ d#6@7]/4", T: "[b5@16 d6@15 ~, [e5,g#5]]/2",
  U: "[d#5@4 d#6@3 [f#5,b5,d#6], [f#5,b5]@7 ~]/2", V: "[e5,g#5,b5]@15 ~", W: "[b5@3 a5, [f#5,d#6]]/4",
  X: "[b5@16 d6@15 ~, [e5,g#5]@31 ~]/2", Y: "[~@16 d#6@15 ~, [d#5,f#5,b5]@31 ~]/2", Z: "[f#5,a#5,c#6]@3 [f#5,a#5,c#6]",
  AA: "[e5,g#5,b5]@11 ~ [e5,g#5,b5]@3 ~", AB: "[b5@15 ~ d6@15 ~, [e5,g#5]@31 ~]/2",
  AC: "[d#5 d#6 [a#5,c#6], f#5@47 ~, b5@2 ~]/3", AD: "[[d#5,f#5,b5]@9 ~@7]/2",
})).s("gm_drawbar_organ").gain(0.4)

// drums · kick
const kick = s("bd").struct("<[x!4]!79 [x ~@2 x!2 ~@3]!10 [x!4]!13 ~>").gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A C ~ A B A B A B A B A B C ~ A@10 C ~ A@10 C ~ A@10 C ~ A@10 C ~ A@10 C ~ D@10 C E A@10 C ~
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x!4 ~@12", D: "~@2 x!2 ~@2 x ~", E: "x!16",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<A@5 ~ A@11 ~ A@11 ~ A@11 ~ A@11 ~ A@11 ~ A@11 ~ A@11 ~@2 A@10 ~@2>".pickRestart({
  A: "~@2 x!2 ~@2 x ~",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@5 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~>".pickRestart({
  A: "~@12 x!4",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@5 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~>".pickRestart({
  A: "~@8 x!4 ~@4",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@5 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~>".pickRestart({
  A: "~@4 x!4 ~@8",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@6 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@11 A ~@23 A>".pickRestart({
  A: "x",
})).gain(0.8)

stack(
  bass, piano, overdriven_guitar, overdriven_guitar_soft, drawbar_organ, kick, snare, clap, low_tom, mid_tom, high_tom,
  crash
)

More by Fats Domino