Strudelify
Make Me Smile cover art

1970

Make Me Smile

Chicago

KeyE♭ majorTempo120 bpm
0:00/0:00
// Make Me Smile — Chicago
// 120 bpm, 4/4, key Eb major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 40 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(120/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~ A B C D E F C D E G H I J K L M L M L M L M N O P Q C D E F C D E G H I J K L M L M L M L M N O R S T@2 U@2 V@2 W@2
  X@2 Y@2 X@2 Z@2 AA@2 AB AC L M L M L M L M N O AD AE ~@3 AF AG ~@2 AH AI@2 AJ
>`.pickRestart({
  A: "gb3@3 ~@13", B: "gb3@2 ~@2 gb3@3 ~@9", C: "bb2@2 bb2@3 ~ f2@2 bb2 ~ bb2@4 ab2 ~",
  D: "gb2 ~ gb2@3 ~ gb2 ~ gb2@2 ab2@2 bb2@2 c3@2", E: "db3 ~ db3@4 ab2@2 db3@2 eb3@2 db3@2 b2@2",
  F: "c3@2 c3@3 ~ c3@2 f2 ~ f2@2 a2@2 c3@2", G: "c3@2 c3@3 ~ c3@2 f3@2 f3@3 ~ f3@2",
  H: "bb2 ~ bb2@3 ~ bb2@2 c3 ~ c3@3 ~ c3 ~", I: "db3 ~ db3@3 ~ db3 ~ eb3 ~ eb3@3 ~ eb3 ~",
  J: "f3 ~ f3@3 ~ f3 ~ f3@2 c3@2 a2@2 c3@2", K: "f2 ~ f2@4 a2@2 c3@2 f2@2 f3@4",
  L: "db3 ~ db3@2 ~@4 db3 ~ db3@2 ~@2 db3 ~", M: "b2 ~ b2@2 ~@4 gb2 ~ gb2@4 ~@2", N: "db3@3 ~ c3@3 ~ bb2@3 ~ db3@3 ~",
  O: "ab2@2 c3@2 eb3@2 ab2 ~ ab3@2 gb3@2 f3@2 ab3@2", P: "gb3 db3 bb2 db3 gb2 bb2 db3 bb2",
  Q: "gb2@3 ~ gb2@3 ~ gb2@3 ~ gb2@3 ~", R: "gb3@2 db3@2 bb2@3 ~ db3@2 gb2@2 bb2@2 db3@2",
  S: "a3@4 a3@3 ~ a3@4 g3@2 e3@2", T: "[d3@6 a3@2 d4@2 a3@2 ab3@2 g3@4 g3@4 g3 ~ g3@2 g3@4 a3@2]/2",
  U: "[d3@6 a3@2 d4@4 a3@2 g3@4 d3 ~ g2@6 b2@2 c3@2 db3@2]/2", V: "[d3@6 a3@2 d4@4 a3@2 g3@4 d3 ~ g2@6 g3@4 c3@2]/2",
  W: "[d3@6 a3@2 d4@4 a3@2 g3@4 d3 ~ g2@4 g3@2 b2@2 c3@2 db3@2]/2",
  X: "[d3@6 a3@2 d4@2 e4@2 a3@2 g3@4 d3 ~ g2@4 g3@2 b2@4 c3@2]/2", Y: "[d3@3 a3 d4 e4 a3 g3@2 d3 f3 gb3 g3 d3 g3 c3]/2",
  Z: "[d3@3 a3 d4 e4 a3 g3@2 g3@2 g3@2 c3 d3 e3]/2",
  AA: "[f2 ~ bb2 ~ c3@5 ~ f2 ~ bb2 ~ c3@4 f2 ~ bb2 ~ c3@2 d3@2 eb3@2 f3@2 g3@2]/2", AB: "ab3@5 ~ ab3 ~ ab3@6 eb3@2",
  AC: "ab2@3 eb3 ab3 gb3 f3 eb3", AD: "gb3@4 bb2 b2 c3 db3", AE: "gb2 ~ gb2 ~@5", AF: "~@8 bb2 ~ bb2@2 ~@4", AG: "bb2",
  AH: "~@5 bb2 ~ bb2!3 ~ bb2!3 ~ bb2", AI: "bb2!2 ~ bb2!3 ~ bb2!3 ~ bb2!3 ~ bb2", AJ: "bb2 ~@7",
})).s("gm_acoustic_bass").gain(0.31)

// bass · acoustic bass · "Bass" · soft notes
const bass_soft = note("<~@88 [bb2!2 ~ bb2!3 ~ bb2!3 ~ bb2!3 ~ bb2]!2 [bb2!2 ~ bb2!2 ~@11] ~@3>")
  .s("gm_acoustic_bass").gain(0.1)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F C D E F G H I J K L K L K L K L M N O P C D E F C D E F G H I J K L K L K L K L M N Q R S T S T S T S T
  S T S T S T S T U@2 V W K L K L K L K L M N O X ~@3 Y Z@2 ~@4 AA
>`.pickRestart({
  A: "[db5,gb5,b5] ~@7", B: "[db5,gb5,b5] ~@3 [db5,gb5,b5] ~@11",
  C: "[bb4,db5,f5]@3 [bb4,db5,f5]!2 ~ [bb4,db5,f5]!2 [bb4,db5,f5]@2 ~ [bb4,db5,f5]!2 ~ [bb4,db5,f5]!2", // Bbm
  D: "[bb4,db5,gb5]@2 ~ [bb4,db5,gb5]!2 ~ [bb4,db5,gb5]!2 [bb4,db5,gb5]@3 [bb4,db5,gb5]!2 ~ [bb4,db5,gb5]!2", // Gb
  E: "[ab4,db5,f5]@2 ~ [ab4,db5,f5]!2 ~ [ab4,db5,f5]!2 [ab4,db5,f5]@2 ~ [ab4,db5,f5]!2 ~ [ab4,db5,f5]!2", // Db
  F: "[bb4,c5,eb5]@2 ~ [bb4,c5,eb5]!2 ~ [bb4,c5,eb5]!2 [f4,a4,c5]@2 ~ [f4,a4,c5]!2 ~ [f4,a4,c5]!2", // Cm7 F
  G: "[bb4,db5,f5]@2 ~ [bb4,db5,f5]!2 ~ [bb4,db5,f5]!2 [ab4,c5,eb5]@2 ~ [ab4,c5,eb5]!2 ~ [ab4,c5,eb5]!2", // Bbm Ab
  H: "[ab4,db5,f5]@2 ~ [ab4,db5,f5]!2 ~ [ab4,db5,f5]!2 [bb4,eb5,gb5]@2 ~ [bb4,eb5,gb5]!2 ~ [bb4,eb5,gb5]!2", // Db Ebm
  I: "[eb5,f5,bb5]@2 ~ [eb5,f5,bb5]!2 ~ [eb5,f5,bb5]!2 [eb5,f5,bb5]@2 ~ [eb5,f5,bb5]!2 ~ [eb5,f5,bb5]!2", // Ebsus2
  J: "[eb5,f5,a5]@2 ~ [eb5,f5,a5]!2 ~ [eb5,f5,a5]!2 [eb5,f5,a5]@2 ~ [eb5,f5,a5]!2 ~ [eb5,f5,a5]!2", // F7
  K: "[ab4,db5,f5]!2 ~@2 [ab4,db5,f5]!2 ~@2", L: "[gb4,b4,eb5]!2 ~@2 [gb4,bb4,db5]!2 ~@2",
  M: "[db5,f5,ab5]@3 ~ [db5,f5,ab5]@3 ~ [db5,f5,ab5]@3 ~ [db5,f5,ab5]@3 ~", // Db
  N: "[db5,eb5,ab5]@3 ~ [db5,eb5,ab5]@3 ~ [c5,eb5,ab5]@3 ~ [c5,eb5,ab5]@3 ~", // Dbsus2 Ab
  O: "[b4,db5,gb5]@3 ~ [b4,db5,gb5]@3 ~ [b4,db5,gb5]@3 ~ [b4,db5,gb5]@3 ~", // Bsus2
  P: "[b4,db5,gb5]@3 ~ [b4,db5,gb5]@3 ~ [b4,db5,gb5]@3 ~ [b4,db5,gb5]@2 ~@2", // Bsus2
  Q: "[bb4,db5,gb5]@3 ~ [bb4,db5,gb5]@3 ~ [bb4,db5,gb5]@3 ~ [bb4,db5,gb5]@3 ~", // Gb
  R: "[e4,ab4,db5]@3 ~ [e4,ab4,db5]@3 ~ [e4,ab4,db5]@3 ~ [e4,ab4,db5]@3 ~", S: "~@4 [f4,a4,d5]@2 ~@6 [f4,a4,d5] ~@3",
  T: "~@4 [f4,b4,d5] ~@7 [f4,b4,d5] ~@3", // Bdim
  U: "[f4 ~ bb4 ~ c5@5 ~ f4 ~ bb4 ~ c5@4 f4 ~ bb4 ~ c5@2 d5@2 eb5@2 f5@2 g5@2]/2",
  V: "[db5,eb5,ab5]@3 ~ [db5,eb5,ab5]@3 ~ [db5,eb5,ab5]@3 ~ [db5,eb5,ab5]@3 ~", // Dbsus2
  W: "[db5,eb5,ab5]@3 ~ [db5,eb5,ab5]@3 ~ [db5,eb5,ab5]@3 ~ [db5,eb5,ab5]@2 ~@2", // Dbsus2
  X: "[b4,db5,gb5]@3 ~ [b4,db5,gb5]@3 ~@9", Y: "~@8 [f4,bb4,d5] ~ [f4,bb4,d5]@2 ~@4", Z: "[[f4,bb4,d5]@5 ~@3]/2",
  AA: "[f4,bb4,d5] ~@7", // Bb
})).s("gm_acoustic_guitar_nylon").gain(0.15)

