Strudelify

The Day (That You Gave Me a Son)

Babyface

KeyD majorTempo68 bpm
0:00/0:00
// The Day (That You Gave Me a Son) — Babyface
// 68 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 74 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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 · piano · "pi"
const piano = note(`<
  A B@3 C@2 D E F G H I J K L@2 M N O P Q R S T U V@3 W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH@3 BI BJ@4 ~
>`.pickRestart({
  A: "~@7 c#5, d3@5 a4 d5@2, ~ a3@7, ~ d4@3, ~@3 e4@5",
  B: "[~@4 d4@4 ~@6 g3@2 ~@14 c#5@2 ~@15 c#5, [g2,c#5]@33 ~@11 e4@48 d5@4, a4@4 d4@5 a3@15, ~ g3@2 ~ a4@4 d3@16, ~@8 b4@16 b4@9 ~@7 d4@12 a4@4 d5@8 [g3,d4,a4,c#5]@32]/3", // Gdim Gsus2
  C: "[~@9 f#3@7, [g2,a4], d4@8 d2@3 ~@5, ~ b4@63, ~ [a2,d3,e3]]/2", D: "c#4 ~ a3@2, g2, ~ g3@2 ~",
  E: "~@7 [a3,c#4], ~ a2@7, ~@2 d3@2 ~ a3@2 ~, ~@3 e3@5, ~@3 d4", // A
  F: "~@7 g2, [d3,c#4], a3!2, g2@3 g2@4 ~, ~ b3@2 [g3,b3]", G: "~@7 c#4, d2@5 a3 d4@2, e3@3 e3@5, ~ a2@7, ~ d3@3",
  H: "d3@3 ~@5 b3@12 ~@8 d3@4, g2, [a3,c#4]@11 ~@21, ~@4 d3@7 ~@21, ~ g3 ~@2", // A
  I: "~@7 c#4, d2, a3@3 e3@3 d4@2, ~ a2@7, ~@2 d3@3 a3@2 ~",
  J: "a3@4 ~@2 d4@2 [g2,g3,b3]@4 f#2@3 a3, [g2,c#4] ~, d3 ~@3 d3@4", // G Gdim
  K: "~@5 b3 ~ d4, e2@9 g3@3 [g3,b3,e4]@4, g3 e3, ~ b2@7, ~@2 e3 f#3@5", // Em
  L: "[~@8 e3@4 ~@2 g2 f#2 ~@14 d4@2, [a2,a3,d4]@31 ~ e2@24 e4@8, e3@16 b3@13 ~@3 g3@20 [g3,b3]@12, ~ c#4@2 e3@2 e3@3, ~@6 c#4@2 ~@3 f#3@5]/2", // D5 G
  M: "e3 ~@6 e3, [a2,d4], a3@2 c#4@3 e3@2 ~, ~ e3@2 e3 a3@2 [a3,c#4]@2, ~ a3 b3@2", // D5 A
  N: "d4@5 ~@2 f#4, a4, a3@3 ~@2 [a3,d4]@3, ~@3 [d3,e4]", // D5 Dsus2
  O: "g2 ~@4 g2 a2!2, [g1,f#4]@24 f3 ~@7, [g3,b3,d4]@8 [g3,b3,d4]@8 [g3,b3,d4]@9 ~@7, ~ g2@2 g2@2 ~ [a1,g3,b3]@2", // Gmaj7 G Em
  P: "~@3 e3@2 ~@2 f#4, d2@3 e4, a3@5 [e3,f#3,a3,d4]@3, ~ a2@7, ~ d3@3", // D
  Q: "g2 ~@4 [g2,b3] ~ [f#2,f#4], [g1,d4,f#4,a4]@3 [f#1,f#3,a3,d4], b3@8 g4@4 ~ e4@3, g3@2 g3 g2@2 ~ f#2 ~, ~ g2@2 b4@3 ~@2", // G F# D
  R: "e3@3 ~@4 [e3,d4], e4@3 [b2,e4], [e2,g3,b3]@5 [e2,g3,b3]@3, ~@3 e3@4 ~", // E7 E5 Em
  S: "~@28 [g2,g3]@2 f#2 ~, [a2,d4]@31 ~, e3@20 e3@11 ~, a3@12 ~@4 b3@15 ~, ~ c#4@2 [a3,c#4]", // G D5 A
  T: "~@7 d4, e2@3 [e3,e4], [g3,b3]@3 f#3@5, ~ b2@7, ~@2 e3@3 [g3,b3]@3", // E G
  U: "a2!2 ~@5 a2, a1, a3@4 e3 a2@2 ~, [e3,d4] c#4@2 [e3,a3,c#4], ~@2 e3 a2 b3@4", // E7 A
  V: "[g2@4 g2@8 ~@76 d4@7 ~, g1@32 d3@32 [a2,d3]@31 ~, d4@24 b3@9 ~@7 b3@24 e3@20 ~@12, b3@16 g3@14 g2@34 d2@4 f#3@27 ~, g3@8 ~@4 g2@16 d4@4 [g3,a3,d4,g4]@44 d2@19 ~]/3", // D5 Gsus2
  W: "[a3,c#4]@8 [g3,b3]@7 ~@9 b3@8, g1, d3@5 g2@2 ~, g2@2 a3 ~, ~ g3", // A G
  X: "e3 ~@6 c#5, [d2,a3]@3 d5, ~ a2@3 ~ a4@3, ~ d3@3, ~@3 e3@5", // D5
  Y: "~@20 d3@3 ~@5 [c#4,e4]@4, [g2,d4,c#5]@23 ~ [a2,a3,b3,d4]@8, ~@4 d3@8 ~@4 a4@7 ~@9, ~@8 b4@15 ~@9", // C#m G Bm7
  Z: "~@3 e3@2 ~@2 c#4, f#4, [d2,d4]@3 [d2,d4], a3@2 d3@2 ~ [e3,a3]@3, ~ a2@7", // D A5
  AA: "~@28 d3@3 ~, [g2,c#4]@31 ~, a3@16 a3@15 ~, d3@3 d3@2 ~@3, ~@8 [g3,b3]@16 [g3,b3]@7 ~", // Gdim G
  AB: "~@5 a4 [a2,d5]@2, [f#3,a3], d2@3 e3@5, ~ a2@3 d2@4, ~ d3@3", // D5 F#m
  AC: "g3@4 ~@8 d5@4 ~@4 g3@4 [f#2,d4,a4]@6 ~ f#4, [g2,d3,c#5]@9 ~@7, d4!2 [g2,d4,b4] ~, ~@2 g3@7 ~@3 f#3@2 ~ g4", // D G
  AD: "~@12 f#3@4 g3@7 ~ e4@3 ~ d4@3 ~, e2@7 ~, [b3,g4]@11 ~@13 g3@7 ~, ~@8 e3@23 ~", // Em
  AE: "d4@8 c#4@8 b3@7 ~ g2@4 f#2@3 ~, [e3,a3], a2@3 c#4", // A5
  AF: "~@12 f#3@7 ~@5 e4@2 ~@6, e2@15 ~, g3 e3@3, ~@4 b2@27 ~, ~@5 [g3,b3]@3", // G
  AG: "e3 ~@6 e3, a2, [a3,d4] a3@3, ~@4 e3@7 ~ e3@7 ~ e3@8 ~@4, ~@8 c#4@8 b3@7 ~ c#4@8", // D5
  AH: "d3@2 ~@10 [d3,d4]@8 [a3,d4]@4 [a3,d4]@4 [a3,d4,f#4,a4]@3 ~, a4@7 ~, f#4@5 f#4@2 ~, d2@16 ~@8 [e4,g4]@7 ~, [a3,d4]@4 d3@4 a3@12 d3@11 ~", // D D5 D Em D5
  AI: "g2 ~@4 g2 a2!2, [g1,a4]@3 [a1,a3,d4,e4,g4], [b3,d4,f#4] [g3,b3,d4,f#4]!2 ~, ~ g2@2 g2@2 ~@3", // Gsus2 Asus4 Bm Gmaj7
  AJ: "~@20 [a3,d4,f#4]@3 ~ [a3,d4]@4 [a3,d4,f#4,a4]@3 ~, d2@31 ~, [a3,d4,f#4]@16 f#3@7 ~@9, ~@8 d3@23 ~, ~@12 e3@11 ~ [a2,e4,g4]@7 ~", // D D5 D A7
  AK: "g2 ~ [d4,g4,b4]@2 g3!2 f#3!2, [g1,a3,f#4,a4] ~, d4 ~@3, ~ g2@2 ~ [g2,b3,d4,g4]@2 [f#2,b3,d4,f#4]@2", // G D G Bm
  AL: "e3 ~@4 [g3,b3] ~ f#4, e2@3 [e3,g3,b3,e4,g4], b3@3 g3 b2@4, b2 f#3@3, g3 e3@4 d4@3", // G Em
  AM: "~@14 g2 f#2, [a1,f#4]@27 ~@5, a2@3 a2 a3 a2@2 ~, ~@8 e4@16 [a3,c#4,e4]@7 ~, ~@8 a3@8 d4@11 ~@5", // D A
  AN: "~@5 [b3,d4] d4 [d4,f#4], e2, g3@3 f#3 g3@2 ~@2, ~ b2@7, ~ e3@2 [e3,g3,b3,g4]", // Bm D Em
  AO: "a2@4 ~@24 a2@3 ~, a1@31 ~, [a3,d4,f#4] [c#4,e4]@2 ~, ~ a2@2 a2@2 a2@2 ~, ~@8 a3@8 [a3,b3,d4]@8 [a3,c#4,e4]@7 ~", // D C#m Bm7 A
  AP: "g2 ~@6 [d3,b3], [g1,g4], d4 g2, b3@2 g3@2 b3 d3 [g3,a3]@2, g3 g2@2 a3@2 d4@3", // G Gsus2
  AQ: "~ a2@2 ~@4 f#5, f#4, d4@3 [d4,e5], a4@5 [a4,d5]@3, [d2,d3,a3] d2", // Dsus2 D5
  AR: "[b4,d5]@2 ~@5 g3, f#5, ~ [b4,d5] d5@2, ~@3 g3@2 g3@2 ~, ~@2 [g4,b4] [d4,g4,b4]", // Bm G
  AS: "d3@4 d3@4 ~@2 a3@4 d4@2 ~@6 d4@2 c#3@2 ~@2 a3@2 c#4 ~, [d2,d4,f#4,a4]@15 ~ [d2,f#4,a4]@8 [c#2,e4,a4]@7 ~, ~@8 d3@7 ~ a3@4 a3@4 a3@4 ~@4, ~@18 d3@6 c#4 ~ c#3@5 ~", // D A
  AT: "[b2,b3,d4]@6 [b2,f#3,b3,d4]@2 b2@2 ~@2 [f#3,b3,d4]@2 b2 ~, b1@15 ~, f#4@15 ~ [f#3,b3,c#4]@7 ~@9, ~@5 b2@2 ~", // Bm F#sus4
  AU: "~@2 e4@2 ~@3 a#2, a#2@5 a#2@2 ~, [a#1,f#3,c#4,f#4] a#1, ~@2 [f#3,c#4,e4,f#4]!2", // F# F#7
  AV: "[a2,a3,b3,d4]@3 [a2,a3,b3,d4] a2 ~@2 a2, f#4@23 ~@9, a1!2, ~@16 [a3,b3,d4,e4]@7 ~ [a3,b3,d4,f#4]@8, ~@5 a2@2 ~", // Bm7 Asus4 Bm7
  AW: "~@3 [g#1,g#2] g#2 ~ [g#3,d4]@2, e4, [g#3,d4]@5 g#2@3, [g#1,g#2]@3 ~ g#1@4, ~ b3@3", // G# G#dim G#
  AX: "[g2,e4]@8 ~@4 g2@3 ~@13 g2@4, g1, [g3,b3]@3 [g3,b3,d4], ~ d4@2 ~, ~@4 g2@3 ~", // C G
  AY: "f#1@12 [f#1,f#2]@3 ~@13 f#2@4, [f#3,a3,d4]@23 ~ [f#3,a3,d4]@8, f#2@3 ~@5 f#1@8, ~@4 f#2@3 ~", // F# D
  AZ: "[f1,f2]@3 f1 ~@3 f2, [g#3,b3,d4], f3@3 f3, ~ f1, ~@4 f2@3 ~", // F G#dim
  BA: "e2@3 ~@25 e2@4, e1, b3!2, d4 e3@3, ~ e2@2 e2 g3 e2 [g3,d4]@2", // G5
  BB: "a2 ~@6 a2, a1, [a3,c#4] [c#4,e4], ~ a2@2 a2 a3 a2 [a3,g4]@2, ~ [b3,d4]@3", // A C#m A7 Bm
  BC: "~@3 d4@2 ~@2 f#4, d2, f#4@3 [d3,e4], a4 a3@3, a3 d3@4 [d4,a4]@3", // Dsus2 D5
  BD: "~@20 d3@3 ~ [a2,g3,b3]@8, [g2,f#4]@23 ~@9, [b3,d4] g3@2 ~, ~ d3@2 d3@2 ~@3, ~@8 [b3,d4]@8 [b3,d4]@7 ~@9", // Em Gmaj7 Bm
  BE: "~@4 f#3 ~@2 f#4, d2@11 d4 [a2,e4]@4, a3@3 e3@5, e3 d3@3, ~ a2@4 [f#3,a3]@3", // A5 F#m
  BF: "g3 g3@2 d4 [g2,b3,d4,g4]@2 [f#2,f#3,b3,f#4]@2, a4@3 ~, d3@5 ~@3, d4@3 b4@3 ~@2, [b3,f#4] ~@3", // G B5
  BG: "e2@6 ~@9 f#4, [b3,g4]@7 e4, e4@3 b2, b2@4 b2 [e3,d4]@3, [e3,g3]@2 ~ e2@5", // Em E7 Em
  BH: "[a3@4 ~@24 g2@2 f#2@2 ~@20 b3@4 ~@8 b4@3 ~@23 c#4@6, [a2,g4]@7 ~ e2@4 g3 d4 [e4,g4]@4 g4@4 d4@2, e3@4 e4@7 f#3@3 [g3,b3,a4]@2 a2@8, e4@8 d4@16 ~@8 g3@8 e3@27 ~ e3@12 e4@16, ~@4 a3@4 f#4@20 ~@8 b2@31 ~@5 e4@2 f#4@22]/3", // A7 Em G
  BI: "~@14 [a3,c#4] b3, d4@31 ~, d3@5 ~@3, g2@6 b3@9 ~, a3@4 g3@20 g3@7 ~", // A
  BJ: "[~@4 e3@8 ~@16 [f#4,f#5]@4 ~@11 [d4,d5]@11 ~@12 [b3,b4]@11 ~@3 a4@48, d2@34 [f#4,f#5]@43 ~@51, a2@32 g2@45 [d2,d3]@49 ~@2, a3@16 a3@17 b3@21 [a2,a3,d4,d5]@23 ~@51, f#3@8 ~@12 [d4,d5]@4 [e4,e5]@53 ~@2 [a3,e4,f#4]@49]/4", // F# D B F# D D5 D E …
})).s("gm_piano").gain(0.27)

