Strudelify
If You Leave Me Now cover art

Chicago X

If You Leave Me Now

Chicago

KeyB majorTempo103 bpm
0:00/0:00
// If You Leave Me Now — Chicago
// 103 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 11, 4/4 at bar 12, 2/4 at bar 19, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R I S T U@4 V W X Y Z@4 V W X AA AB AC AD@2 AE M N O P Q AF I J K AG@4 V W X Y Z@4 V
  W X AA AB AC AD@2 AE M N O P Q E I AH AI AJ Q AF I AH AI AJ Q AF I AH AI AJ Q AF I AH AI AK
>`.pickRestart({
  A: "b1 ~ b1 ~ b1 ~ b1 ~@3 b1@2 ~@2 b1@2", B: "~@2 b1@2 ~@2 b1 ~ b1@5 ~ f#1@2",
  C: "b1 ~ b1 ~ b1 ~ b1 ~@3 b1@2 ~@2 b1 ~", D: "b1@6 ~ f#1", E: "b1@4 ~@2 b1 ~ b1@5 ~ b1@2",
  F: "g#2@5 ~ g#2 ~ g#2@4 c#2@2 d2@2", G: "d#2@5 ~ d#2 ~ d#2@5 ~@3", H: "d#2@4 ~@2 d#2 ~ d#2 ~ d#2@3 ~ d#2 ~",
  I: "g#2@5 ~ g#2@2 c#2@4 ~@2 c#2@2", J: "f#2@5 ~ f#2 ~ b1@5 ~ b1 ~", K: "b1 ~ f#2@3 ~ b1@6 ~@2 b1 ~",
  L: "b1@6 f#1 ~ b1@4 ~@2 b1 ~", M: "b1@5 ~ b1@2 g#2@5 ~ g#2 ~", N: "g#2@4 c#2@2 d2@2 d#2@5 ~ d#2 ~",
  O: "d#2@5 ~@3 d#2@4 ~@2 d#2 ~", P: "d#2 ~ d#2@3 ~ d#2 ~ g#2@5 ~ g#2@2", Q: "c#2@4 ~@2 c#2@2 f#2@5 ~ f#2 ~",
  R: "b1@6 ~ b1!2 ~ b1@2 f#2@2 g2 ~", S: "f#2@4 ~@2 f#2@2 b1@5 b1!2 ~", T: "b1@2 f#2@5 ~ b1@6 f#2@2",
  U: "[b2 ~ f#2@2 b1@2 f#2 ~ e2@5 ~ e2@6 b1 ~ e1 ~ e1@10 ~@4 c2 ~ e2 ~ e2@8 ~@2 b1@2 e1 ~ e1 ~@5 b1@2, ~@29 e1@3]/4",
  V: "e2 ~ e2@2 ~ e1 ~@2 g#2@5 ~ d#2@2, ~@2 b1 ~@5", W: "g#2 ~ g#2@2 g#1@2 d#2@2 e2@4 e1@2 f1@2",
  X: "f#1 ~ f#1@2 f#2@2 c#2@2 b1@5 ~ b1 ~", Y: "b1 ~@3 b2@2 f#2 ~ a#2@5 ~ e2@2, ~ b1@2 ~@5",
  Z: "[~@2 d#2@3 ~ d#2 ~ e2@5 ~ e2@6 b1 ~ e1 ~ e1@10 ~@4 c2 ~ e2 ~ e2@8 ~@2 b1@2 e1 ~ e1 ~@5 b1@2, ~@29 e1@3]/4",
  AA: "b1 ~@3 b2@2 f#2 ~ d#2@5 ~ d#2@2, ~ b1@2 ~@5", AB: "f#2@4 g2@3 ~ g#2@5 ~ d#2@2",
  AC: "b1@4 ~@2 c2@2 c#2@5 ~ c#2 ~", AD: "[c#2 ~ c#2@3 ~ d#2 ~ e2@6 g2@6 b2@6 d3@4 e3@2]/2",
  AE: "f#3@4 f#2 ~ f#2@2 b1@4 ~@2 b1 ~", AF: "b1@4 ~@2 b1 ~ b1@5 ~@3",
  AG: "[b1@3 ~@3 f#1 ~ e2@5 ~ e2@6 b1 ~ e1 ~ e1@10 ~@4 c2 ~ e2 ~ e2@8 ~@2 b1@2 e1 ~ e1 ~@5 b1@2, ~@29 e1@3]/4",
  AH: "f#2@5 ~ f#2 ~ b1 ~ b1 ~ b1 ~ b1 ~", AI: "~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~", AJ: "b1@5 ~ f#1@2 g#2@5 ~ g#2@2",
  AK: "b1@5 ~@11",
})).s("gm_acoustic_bass").gain(0.44)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B A C D E F@2 G H I@2 J K L M N O P Q R S@6 T@2 U@6 V@7 J K L M N D G H W@7 T@2 U@6 V@7 J K L M N D G X Y Z N D G X
  Y Z N D G X Y Z N D G X Y AA
>`.pickRestart({
  A: "[f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,a#3,c#4] ~ [f#3,b3,d#4] ~@3 [f#3,a#3,c#4] ~@3 [f#3,b3,d#4] ~", // B F# B F# B
  B: "~@2 [f#3,a#3,c#4] ~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4]@7 ~", C: "[f#3,b3,d#4]@15 ~",
  D: "b2@4 [f#3,a#3,d#4]@2 b2 ~@3 [f#3,a#3,d#4]@4 [f#3,a#3,d#4]@2, ~@4 b2@3 ~", // D#m
  E: "g#2@4 [f#3,b3,d#4]@2 g#2 ~@3 [f#3,b3,d#4]@4 [f#3,b3,d#4]@2, ~@4 g#2@3 ~", // B
  F: "d#3@4 [c#4,f#4,a#4]@2 d#3 ~@3 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2, ~@4 d#3@3 ~", // F#
  G: "~@4 [b3,d#4]@3 ~@5 [c#4,f4]@2 ~@2, g#2@3 ~ c#3@3 ~, ~@2 f#3@4 ~@4 g#3@5 ~", // B C#
  H: "~@4 [a#3,c#4]@4 b2@3 ~ [f#3,b3,d#4]@4, f#2 ~, ~ f#3@3 ~@4", // A#m B
  I: "[~@2 [f#2,f#3,a#3,c#4]@3 ~ [b2,f#3,b3,d#4]@17 ~ b2@4 [f#3,a#3,d#4]@2 b2 ~]/2", // F# B D#m
  J: "~@2 [f#3,a#3,d#4]@4 [f#3,a#3,d#4]@2 g#2@4 [f#3,b3,d#4]@2 g#2 ~, b2@3 ~@5", // D#m B
  K: "~@2 [f#3,b3,d#4]@4 [f#3,b3,d#4]@2 d#3@4 [c#4,f#4,a#4]@2 d#3 ~, g#2@3 ~@5", // B F#
  L: "~@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 d#3@4 [c#4,f#4,a#4]@2 d#3 ~, d#3@3 ~@5", // F#
  M: "~@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 ~@4 [b3,d#4]@3 ~, d#3@3 ~ g#2@3 ~, ~@5 f#3@2 ~", // F# B
  N: "~@2 [c#4,f4] ~@3 [a#3,c#4]@2, c#3@3 ~ f#2@4, ~@2 g#3@5 ~@3 f#3@6", // C# A#m
  O: "b2@4 [b3,d#4]@2 b2 ~@3 f#3 ~ [b3,d#4]@2 [b2,f#3]@2, ~@8 b2@5 ~@3", // B B5
  P: "~@2 f#3@2 [b3,d#4]@2 [g#2,f#3] ~@3 g#3@2 [c#4,f4]@2 [c#3,g#3] ~, g#2@4 ~@4 c#3@5 ~@3", // B G#7 C# C#5
  Q: "~@2 f#3@2 [a#3,c#4]@2 [f#2,f#3] ~@3 f#3@2 b3 ~ [f#3,b3,d#4] ~, f#2@5 ~@3 b2@7 ~", // A#m F# B
  R: "b2 [f#3,a#3,c#4] b2 ~ b2@2 f#3 [b2,b3], ~@3 d#4@5, ~@3 b3@3 ~@2, ~@3 f#3@2 ~@3", // F# B
  S: "[~@4 f#3@2 [b2,b3] ~@5 [d4,f#4]@2 g#3@2 ~@2 g#3@2 b2@2 g#3@2 ~@2 g#3@2 [d4,f#4] ~ b2@2 ~@4 b2@2 g#3@2 ~@4 [e4,a4]@2 ~@4 a3@2 b2@2 a3 ~@3 g#3@2 [e4,g#4] ~@5 g#3@2 [b2,g#3]@2 [e3,g#3]@2 ~@4 [b3,d#4,f#4]@2 d#3 ~@3 g#3@2 g#2@2 [d#3,g#3]@2 ~@2 g#3@2 ~@2 g#3@2, b2@5 ~@3 e2@13 ~@3 e2@14 ~@2 e2@13 ~@3 e2@14 ~@2 g#2@12 ~@4 e2@7 ~, ~@2 d#3@4 ~@4 g#3@4 [b2,d4,f#4]@5 ~@3 e3@7 ~@3 e3@6 e3@8 [b2,e4,a4]@7 ~@9 [b2,e4]@6 e4@4 ~@8 d#3@4 ~@12, ~@16 e3@4 [d4,f#4]@4 ~@6 [d4,f#4]@6 [d4,f#4]@4 ~@8 e3@5 ~ e3@7 ~ g#3@2 e3@6 ~@4 g#3@4 [b3,f#4]@6 [b3,d#4]@4 ~@4 [b3,e4]@4, ~@17 g#3@2 ~@2 a3@2 a3@2 ~ [c4,e4]@2 ~@3 g#4@4 ~@13]/6", // B D A5 E B G#5 Bm Esus4 …
  T: "[~@2 a#3@2 [c#4,f#4]@2 [f#2,a#3]@2 ~@4 d#4@2 b2 ~@5 [b2,b3,d#4]@2 [b2,f#3] ~@3 f3@2 [g#3,d#4]@2 a#2@2, f#2@5 ~@3 b2@6 d#4@6 ~@12, ~@10 b3@4 f#4@9 ~@9, ~@4 b2 ~ a#2 ~, ~@9 f#3@2 ~@5]/2", // F#5 F# B B5 G#5
  U: "[~@2 g3@2 [a#3,d#4]@2 d#2 ~@5 [d4,f#4]@2 g#3@2 ~@2 g#3@2 b2@2 g#3@2 ~@2 g#3@2 [d4,f#4] ~ b2@2 ~@4 b2@2 g#3@2 ~@4 [e4,a4]@2 ~@4 a3@2 b2@2 a3 ~@3 g#3@2 [e4,g#4] ~@5 g#3@2 [b2,g#3]@2 [e3,g#3]@2 ~@4 [b3,d#4,f#4]@2 d#3 ~@3 g#3@2 g#2@2 [d#3,g#3]@2 ~@2 g#3@2 ~@2 g#3@2, d#2@5 ~@3 e2@13 ~@3 e2@14 ~@2 e2@13 ~@3 e2@14 ~@2 g#2@12 ~@4 e2@7 ~, ~@10 g#3@4 [b2,d4,f#4]@5 ~@3 e3@7 ~@3 e3@6 e3@8 [b2,e4,a4]@7 ~@9 [b2,e4]@6 e4@4 ~@8 d#3@4 ~@12, ~@16 e3@4 [d4,f#4]@4 ~@6 [d4,f#4]@6 [d4,f#4]@4 ~@8 e3@5 ~ e3@7 ~ g#3@2 e3@6 ~@4 g#3@4 [b3,f#4]@6 [b3,d#4]@4 ~@4 [b3,e4]@4, ~@17 g#3@2 ~@2 a3@2 a3@2 ~ [c4,e4]@2 ~@3 g#4@4 ~@13]/6", // D#5 D A5 E B G#5 Bm Esus4 …
  V: "[~@2 a#3@2 [c#4,f#4]@2 [f#2,a#3]@2 ~@4 d#4@2 b2 ~@5 [b2,b3,d#4]@2 [b2,f#3] ~@7 d#3 ~@7 g#2 ~@7 g#2 ~@3 f#3@2 ~@2 f#3@2 ~@4 c#4@2 c#3 ~ c#3@2 ~@2 c#3@2 g#3@2 e4@6 b3@6 d4@16 ~@4 b2@4 [f#3,a#3,d#4]@2 b2 ~, f#2@5 ~@3 b2@6 d#4@6 ~@8 a#3@5 ~@11 b3@5 ~@3 b3@4 ~@2 g#3@7 ~ c#4@4 ~@14 g3@14 ~@14, ~@10 b3@4 f#4@9 ~@7 c#4@4 ~@2 d#4@4 ~@6 d#4@5 ~@11 e4@9 ~@41, ~@16 b2@4 ~@6 f#3@6 ~@2 f#3@5 ~@3 f#3@6 ~@8 c#3@4 ~@12 e3@31 ~@9, ~@9 f#3@2 ~ d#3@2 ~@2 d#3@3 ~ g#2@2 ~@2 g#2@3 ~@29]/7", // F#5 F# B B5 D#m
  W: "[~@2 [f#2,f#3,a#3,c#4]@3 ~ [b2,f#3,b3,d#4]@14 ~@8 [d4,f#4]@2 g#3@2 ~@2 g#3@2 b2@2 g#3@2 ~@2 g#3@2 [d4,f#4] ~ b2@2 ~@4 b2@2 g#3@2 ~@4 [e4,a4]@2 ~@4 a3@2 b2@2 a3 ~@3 g#3@2 [e4,g#4] ~@5 g#3@2 [b2,g#3]@2 [e3,g#3]@2 ~@4 [b3,d#4,f#4]@2 d#3 ~@3 g#3@2 g#2@2 [d#3,g#3]@2 ~@2 g#3@2 ~@2 g#3@2, ~@24 e2@13 ~@3 e2@14 ~@2 e2@13 ~@3 e2@14 ~@2 g#2@12 ~@4 e2@7 ~, ~@26 g#3@4 [b2,d4,f#4]@5 ~@3 e3@7 ~@3 e3@6 e3@8 [b2,e4,a4]@7 ~@9 [b2,e4]@6 e4@4 ~@8 d#3@4 ~@12, ~@32 e3@4 [d4,f#4]@4 ~@6 [d4,f#4]@6 [d4,f#4]@4 ~@8 e3@5 ~ e3@7 ~ g#3@2 e3@6 ~@4 g#3@4 [b3,f#4]@6 [b3,d#4]@4 ~@4 [b3,e4]@4, ~@25 g#3@2 ~@2 a3@2 a3@2 ~ [c4,e4]@2 ~@3 g#4@4 ~@13]/7", // F# B D A5 E B G#5 Bm …
  X: "~@4 [a#3,c#4]@4 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,a#3,c#4] ~ [f#3,b3,d#4] ~, f#2 ~, ~ f#3@3 ~@4", // A#m B F# B
  Y: "~@2 [f#3,a#3,c#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,a#3,c#4] ~@3 [f#3,b3,d#4] ~", // F# B F# B
  Z: "[f#3,b3,d#4]@7 ~@5 [b3,d#4]@3 ~, ~@4 g#2@3 ~, ~@5 f#3@2 ~", AA: "[f#3,b3,d#4]@7 ~@9",
})).s("gm_acoustic_guitar_nylon").gain(0.36).pan(0.3)