// chords · piano
const piano = note(`<
  ~ A B C D E F C D E F G H I J K L K L K L K L M N O@2 C D E F C D E F G H I J K L K L K L K L M N P Q R S R S R S R S
  R S R S R S R S ~@2 P@2 K L K L K L K L M N O T ~@3 U V@2 ~@4 W
>`.pickRestart({
  A: "[db4,gb4,b4]@3 ~@13", B: "[db4,gb4,b4] ~ [db4,gb4,b4] ~@5",
  C: "[bb2,f3,bb3,db4]@3 ~ [bb2,f3,bb3,db4]@3 ~ [bb2,f3,bb3,db4]@3 ~ [bb2,f3,bb3,db4]@3 ~", // Bbm
  D: "[gb2,gb3,bb3,db4]@3 ~ [gb2,gb3,bb3,db4]@3 ~ [gb2,gb3,bb3,db4]@3 ~ [gb2,gb3,bb3,db4]@3 ~", // Gb
  E: "[db2,f3,ab3,db4]@3 ~ [db2,f3,ab3,db4]@3 ~ [db2,f3,ab3,db4]@3 ~ [db2,f3,ab3,db4]@3 ~", // Db
  F: "[c3,bb3,c4,eb4]@3 ~ [c3,bb3,c4,eb4]@3 ~ [f2,a3,c4,eb4]@3 ~ [f2,a3,c4,eb4]@3 ~", // Cm7 F7
  G: "[bb2,f3,bb3,db4]@3 ~ [bb2,f3,bb3,db4]@3 ~ [c3,eb3,ab3,c4]@3 ~ [c3,eb3,ab3,c4]@3 ~", // Bbm Ab
  H: "[db3,f3,ab3,db4]@3 ~ [db3,f3,ab3,db4]@4 [eb3,gb3,bb3,eb4]@3 ~ [eb3,gb3,bb3,eb4]@3 ~", // Db Ebm
  I: "[f2,bb3,eb4,f4]@3 ~ [f2,bb3,eb4,f4]@3 ~ [f2,bb3,eb4,f4]@3 ~ [f2,bb3,eb4,f4]@3 ~", // Ebsus2
  J: "[f2,a3,eb4,f4]@3 ~ [f2,a3,eb4,f4]@3 ~ [f2,a3,eb4,f4]@3 ~ [f2,a3,eb4,f4]@2 ~@2", // F7
  K: "~@2 [gb4,ab4,db5] ~@2 [f4,ab4,db5] ~@2", L: "~@2 [eb4,gb4,b4] ~@2 [db4,gb4,bb4] ~@2",
  M: "[ab3,db4,f4]@3 ~ [ab3,db4,f4]@3 ~ [ab3,db4,f4]@3 ~ [ab3,db4,f4]@3 ~", // Db
  N: "[ab3,db4,eb4]@3 ~ [ab3,db4,eb4]@3 ~ [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~", // Absus4 Ab
  O: "[gb3,b3,db4]@3 ~ [gb3,b3,db4]@3 ~ [gb3,b3,db4]@3 ~ [gb3,b3,db4]@3 ~", // Gbsus4
  P: "[bb3,db4,gb4]@3 ~ [bb3,db4,gb4]@3 ~ [bb3,db4,gb4]@3 ~ [bb3,db4,gb4]@3 ~", // Gb
  Q: "[e3,ab3,db4]@3 ~ [e3,ab3,db4]@3 ~ [e3,ab3,db4]@3 ~ [e3,ab3,db4]@3 ~", // Dbm
  R: "[f3,a3,c4,d4]@3 ~ [f3,a3,c4,d4]@3 ~ [f3,a3,c4,d4]@3 ~ [f3,a3,c4,d4]@3 ~", // Dm7
  S: "[f3,b3,d4]@3 ~ [f3,b3,d4]@3 ~ [f3,b3,e4]@3 ~ [f3,b3,d4]@3 ~", T: "[gb3,b3,db4]@3 ~ [gb3,b3,db4]@3 ~@9",
  U: "~@8 [bb1,bb2] ~ bb1@2 ~@4, ~@10 bb2 ~@5", V: "[[bb1,bb2]@21 ~@11]/2", W: "[bb1,bb2] ~@7",
})).s("gm_piano").gain(0.31)