// chords · piano · "pi" · soft notes
const piano_soft = note(`<
  ~ A B C ~ D E F ~ G H I J ~@2 K ~ L ~@2 M N O ~@2 P ~ Q R S T U V W X Y ~ Z ~ AA ~ AB AC AD ~ AE ~@2 AF ~@8 AG AH AI
  ~@3 AJ AK AL AE AM AN AO@3 ~@2
>`.pickRestart({
  A: "~@3 g3@2 g3@2 ~", B: "a4@5 ~@3", C: "g2", D: "f#3 ~@6 [a3,c#4], ~@3 d2@5, ~@5 a3@2 ~, ~@3 d4",
  E: "a3 b3@2 [d3,g3,b3], d3@3 ~", F: "~ e3@5 ~@2 d3@8, d2, a3@5 ~@3", G: "f#3, a3@5 ~@3",
  H: "~@25 b3@7, ~@3 d3@2 d3@2 ~, ~ a3, ~@2 g3!2", I: "~@5 f#3 ~ a3, ~@3 d3", J: "~ a3 ~@2, ~ d3@3 ~@4",
  K: "~ b2@7, b3@5 ~@3", L: "~ d2, d3@3 ~, ~ f#3@7, ~@3 a3@2 ~@3", M: "~@2 g3 ~", N: "~ f#3, ~ b2@2 ~",
  O: "~@3 a3@3 ~@2", P: "~@2 g3@2 ~ a3@3", Q: "~@28 c#4@3 ~, ~@20 [e3,a3]@11 ~", R: "~@7 g2, ~@3 d3", S: "~ a2",
  T: "~@3 d3@2 ~@3, ~@8 g3@15 ~@9", U: "~ d3", V: "~@5 d3@2 ~", W: "e3@3 ~@4 c#5, ~@3 a4", X: "~@7 f#3",
  Y: "~@20 b3@11 ~, ~@2 b2@13 ~", Z: "b3@19 ~@9 d4@3 ~", AA: "~@16 d2@15 ~", AB: "~@4 a2@19 ~@9", AC: "~@3 g2 ~@4",
  AD: "[e4,g4]@3 ~", AE: "b3@5 ~@3", AF: "~@3 a2@5, ~ [d3,a3]@3", AG: "~@3 f2 ~@4", AH: "~ d4@2 ~", AI: "~@3 a4",
  AJ: "~@2 b3!2 ~ d3 ~@2, g2 ~, ~ f#4@2 ~, ~@3 g3@3 ~@2", AK: "~ g3@3", AL: "~@24 d4@7 ~, ~@3 a3@4 ~, ~@5 e3@2 ~",
  AM: "~@3 e3, ~ a3@3", AN: "~@20 d3@11 ~, ~@2 a3@5 ~, ~@16 g2@15 ~", AO: "[~@3 e3@16 ~@5, ~ f#3@8 ~@3]/3",
})).s("gm_piano").gain(0.13)