// chords · french horn · "FR.HORN"
const french_horn = note(`<
  A B C@2 ~@15 D E@2 ~@6 F G ~@9 H@2 I ~@7 J K@2 ~@6 F G ~@9 H@2 I ~@7 L M N ~@3 L M N ~@3 L M N ~@3 L M O
>`.pickRestart({
  A: "[b3,d#4] ~ [b3,d#4] ~ [a#3,c#4] ~ [b3,d#4] ~@3 [a#3,c#4] ~@3 [b3,d#4] ~", // B A#m B A#m B
  B: "~@2 [a#3,c#4] ~@3 [b3,d#4] ~ [b3,d#4]@4 f#3@4", C: "[f#4@31 ~]/2",
  D: "~@8 [b3,d#4] ~ [b3,d#4] ~ [a#3,c#4] ~ [b3,d#4] ~", E: "[~@2 [a#3,c#4] ~@3 [b3,d#4] ~ [b3,d#4]@14 ~@10]/2",
  F: "~@2 f#4@2 e4@2 d#4@3 ~ c#4@3 ~ d#4 e4", G: "d#4 ~", H: "[~@4 b4@3 a4@3 g4@3 f#4@2 e4]/2",
  I: "f#4@2 g4@2 [f#4,g4] f#4 e4@2 ~ d#4@7", J: "~ [b3,d#4]", K: "[~@2 [a#3,c#4] ~@3 [b3,d#4]@15 ~@11]/2",
  L: "~@8 [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [a#3,c#4,f#4] ~ [b3,d#4,f#4] ~", // B F# B
  M: "~@2 [a#3,c#4,f#4] ~@3 [b3,d#4,f#4] ~@3 [a#3,c#4,f#4] ~@3 [b3,d#4,f#4] ~", N: "[b3,d#4] ~@3, f#4@3 ~@5",
  O: "[d#4,f#4]@7 ~@9, b3@5 ~@11", // D#m
})).s("gm_french_horn").gain(0.4).pan(0.2)