// other · trumpet
const trumpet = note(`<
  ~ A B ~@12 C@8 D@2 E@2 F G F H I G F H J K L M C@8 D@2 N O P@2 Q@2 R S T@2 U V@2 W X@4 Y Z AA@2 C@8 D@2 AB B ~@3 AC
  AD@6 AE
>`.pickRestart({
  A: "b4 ~@7", B: "b4 ~ b4 ~@5", C: "~@2 db5 ~@2 db5 ~@2", D: "[~@2 f5 eb5 db5 c5 bb4 ab4@9]/2",
  E: "[~@8 gb4@13 ~ gb4 ab4 bb4 ~ c5 ~ db5 ~ eb5 ~]/2", F: "f5@13 ~@3", G: "bb4@12 ~@2 db5 eb5", H: "eb5@3 ~ c5@3 ~",
  I: "bb4@3 ~", J: "bb4@3 ~ ab4@3 ~", K: "ab4@3 ~ gb4@3 ~", L: "~@2 f4 bb4 c5@3 ~ f4 bb4 c5@5 ~, ~@4 bb4 ~@11",
  M: "~@2 f4 a4 c5@3 ~ f4 a4 c5@4 ~@2", N: "~@8 bb4@6 b4 bb4", O: "ab4@13 ~@3",
  P: "[a4@6 ~@2 a4@4 c5@2 b4@14 ~@2 a4 g4]/2", Q: "[a4@3 ~ e5@2 c5 b4@7 ~@2]/2", R: "d4@4 f4@4 a4@4 c5@3 ~",
  S: "e5 d5 ~ c5 b4@4 a4@4 g4@4", T: "[a4@4 f4@4 d4@4 c4@2 b3@10 ~@4 d4 e4 f4 g4]/2", U: "a4@3 ~ c5@2 a4@4 c5@2 ~@4",
  V: "[~@4 g5@2 ~@2 e5@2 d5@2 c5@2 d5@6 ~@2 c5 b4 c5@4 ~@2 b4 a4]/2", W: "b4@4 ~@4 f4 e4 f4 g4 a4 g4 a4 b4",
  X: "[c5 b4 a4 b4 c5@5 ~ e5 ~ e5 ~ c5 d5@3 g5 ~@3 d5 d5@3 g5 ~ f5 e5 d5 c5@3 d5 ~ e5 ~ f5 e5@3 d5 c5 d5 c5 b4 c5@3 b4 a4 b4 a4 g4 a4@3 g4 f4 g4 f4 e4 f4]/4",
  Y: "~@2 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", Z: "c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", AA: "[ab4@15 ~]/2",
  AB: "b4@15 ~", AC: "~@12 bb4 ~ bb4 ~", AD: "[bb4@95 ~]/6", AE: "bb4 ~@7",
})).s("gm_trumpet").gain(0.51)