// bass · fretless bass · "bass intr"
const bass = note(`<
  ~@18 A B C D E F G H@2 I J B K L M B N O P Q G B R@2 S T U D V M B W X Y Z AA AB AC AD AE O V ~@14
>`.pickRestart({
  A: "g1@3 a1", B: "d2", C: "g1@3 f#1", D: "e1", E: "a1@29 ~@3", F: "e1@31 ~", G: "a1", H: "g1/2", I: "d2@11 ~ d2@20",
  J: "g1@11 ~ g1@20", K: "g1@15 ~ g1@8 a1@8", L: "d2@31 ~", M: "g1", N: "g2@3 f#2", O: "e2", P: "a1@14 g1 f#1",
  Q: "e1@5 e2@3", R: "[g1@23 a1@8 d2@32 ~]/2", S: "g1@24 f#1@7 ~", T: "e1@11 ~ e1@16 f#1 ~ g1@2",
  U: "a1@24 g1@4 f#1@3 ~", V: "a1@31 ~", W: "g2 a2", X: "d2@11 ~ d2@3 ~ c#2@16", Y: "b1", Z: "a#1@12 a#1@19 ~",
  AA: "a1@11 ~ a1@20", AB: "g#1@11 ~ g#1@20", AC: "g1@3 g1@5", AD: "f#1@31 ~", AE: "f1",
})).s("gm_fretless_bass").gain(0.32)