// other · tinkle bell · "TINKLEBELL"
const tinkle_bell = note("<~ [~@3 f#7] ~@98>").s("gm_tinkle_bell").gain(0.25).pan(0.8)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@11 A@8 B@8 C@8 D@7 ~@6 E F@8 C@8 G@3 H@4 ~@3 I J@2 K L@3 M N O P@3 Q@2 R S@4 T R U@3
>`.pickRestart({
  A: "[~@8 a#3@16 b3@16 [a#3,c#4]@31 ~ [d#4,f#4]@8 f4@8 a#3@8 d#4@24 [c#4,f4]@8, ~@8 f#4@63 ~@9 c#4@16 b3@32, ~ d#4@4 ~@4 b3@2 f#4@4 ~]/8", // A#m D#m C#
  B: "[a#3@2 [b3,d#4]@7 ~ [g#3,f#4]@8 [c4,a4]@4 [b3,g#4]@4 [d#4,f#4]@4 [e4,g#4]@2, f#4@18 ~@2 d4@15 ~ e4@16 b3@12]/8", // B G#7 F E D#m E
  C: "[[c#4,a#4]@8 [d#4,b4]@16 [g#4,c#5]@8 [g4,d#5]@8 [f#4,b4]@32 [c4,a4]@16 [b3,g#4]@15 ~ [b3,d#4,f#4]@16 [e4,g#4,b4]@8, f#4@24 a#4@16 d4@30 ~@2 e4@31 ~@25]/8", // F# G#m C#5 Cm B5 F E B …
  D: "[[a#4,c#5]@8 [b4,d#5]@16 [f#4,a#4,c#5]@16 d#5@8 d#4@6 ~@2 [e4,g#4,c#5]@10 [f#4,a#4,d#5]@6 [g4,b4,f#5]@31 ~@9, f#4@24 ~@16 [g#4,b4]@15 ~@57]/7", // A#m B F# C#m D#m Gmaj7 G#m
  E: "[b3,f#4]@8 ~ f4@7, d#4@7 ~ [g#3,c#4]@8", // B5 C#5
  F: "[[a#3,c#4]@8 [b3,d#4]@32 [g#3,f#4]@32 [c4,a4]@16 [b3,g#4]@15 ~ [d#4,f#4]@16 [e4,g#4]@8, f#4@40 d4@30 ~@2 e4@31 ~ b3@24]/8", // A#m B G#7 F E D#m E
  G: "[[a#4,c#5] [b4,d#5]@2 [f#4,a#4,c#5]@2 [g#4,b4], f#4 ~]/3", // A#m B F# G#m
  H: "[[f#4,a#4]@4 [g#4,b4]@4 [e4,g#4,c#5]@10 [f#4,a#4,d#5]@6 [g4,b4,f#5]@31 ~@9]/4", I: "~ [b3,d#4,f#4]",
  J: "[[g#3,c#4,f4] [a#3,c#4] [b3,d#4]@2, ~ f#4@3]/2", K: "[b3,f#4] [g#3,c#4,f4], d#4@7 ~@9",
  L: "[[a#3,c#4]@8 [b3,d#4]@31 ~ [b3,d#4,f#4]@8, f#4@5 ~]/3", // A#m B
  M: "[g#3,c#4,f4]@8 [f#4,a#4]@3 [g#4,b4]@2 [a#4,c#5]@3, ~ c#4", N: "[f#4,b4,d#5]", O: "[b4,d#5]@8 [c#5,f5]@7 ~, g#5",
  P: "[a#5@3 ~ a#5@2 g#5@2 [b4,d#5,f#5]@32 b5@6 a#5@2, c#5 ~@4 [b3,d#4,f#4], f#5 ~@7]/3", // B
  Q: "[[g#3,c#4,f4,g#5]@4 a#5@2 g#5 f#5 [b3,d#4,d#5]@8, ~ f#4@3, ~ [a#3,c#4] ~@2]/2", // C# B A#m
  R: "[b3,f#4] [g#3,c#4,f4], g#5@15 ~, d#4@7 ~@9", // B5 C#
  S: "[a#5@2 ~ a#5@2 g#5@2 ~ [b3,d#4]@32 [b3,d#4,f#4]@8 [g#3,c#4,f4]@8 [f#4,a#4,a#5]@3 ~@3 g#5@2, f#4@5 ~@2 c#4, [a#3,c#4]@8 f#5@30 ~@2 g#5@15 ~@4 [g#4,b4]@2 [a#4,c#5]@3, ~@30 a#5 ~]/4", // B C# F# A#m G#m A#m
  T: "[f#4,b4,d#5,f#5]", U: "[a#5@2 ~ a#5@2 g#5@2 ~ [b3,d#4]@32 ~@8, f#4@5 ~, [a#3,c#4]@4 f#5@15 ~@5]/3",
})).s("gm_string_ensemble_2").gain(0.22).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@2 A B ~@29 C@2 ~ D E@2 ~@12 F@5 ~@3 G@4 H@2 I@2 E@2 ~@31>".pickRestart({
  A: "[f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,a#4,c#5] ~ [f#4,b4,d#5] ~@3 [f#4,a#4,c#5] ~@3 [f#4,b4,d#5] ~", // B F# B F# B
  B: "[f#4,b4,d#5]@15 ~", C: "[~ g#4 e4 b3 g#3@6 ~@6]/2", D: "~@5 d#3 f#3 g#3", E: "[a#3 c#4@3 b3@8 ~@4]/2",
  F: "[~@2 [e4,f#4,e5,f#5]@2 ~@2 d5 ~ f#6@26 g6@6 a6@16 g#6@16 ~@8, ~@2 [g#4,g#5] d6 ~@36, ~@5 [a4,b4,a5,b5]@2 [e5,e6]@2 ~@71]/5", // Esus2 G# Asus2 E
  G: "[~@2 f#5@4 a5 b5@3 c6@4 b5@2]/4", H: "[~ [g#4,g#5] [e4,e5] b3 g#3@6 ~@6, ~@3 b4@13]/2",
  I: "[c#5@8 d#5@17 ~ d#3@2 f#3@2 g#3@2]/2",
})).s("gm_string_ensemble_1").gain(0.22).pan(0.7)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@36 A B@2 C@2 D@2 E@3 F G H I@2 ~@15 A B@2 C@2 J@4 ~@2 K L M@2 ~@2 K L M@2 ~@2 K L M@2 ~@2 K L M@2 ~
>`.pickRestart({
  A: "~@5 d#2 f#2 g#2", B: "[a#2@2 c#3@6 g#2@11 ~@13]/2", C: "[~@4 b5@3 a4@3 g4@3 a4@2 g4]/2",
  D: "[a4@2 b4@2 [f#2,f#3,a4,b4] a4 [f#2,f#3,g4]@2 [c#3,c#4]@2 [d#3,d#4]@3 ~ [d#3,d#4]@9 ~ [c#3,c#4]@2 [b2,b3]@2 [c#3,c#4]@2 [b2,b3]@2]/2", // B7 Gmaj7 C# D# C# B C# B
  E: "[[c#3,c#4]@4 [b2,b3]@4 [c#3,c#4]@2 [d#3,d#4]@2 [f#3,f#4]@2 [d#3,d#4]@20 ~@5 [c#3,c#4] [b2,b3]@3 [c#3,c#4]@2 [d#3,d#4]@3, ~@19 [d#3,d#4] ~@4]/3", // C# B C# D# F# D# C# B …
  F: "[c#3,c#4]@5 ~ [c#3,c#4] [b2,b3] [a#2,a#3]@2 ~ [b2,b3]@2 [c#3,c#4]@2 ~", // C# B A# B C#
  G: "[f#2,f#3]@12 ~@2 [d#3,d#4] [c#3,c#4], [c#3,c#4] ~@15", // F# D# C#
  H: "[b2,b3]@3 [c#3,c#4]@3 [d#3,d#4]@2 [c#3,c#4]@3 [d#3,d#4]@2 [f3,f4]@3", // B C# D# C# D# F
  I: "[[f#3,f#4]@3 [g#3,g#4]@3 [a#3,a#4]@2 [f#3,f#4]@15 ~@9]/2", // F# G# A# F#
  J: "[a4@2 b4@2 [a4,b4] a4 g4@2 [b3,b4]@14 ~@2 [a#3,a#4]@15 ~ [g#3,g#4]@2 ~ [a#3,a#4]@2 ~ [f#3,f#4]@14 ~@4]/4", // Asus2 B A# G# A# F#
  K: "~@15 [c#3,c#4], ~@7 [d#3,d#4]", L: "[b2,b3]@3 [c#3,c#4]@2 [d#3,d#4]@3 [c#3,c#4]@5 ~ [c#3,c#4] [b2,b3]",
  M: "[[a#2,a#3]@2 ~ [b2,b3]@2 [c#3,c#4]@2 ~ [f#2,f#3]@12 ~@12, ~@8 [c#3,c#4] ~@23]/2", // A# B C# F# C#
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.7)

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

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 A@15 B A@19 C ~ D A@57 ~>".pickRestart({
  A: "~ x ~ x", B: "x!2 ~ x", C: "~ x ~@2", D: "~@3 x",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@99 x>").gain(0.5)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@4 A@2 B C A@2 B D A E F G A E F G A E F G A E F G A E F G A E F G A E F H I A@2 E F G A E A@2 B J F G A E F G A E F
  G A E F G A E F K@2 G A E F G A E A@2 B A@2 E A@2 B A@2 E A@2 B A@2 E A@2 B L
>`.pickRestart({
  A: "x!4", B: "x!3 ~ x ~ x ~", C: "x!5 ~ x!2", D: "x!5 ~ x ~", E: "x ~ x ~ x!3 ~", F: "x ~ x ~ x!4",
  G: "x ~ x!3 ~ x ~", H: "x ~ x!3 ~@3", I: "~@3 x", J: "x!7 ~", K: "x ~ x!6", L: "x",
})).gain(0.29)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
  ~@4 A@2 B C A@2 B D A E F G A E F G A E F G A E F G A E F G A E F G A E F H D A@2 E F G A E A@2 B I F G A E F G A E F
  G A E F G A E F H@2 G A E F G A E A@2 B A@2 E A@2 B A@2 E A@2 B A@2 E A@2 B ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~ x ~ x", C: "~@5 x ~@2", D: "~@5 x ~ x", E: "~ x ~ x ~@3 x", F: "~ x ~ x ~@4",
  G: "~ x ~@3 x ~ x", H: "~ x ~@6", I: "~@7 x",
})).gain(0.14)

stack(
  bass, acoustic_guitar_nylon, french_horn, tinkle_bell, string_ensemble_2, string_ensemble_1, acoustic_guitar_steel,
  kick, pedal_hat, open_hat, shaker, shaker_soft
)

More by Chicago