// other · alto sax · "Sax"
const alto_sax = note(`<
  ~ A B ~@12 C D C D C D C D E@2 F@2 G H G I G H G I J K ~@2 C D C D C D C D E@2 L M N@2 O@2 P Q R@2 S T@2 U V@4 W X Y@2
  C D C D C D C D E@2 Z B ~@3 AA AB@6 AC
>`.pickRestart({
  A: "gb4 ~@7", B: "gb4 ~ gb4 ~@5", C: "~@2 ab4 ~@2 ab4 ~@2", D: "~@2 gb4 ~@2 gb4 ~@2",
  E: "[~@2 f4 eb4 db4 c4 bb3 eb4@9]/2", F: "[~@8 gb3@13 ~ gb3 ab3 bb3 ~ c4 ~ db4 ~ eb4 ~]/2", G: "f4@13 ~@3",
  H: "gb4@12 ~@2 db4 eb4", I: "eb4@3 ~ c4@3 ~", J: "db4@6 ~@2 c4@7 ~", K: "db4@3 ~ eb4@3 ~", L: "~@8 db4@6 eb4 db4",
  M: "db4@3 ~", N: "[a3@6 ~@2 a3@4 c4@2 b3@14 ~@2 a3 g3]/2", O: "[a3@3 ~ e4@2 c4 b3@7 ~@2]/2",
  P: "d3@4 f3@4 a3@4 c4@3 ~", Q: "e4 d4 ~ c4 b3@4 a3@4 g3@4", R: "[a3@4 f3@4 d3@4 c3@2 b2@10 ~@4 a3 b3 c4 d4]/2",
  S: "e4@4 g4@2 e4@4 g4 ~@5", T: "[~@4 g4@2 ~@2 e4@2 d4@2 c4@2 d4@6 ~@2 c4 b3 c4@4 ~@2 b3 a3]/2",
  U: "b3@4 ~@4 c4 b3 c4 d4 e4 d4 e4 d4",
  V: "[c4 b3 a3 b3 c4@5 ~ e4 ~ e4 ~ c4 d4@3 g4 ~@3 d4 d4@3 g4 ~ f4 e4 d4 a4@2 ~ b4 ~ c5 ~ d5 c5@3 b4 a4 b4 a4 g4 a4@3 g4 f4 g4 f4 e4 f4@3 e4 d4 e4 d4 c4 d4]/4",
  W: "~@2 g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~", X: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~", Y: "[ab3@15 ~]/2",
  Z: "gb4@15 ~", AA: "~@12 f4 ~ f4 ~", AB: "bb3/6", AC: "bb3 ~@15",
})).s("gm_alto_sax").gain(0.37)