// chords · string ensemble 2 · "Track 4"
const string_ensemble_2 = note("<~@39 A B@3 C D@5 E@2 F@2 G H@2 I J@3 K ~@13>".pickRestart({
  A: "~ d3@15", B: "[[g3,b3,d4]@31 ~ f#3@31 ~ [g3,b3]@24 [f#3,a3]@8, a3@2 ~, ~ d4@2]/3", C: "[e3,g3,b3,e4]@31 ~",
  D: "[[a3,c#4]@32 [e3,b3,g4]@32 [a3,c#4,a4]@32 [g3,g4,b4]@32 [d3,a3,f#4,d5]@20 d5@4 e5@4 f#5@3 ~, e4@96 d4@53 ~@11]/5", // A Em A G D
  E: "[[g4,b4]@31 ~@25 [c#4,e4]@8, d4@3 ~, ~@31 f#4@17 ~@16, ~@32 a4@31 ~]/2", F: "[f#4, d4 ~, b4@3 ~@13]/2",
  G: "~ [d4,f#4,a4]@31", H: "[[e4,g#4] [d4,g4], b4]/2",
  I: "[a4,d5,a5]@24 b4@2 ~@5 a5, [e4,f#4]@31 ~, ~@13 c#5 e5 g5, ~@27 d5@2 f#5@2 ~", // D5 Esus2
  J: "[b5@5 c#6 d6 e6@2 f#6@2 g6, d5@5 ~]/3", K: "a6@9 ~@7",
})).s("gm_string_ensemble_2").gain(0.14)

// chords · glockenspiel · "glockensp"
const glockenspiel = note("<~@4 A@2 ~@62 B@2 C@2 ~@2>".pickRestart({
  A: "[~@19 f#8!2 ~@4 [d#8,g#8] ~ c9!2 e8 ~ g#8 [f#8,g#8] f8 d#8 ~@3 b7@5 ~@21, ~@8 e9@4 a#8@4 [e8,f8,a#8,e9]@4 [a#7,b7,f8,a#8]@3 [c#8,f#8,b8,c9]@3 d#8 [f#8,g8]@3 [b7,e8] d8@4 [d#8,e8]@5 ~@24, ~@9 [d9,d#9]@4 [g#8,a8]@4 [d#8,g#8,a8,d#9]@3 b8 [a7,a8]@4 [a#7,b7,a8]@4 [a#8,b8,c9]@3 c#8@4 d8@5 ~@23, ~@10 c#9@4 [g8,c#9]@4 [c#8,d8,g8,c#9,d9]@3 [e8,f#8] [d8,g8,c#9]@4 [g#8,c#9]@3 d#8 a8@3 e8 f8@5 ~@25, ~@11 [b8,c9]@4 [f#8,b8,c9]@4 [c8,c9]@3 [d#8,g#8]@2 [c8,e8,f8,a#8]@4 f8@3 [d#8,g8]@2 [b7,c8,f#8,g8,g#8]@4 [c8,c#8]@5 ~@22]/2", // G#5 F#sus2 A# F#sus4 Gmaj7 E5 Emaj7 D#maj7 …
  B: "[~@11 f#8!2 ~@4 [d#8,g#8] ~ c9!2 e8 ~ g#8 [f#8,g#8] f8 d#8 ~@3 b7@5 ~@29, e9@4 a#8@4 [e8,f8,a#8,e9]@4 [a#7,b7,f8,a#8]@3 [c#8,f#8,b8,c9]@3 d#8 [f#8,g8]@3 [b7,e8] d8@4 [d#8,e8]@5 ~@32, ~ [d9,d#9]@4 [g#8,a8]@4 [d#8,g#8,a8,d#9]@3 b8 [a7,a8]@4 [a#7,b7,a8]@4 [a#8,b8,c9]@3 c#8@4 d8@5 ~@31, ~@2 c#9@4 [g8,c#9]@4 [c#8,d8,g8,c#9,d9]@3 [e8,f#8] [d8,g8,c#9]@4 [g#8,c#9]@3 d#8 a8@3 e8 f8@5 ~@33, ~@3 [b8,c9]@4 [f#8,b8,c9]@4 [c8,c9]@3 [d#8,g#8]@2 [c8,e8,f8,a#8]@4 f8@3 [d#8,g8]@2 [b7,c8,f#8,g8,g#8]@4 [c8,c#8]@5 ~@30]/2", // G#5 F#sus2 A# F#sus4 Gmaj7 E5 Emaj7 D#maj7 …
  C: "[~@11 e9 d#9 d9 c#9 c9 f#8 ~@2 c#9 c9 b8 a#8 [a8,e9] g#8 [g8,c#9] [f#8,c9] ~@2 f#8 ~ c#9 ~ g#8 ~@2 [d#8,g#8] d#8 ~ c9 ~@6 g#8 f8 e8 ~@5 b7@7 ~@3, e9@4 b8@4 [g8,c#9]@4 [d#8,g#8,e9]@3 b8 [b7,c9]@3 g8 [c#8,d8,c#9]@3 d#8 [a8,d#9,e9]@3 [f8,f#8,c9] b8@2 [f8,f#8] d#8 g8 [c#8,c9]@3 f8 g#8@3 c9 b8@3 g#8 d8@3 d#8 e8@4 c8@7 ~@4, ~ d#9@4 a#8@4 [f#8,c9]@4 [d8,g8,d#9]@3 a#8 [a7,a#7]@4 f8 [b7,f#8,b8]@3 [g#8,d9]@3 [b7,e8] [a#7,a#8]@4 f#8 [c8,a#8,b8]@3 e8 [g8,c#9]@3 [b7,e8] [a#8,c9]@4 f#8 [b7,g8,g#8]@4 d8@7 ~@6, ~@2 [c#9,d9]@4 a8@4 [f8,b8]@4 [c#8,d9]@3 [f8,f#8,a8,b8] [e8,a#8]@2 g#8@2 e8 [a#7,f8,a#8]@3 [d8,g8,c#9]@3 [d#8,c9] [a7,b7,e8,a8]@4 [f8,g8,g#8] [b7,a8]@3 d#8 [d8,f#8]@3 d#8 [e8,a8]@5 [f8,f#8]@4 c#8@7 ~@5, ~@3 c9@4 g#8@4 [e8,a8,a#8]@3 f#8 [c8,c#9]@3 g#8 [d#8,a8] f#8 [c8,g8,c9]@3 e8 d#8@2 [c8,c#8]@4 g#8 [d8,c#9]@3 [e8,f#8] a#7@4 [c8,c#8,f8]@3 b7 d#8 g8 [c8,c#8]@4 d#8@7 ~@7]/2", // A5 Gdim F#dim G#5 Gdim Emaj7 Cmaj7 Dmaj7 …
})).s("gm_glockenspiel").gain(0.1)