// other · trombone
const trombone = note(`<
  ~ A B ~@12 C D C D C D C D E@2 F@2 G H G I J H G I K L M N C D C D C D C D E@2 O P Q@2 R@2 S T U@2 V W@2 X Y@4 Z AA
  AB@2 C D C D C D C D E@2 AC B ~@3 AD AE@6 AF
>`.pickRestart({
  A: "db4 ~@7", B: "db4 ~ db4 ~@5", C: "~@2 gb4 ~@2 f4 ~@2", D: "~@2 eb4 ~@2 db4 ~@2",
  E: "[~@2 f4 eb4 db4 c4 bb3 db4@9]/2", F: "[~@8 gb3@13 ~ gb3 ab3 bb3 ~ c4 ~ db4 ~ eb4 ~]/2", G: "f4@13 ~@3",
  H: "db4@12 ~@2 db4 eb4", I: "eb4@3 ~ c4@3 ~", J: "db4@3 ~", K: "db4@3 ~ ab3@3 ~", L: "db4@7 ~ eb4@5 ~@3",
  M: "~@2 f3 bb3 c4@3 ~ f3 bb3 c4@5 ~", N: "~@2 f3 a3 c4@3 ~ f3 a3 c4@3 ~@3", O: "~@8 gb3@6 ab3 gb3", P: "e3@3 ~",
  Q: "[a3@6 ~@2 a3@4 c4@2 b3@14 ~@2 a3 g3]/2", R: "[a3@3 ~ e4@2 c4 b3@7 ~@2]/2", S: "d3@4 f3@4 a3@4 c4@3 ~",
  T: "e4 d4 ~ c4 b3@4 a3@4 g3@4", U: "[a3@4 f3@4 d3@4 c3@2 b2@10 ~@4 f3 g3 a3 b3]/2", V: "c4@2 e4 c4@2 e4 ~@2",
  W: "[~@4 g4@2 ~@2 e4@2 d4@2 c4@2 d4@6 ~@2 c4 b3 c4@4 ~@2 b3 a3]/2", X: "b3@4 ~@4 a3 ab3 a3 b3 c4 b3 c4 b3",
  Y: "[c4 b3 a3 b3 c4@4 ~@2 e4 ~ e4 ~ c4 d4@3 g4 ~@3 d4 d4@3 g4 ~ f4 e4 d4 e4@3 f4 ~ g4 ~ a4 g4@3 f4 e4 f4 e4 d4 e4@3 d4 c4 d4 c4 b3 c4@3 b3 a3 b3 a3 g3 a3]/4",
  Z: "~@2 f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~", AA: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~", AB: "[ab2@15 ~]/2",
  AC: "db4@15 ~", AD: "~@12 d4 ~ d4 ~", AE: "[bb3@95 ~]/6", AF: "bb3 ~@15",
})).s("gm_trombone").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 B@8 A@4 C@8 D@3 A B@7 A@5 C@8 D@3 A D@3 B@13 A@4 C@8 D@3 E ~@2 F G H ~@5 H
>`.pickRestart({
  A: "x!8", B: "x!2 ~ x!3 ~ x", C: "x!2 ~ x!3 ~@2", D: "~ x ~ x ~ x ~ x", E: "~ x ~ x ~@4", F: "~@4 x!4", G: "x!6 ~@2",
  H: "x",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B C@4 D@4 E@3 F G@8 H@3 I C@7 J K L H F G@8 H@2 K M H@3 N C@7 O C@3 P Q@2 R S G@8 H@2 K T U V W X ~@7
>`.pickRestart({
  A: "x ~@2 x!2 ~ x ~ x ~@4 x!3", B: "~@4 x ~@2 x ~ x!7", C: "~ x ~ x", D: "~@4 x ~@2 x ~@4 x ~@3",
  E: "x ~@3 x ~@2 x ~@4 x ~@3", F: "~@4 x ~@2 x ~@4 x!4", G: "~@4 x ~ x!3 ~@3 x!2 ~@2", H: "x!4", I: "x ~@2 x!10 ~ x ~",
  J: "~@2 x ~ x ~@5 x ~@2 x!3", K: "x ~@3 x ~@3 x ~@3 x ~@2 x", L: "~ x!3", M: "x!5 ~@11", N: "x!2 ~ x",
  O: "~@4 x ~@7 x!3 ~", P: "x ~@2 x!2 ~@11", Q: "x!8", R: "x ~ x!3 ~@4 x ~ x ~ x!3", S: "x!4 ~@12",
  T: "x ~@3 x ~@5 x ~@2 x!2 ~", U: "~@3 x!2 ~@4 x!4 ~@2 x", V: "x!2 ~ x ~ x!3 ~@2 x ~@2 x ~@2", W: "x ~@2 x ~@5 x!7",
  X: "x!8 ~@4 x ~ x ~",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct("<~@50 A ~@19 B ~@14 C ~@3 D@4 E>".pickRestart({
  A: "~@7 x", B: "~@12 x!4", C: "~@2 x!2 ~@4", D: "x!16", E: "x",
})).gain(0.36)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A ~@2 A@12 ~@8 A@3 B A@12 ~@8 A@3 B A@16 ~@12 A@3 ~@12>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~@48 B ~@15 C ~@3 D ~@12 E F G ~@8>".pickRestart({
  A: "~@3 x", B: "~@12 x!2 ~@2", C: "~@12 x!3 ~", D: "~@8 x!4 ~@4", E: "x", F: "~@14 x!2", G: "~ x!2 ~@5 x ~@7",
})).gain(0.46)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~ A B ~@12 C@8 ~@11 D ~@4 C@8 ~@3 E ~@11 F ~@3 G ~@2 H I C@8 ~@3 B J K ~@9
>`.pickRestart({
  A: "~@9 x ~ x ~@4", B: "~ x", C: "~@7 x", D: "~@3 x!2 ~ x ~", E: "~@3 x!3 ~@2", F: "~@4 x!2 ~@2",
  G: "~@6 x ~ x!3 ~@5", H: "~@3 x!2 ~@3", I: "~@4 x!4 ~@8", J: "~@4 x ~@2 x", K: "~@8 x!2 ~ x!2 ~@3",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct("<~ A B ~@12 C@8 ~@4 A ~@7 A@4 C@8 ~@16 A ~@3 A ~ A ~ C@8 A@2 ~@13>".pickRestart({
  A: "x", B: "~ x ~@2", C: "~@2 x ~@2 x ~@2",
})).gain(0.51)

stack(
  bass, bass_soft, acoustic_guitar_nylon, piano, trumpet, alto_sax, trombone, kick, snare, low_tom, pedal_hat, mid_tom,
  high_tom, crash
)

More by Chicago