// drums · kick
const kick = s("bd").struct("<~@27 A B A B C D A B A B C D A E A B A B A B@4 F G H B H I J B@3 ~@14>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@3 x", D: "x!2", E: "x ~@6 x", F: "x ~@2 x ~@2 x!2 ~@2 x ~@3 x ~",
  G: "x ~@2 x!2 ~@2 x", H: "x ~@5 x ~ x ~@4 x!2 ~", I: "x ~@2 x ~@2 x ~@3 x ~@5", J: "x ~@5 x ~ x ~@2 x ~@4",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@51 [~ x ~ x]!3 [~ x ~@2] [~ x ~ x]!4 [~ x ~@2] ~@14>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@50 [~@7 x] ~@3 [~@3 x] ~@4 [~@6 x!2] ~@14>").gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<~@39 A B C D E F G H I J I K L@8 M ~@14>".pickRestart({
  A: "x!2 ~ x ~ x ~@2", B: "x!2 ~ x ~@3 x", C: "x!2 ~ x ~ x ~ x", D: "x!2 ~ x ~ x!3", E: "x!4 ~ x ~ x",
  F: "~@2 x!4 ~ x", G: "x!2 ~ x ~@4", H: "x!2 ~ x!2 ~@2 x", I: "x!2 ~ x!3 ~ x", J: "x!2 ~ x!5",
  K: "x ~ x ~@3 x ~ x ~ x ~@3 x!2", L: "x!8", M: "x!7 ~",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@50 [~@5 x!2 ~] ~@8 [~@5 x ~@2] ~@14>").gain(0.36)

// drums · open hat
const open_hat = s("oh").struct("<~@39 A@2 B A C@2 B@3 A B@2 D@2 ~ A ~@19>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@3 x", D: "~@7 x",
})).gain(0.12)

// drums · crash
const crash = s("cr").struct("<~@51 A ~@2 B A C A D E ~@14>".pickRestart({
  A: "x", B: "~@13 x!2 ~", C: "x ~@12 x ~@2", D: "x!4", E: "x!2 ~@2",
})).gain(0.28)

// drums · shaker
const shaker = s("sh").struct("<~@27 [~ x!3 ~@4]!4 [~@2 x ~ x ~ x!2 ~@8]!2 [~ x!3 ~@4]!4 [~@2 x ~ x ~ x!2 ~@8]!2 ~@35>")
  .gain(0.2)

stack(
  piano, piano_soft, bass, string_ensemble_2, glockenspiel, kick, snare, low_tom, hihat, mid_tom, open_hat, crash,
  shaker
)

More by Babyface