Strudelify

Steamy Windows

Tony Joe White

KeyE majorTempo134 bpm
0:00/0:00
// Steamy Windows — Tony Joe White
// 134 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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 · rock organ · "tk1"
const rock_organ = note(`<
  ~@28 A@2 ~@2 A@2 ~@18 A@2 ~@2 A@2 ~@2 A@2 ~@2 B@2 ~@31 A@2 ~@2 A@2 ~@6 B@2 ~@2 B@2 ~@5 C@2 D ~ C@2 ~@3 E
>`.pickRestart({
  A: "[~@4 [b5,d6,e6,g6]@20 [b5,d6,e6,g6]@2 g6@2 f6 [f5,g5,a5] ~@2, ~@2 [e4,e5]@8 ~@3 [b5,d6,e6]@2 ~]/2", // Em7 F E E7
  B: "[~@4 [b5,d6,e6,g6]@20 [b5,d6,e6,g6]@2 [b5,d6,e6,g6]@2 f6 [f5,g5,a5] ~@2, ~ [e4,e5]@4 ~@3]/2", // Em7 F E
  C: "[~ [b4,d5,e5,g5]@7]/2", D: "b4 ~@7, e5 ~@15", E: "~@10 e5@2 c5 [e4,f4,g4,a4,b4] [c4,d4] ~",
})).s("gm_rock_organ").gain(0.33).pan(0.4)

// chords · rock organ · "tk1" · soft notes
const rock_organ_soft = note("<~@29 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@32 A ~@3 A ~@7 A ~@3 A ~@14 B>".pickRestart({
  A: "~@12 c6 ~@3", B: "~@12 d5 ~@3",
})).s("gm_rock_organ").gain(0.16).pan(0.4)

// bass · electric bass finger · "tk2"
const bass = note(`<
  A@3 B C@6 D C@4 D C@3 E D C@4 D C@3 E F C E C F G@3 C@5 E D C@4 D C@3 E H C E C H C@2 E H C E C F C@8 I J C@2 I J K@4
  C@2 D C@4 D C@5 E H C E C H C@3 D C@2 E F C E C F C@10 I J L@2
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2",
  C: "e1@4 e2 ~ e2@2 e1@4 e2 ~ e2@2", D: "g1 a1", E: "e1@4 e2 ~ e2@2 e1@4 e2 ~ e2 ~", F: "d1@5 ~ d1@2 a1@5 ~ a1@2",
  G: "e1/3", H: "d1@5 ~ d1@2 a1@4 ~@2 a1@2", I: "g1", J: "a1", K: "e1/4", L: "[e1@13 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.38)

// other · electric guitar clean · "tk3"
const electric_guitar_clean = note(`<
  A@4 ~ B@2 C D E F G H I J F K L M N ~ O@2 P Q F R@2 P S T U V@2 T W@4 P X@2 M N ~ Y Z P Q F R@2 P S T U AA@2 T AB P S
  T U AC@2 T K L M N ~ O@2 P AD AE AF P AD AE AG@4 D E AH G H I J AH K L R@2 P S T U AA@2 T H I J F AB P S T U AA@2 T H
  I J K L M N ~ Y Z AD AE ~@2
>`.pickRestart({
  A: "[~@4 e3 ~@3 d3 ~ e3 ~@3 g3@6 e3@2 b2 ~ d3 ~ d3@4 e3@5 ~ d3 ~ b2 ~ g3 ~ [e2,e3] ~@3 e3@6 d3@2 b2 ~ d3 ~ g2@6, ~@6 e2@5 ~@53]/4", // E
  B: "[~@6 a3 ~ [d3,g3]@2 [b2,e3] ~ b2 ~ [b2,e3]@6 ~@4 e3 ~ e3@2 ~@4]/2", C: "~@4 e3 ~@3 [e2,e3] ~ e3@2 ~@4",
  D: "~@4 e3 ~@3 e3 ~ e3@3 ~ e2@2", E: "~@2 e2@2 e3@2 ~@2 e3 ~ e3@2 e2@2 ~@2", F: "[g2,d3,g3]@8 [a2,e3]@7 ~",
  G: "~@4 e3@2 e2@2 ~@2 e3@3 ~ e2@2", H: "~@2 e3 ~ e3@2 e2@2 e3 ~ e3@4 e2@2", I: "~@4 e3@2 e2@2 e3 ~ e3@4 e2@2",
  J: "~ e2 e3 e2 e3!2 ~ e3", K: "~@4 e3@2 e2 ~ e3 ~ e3@2 e2@2 ~@2", L: "~@2 e2@2 e3@2 e2@2 e3 ~ e3@3 ~@3",
  M: "~@4 e3@2 e2@2 e3 ~ e3@3 ~@3", N: "~@2 e2@2 e3@2 e2@2 e3 ~ e3@3 ~ e3 ~",
  O: "[~@4 e3@2 e2 ~@3 e3@3 ~ e2@4 e2@2 e3@2 e2 ~ e3 ~ e3@2 e2@2 e3@2]/2", P: "~@4 e3@2 e2@2 e3 ~ e3@3 ~ e2@2",
  Q: "~@2 e2@2 e3@2 e2@2 e3 ~ e3@2 e2@3 ~", R: "[~@4 e3@2 e2 ~ e3 ~ e3 ~ e2@2 e3@4 e2@2 e3@2 e2@2 e3 ~ e3@3 ~@3]/2",
  S: "e3@2 e3 ~ e3@2 e2@2 e3 ~ e3@3 ~ e3 ~", T: "[a2,d3,a3] [a2,e3]", U: "~@4 e3@2 e2@2 e3 ~ e3@2 e2@2 e3@2",
  V: "[~@2 e2@2 e3@2 e2 ~ [e2,e3]@2 e3@2 ~@2 e3@4 e2@2 e3@2 e2@2 e3 ~@3 e2@3 ~, ~@13 e3@2 ~]/2", // E
  W: "[~@6 e3@2 d3@2 e3 ~@3 g3@4 ~@2 e3 ~ e3@2 d3 ~@5 e3@5 ~ d3@2 b2 ~ d3 ~ g2@4 e2@8 ~@10, e2@11 ~ e2@6 e2@10 e2@12 ~@24, ~@13 d3@2 ~@17]/4",
  X: "[~@4 d3 ~ a3 ~ [d3,g3]@2 [b2,e3] ~ b2 ~ [b2,e3]@6 ~@12]/2", Y: "~@4 e3@2 e2 ~@3 e3@3 ~ e2@2",
  Z: "~@2 e2@2 e3@2 e2 ~ e3 ~ e3@2 e2@2 e3@2",
  AA: "[~@2 e2@2 e3@2 e2 ~ e2@2 e3@2 ~@2 e3@4 e2@2 e3@2 e2@2 e3 ~@3 e2@3 ~, ~@8 e3 ~@17 e3@4 ~@2]/2",
  AB: "e3@2 e2@2 e3@2 e2@2 e3 ~ e3@3 ~@3",
  AC: "[~@2 e2@2 e3@2 e2 ~ e2@2 e3@2 ~@2 e3@4 e2@2 e3@2 e2 ~ e3 ~@3 e2@3 ~, ~@8 e3 ~@17 e3@4 ~@2]/2", AD: "[g2,d3]",
  AE: "[a2,e3]@7 ~", AF: "e2@2 e2@2 e3@2 e2 ~ e3 ~ e3@2 e2@2 e3@2",
  AG: "[e2@4 e3@2 b2 ~ d3 ~ e3 ~@3 g3@5 ~ a3 ~ e2 ~ g3@2 e3@2 d3 ~ e3@4 e2@2 d3@2 b2 ~ g3 ~ [e2,e3] ~ d3@2 e2@4 ~@2 d3@2 b2 ~ d3 ~ g2@6, ~@12 e2@6 ~@28 e3 ~@17]/4", // E
  AH: "[g2,d3]@8 [a2,e3]@7 ~", // G5 A5
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.3)

// other · electric guitar clean · "tk3" · soft notes
const electric_guitar_clean_2 = note(`<
  A B@3 ~ C ~ D E F G ~@3 H G I J K ~ L M ~ N O G ~ P Q P R ~ P ~ R ~@4 N S ~ K ~ L M ~ N O G ~ P Q P R ~ P ~ R P Q P R
  ~ P ~ R I J K ~ L M ~ N ~@3 N ~@2 T U T Q E F V ~@3 H V I J ~ P Q P R ~ P ~ R ~@2 H G P Q P R ~ P ~ R ~@2 H I J K ~ L
  M ~@5
>`.pickRestart({
  A: "e2@4 ~@8 e2@3 ~", B: "[~@2 e2@5 ~@3 e2@2 ~@2 e2@4 e2@2 ~@8 e2@2 e2@9 ~@9]/3", C: "~@4 [d3,g3] ~ e3 ~@9",
  D: "~@14 e2 ~", E: "e2!2 ~@6", F: "~@3 e2 ~@4", G: "~@8 a3@7 ~", H: "~@8 e2@2 ~@2 e2@3 ~", I: "~@2 e2@2 ~@10 e2 ~",
  J: "~@12 e2 ~ e2@2", K: "~@2 e2@3 ~@7 e2@2 e2 ~", L: "e2 ~@7", M: "~@8 e3 ~@3 e2@2 ~@2", N: "~@2 e2@3 ~@7 e2 ~@3",
  O: "~@8 e2 ~@7", P: "~@12 e2@3 ~", Q: "~ e2 ~@6", R: "~ a3", S: "~@4 g3 ~ e3 ~@9", T: "~@6 e2 ~@9", U: "~@5 e2 e2@2",
  V: "g3@8 a3@7 ~",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.3)

// chords · distortion guitar · "tk6"
const distortion_guitar = note(`<
  ~@4 A B C A B A D E B@2 F D G A B A D E B@2 F D B A@2 C H I J@2 H ~@3 A B C A K A D L B@2 F D B A@2 C H I J@2 H G A C
  H I J@2 H A B C A B A@2 B M N A B M N O@4 K A D E B@2 F D G C B A@2 C H I J@2 H K B F D G A C H I J@2 H K B F A B C A
  B A@2 M N P@2
>`.pickRestart({
  A: "~@4 e3@2 ~@2 e3 ~ e3@3 ~ e2@2", B: "~@4 e3 ~@3 e3 ~ e3@3 ~ e2@2", C: "~@4 e3@2 ~@2 e3 ~ e3@4 e2@2",
  D: "[g2,d3,g3,b3,d4]@7 [g#2,a2,d#3,d#4] [a2,e3,a3,c#4,e4]@8", E: "e2@2 ~@2 e3@2 ~@2 e3 ~ e3@3 ~ e2@2",
  F: "~@4 e3 ~@3 e3 ~ e3@3 ~@3", G: "e2 ~@3 e3@2 ~@2 e3 ~ e3@3 ~ e2@2",
  H: "[a2,d3,f#3,a3,d4]@7 [g#2,a2,d#3,d#4] [a2,e3,a3,c#4,e4]@8", I: "e2 ~@3 e3 ~@3 e3 ~ e3@4 e2@2",
  J: "~@4 e3 ~@3 e3 ~ e3@4 e2@2", K: "e2 ~@3 e3 ~@3 e3 ~ e3@3 ~ e2@2", L: "e2@2 ~@2 e3@2 ~@2 e3 ~ e3@4 e2@2",
  M: "[g2,d3,g3]", N: "[a2,e3,a3]", O: "[[e2,b2,e3]@59 ~@5]/4", P: "[[e2,b2,e3]@7 ~]/2",
})).s("gm_distortion_guitar").gain(0.44).pan(0.7)

// chords · distortion guitar · "tk6" · soft notes
const distortion_guitar_soft = note(`<
  ~@10 A ~@4 A ~@4 A ~@4 A ~@4 B ~@3 B ~@9 A ~@4 A ~@4 B ~@3 B ~@3 B ~@3 B ~@20 A ~@4 A ~@6 B ~@3 B ~@3 A ~@3 B ~@3 B
  ~@14
>`.pickRestart({
  A: "g4@7 [a3,c4,c#4] a4@8", B: "a4@7 [a3,c4,c#4] a4@8",
})).s("gm_distortion_guitar").gain(0.27).pan(0.7)

// chords · overdriven guitar · "tk7"
const overdriven_guitar = note(`<
  A@3 B C@6 D E@4 F G@4 D E@4 H I@2 J K L ~ J K L ~@3 M@4 N@2 D E@4 H I@2 J K L ~ J K L O J K L ~ J K L P@2 Q@2 R@2 S@2
  T U V@2 T U W@4 N@2 D E@4 H X@2 I@2 J K L ~ J K L Y@3 H ~ J K L ~ J K L Y@3 P@2 Q@2 R@2 Z T U AA@2
>`.pickRestart({
  A: "[~@4 e3@2 e3@2 e3@2 e3@2 ~@2 e3@6 e3@2 e3 ~ d3 ~ e3@4 e3@6 d3 ~@3 d3@2 e3 ~ d3 ~ e3@2]/3", B: "g#3",
  C: "[e3@4 [g#3,d4] ~@3 d3@2 [e3,g#3] ~@3 [g#3,d4]@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@6 d4 ~@3 d3@2 e3@2 c#4 ~ d4@4 ~@4 g#3@4 d4 ~@5 e3@4 g#3 ~ e3 ~ d3@2 ~@2 d4 ~ e4@6 d4 ~@3 d3@4 e3@2 e3@2, ~@14 e4@8 ~@24 e4@11 ~@21 d4@5 ~@13, ~@50 d4@7 ~@5 [g#3,d4]@6 ~@24 [g#3,d4]@4]/6", // G#dim E G#dim
  D: "[d3,g3]@8 [e3,a3]@7 ~", // G5 A5
  E: "[d3@3 ~@3 d4@2 ~@2 d3@2 ~@2 e4@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@4 [g#3,d4] ~@3 [g#3,d4] ~@3 d3@2 ~@2 e4@6 [g#3,d4] ~@3 d3@2 e3@2 d4 ~ e3 ~, ~@12 e3@9 ~@23 e3@10 ~@2 g#3@5 ~@3, ~@14 d4@5 ~@45]/4", // G#dim
  F: "g3@5 ~ g3 ~ [e3,a3]@7 ~, d3 ~", // A5
  G: "[e3@4 d4 ~@3 d3@2 e3@2 c#4 ~ d4@4 ~@4 g#3@4 d4 ~@5 e3@4 g#3 ~ e3 ~ d3@2 ~@2 d4 ~ e4@6 d4 ~@3 d3@4 e3@2 e3@2, ~@14 e4@11 ~@21 d4@5 ~@13, ~@18 d4@7 ~@5 [g#3,d4]@6 ~@24 [g#3,d4]@4]/4", // G#dim
  H: "g3@5 ~ g3@2 [e3,a3]@7 ~, d3 ~", // A5
  I: "[e3@4 [g#3,d4] ~@3 d3@2 [e3,g#3] ~@3 [g#3,d4]@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@2, ~@7 e4@4 ~@5]/2", // G#dim E G#dim
  J: "~@4 [e3,g3]@2 b2 ~@3 [e3,g3]@2 b2 ~ [e3,g3]@2", K: "~@2 b2 ~ [e3,g3]@2 b2 ~ d3 ~ [e3,g3]@2 b2 ~@3",
  L: "[d2,a2,d3] [a2,e3,a3]", // D5 A5
  M: "[e3@4 [g#3,d4] ~@3 d3@2 [e3,g#3] ~@3 [g#3,d4]@6 d4 ~@3 d3@2 ~@2 d4 ~ e3@6 d4 ~@3 d3@2 e3@3 ~ d4@4 ~@4 g#3@4 d4 ~@3 [g#3,d4]@2, ~@14 e4@8 ~@24 e4@11 ~@7, ~@50 d4@7 ~@7]/4", // G#dim E G#dim
  N: "[[e3,g#3,d4]@4 g#3 ~ e3 ~ d3@2 ~@2 d4 ~ e4@6 d4 ~@3 d3@4 e3@2 e3@2, ~@14 d4@5 ~@9 [g#3,d4]@4]/2", // E7 G#dim
  O: "[g#3,d4]@4 d4 ~@3 d3@2 ~@2 d4 ~ e3@2, e4@3 ~@5", // G#dim
  P: "[~@4 [b3,d4,e4] ~@3 e3 ~ [b3,d4,e4] ~ e3 ~ [b3,d4,e4]@6 ~@6 [b3,d4] ~@5]/2", // E7 Bm
  Q: "[~@4 [b3,d4,e4] ~@5 [b3,d4,e4] ~ e3 ~ [b3,d4,e4]@6 ~@6 [b3,d4] ~@5]/2", // E7 Bm
  R: "[~@2 e3@2 [b3,d4] ~@5 [b3,d4,e4] ~@3 [b3,d4,e4]@6 ~@6 [b3,d4] ~@3 [b3,d4] ~]/2", // Bm E7 Bm
  S: "[~@4 [b3,d4] ~@5 [b3,d4] ~@3 [b3,d4,e4]@6 ~@6 [b3,e4] ~@5]/2", T: "[g2,d3,g3]@15 ~", U: "[a2,e3,a3]",
  V: "[~@4 [b3,d4] ~@5 [b3,d4] ~ e3 ~ [b3,d4,e4]@6 ~@6 [b3,e4] ~@5]/2", W: "[e3@59 ~@5]/4",
  X: "[e3@4 d4 ~@3 d3@2 e3@2 c#4 ~ d4@4 ~@4 g#3@4 d4 ~@3 [g#3,d4]@2, ~@14 e4@11 ~@7, ~@18 d4@7 ~@7]/2", // G#dim
  Y: "[[e3,e4]@4 d4 ~@3 d3@2 ~@2 d4 ~ e3@4 [g#3,d4] ~@3 [g#3,d4] ~@3 d3@2 ~@2 e4@6 [g#3,d4] ~@3 d3@2 e3@2 d4 ~ e3 ~, d4@3 ~@25 e3@10 ~@2 g#3@5 ~@3]/3", // E G#dim
  Z: "~@4 [b3,d4] ~@5 [b3,d4] ~@3 [b3,d4,e4]@2", AA: "[e3@27 ~@5]/2",
})).s("gm_overdriven_guitar").gain(0.33).pan(0.1)

// chords · overdriven guitar · "tk7" · soft notes
const overdriven_guitar_soft = note(`<
  A ~@4 B C ~ D@2 E F@2 G@2 ~ H ~ D@2 E F@2 G@2 ~@2 B ~ I ~@3 I ~@5 B C ~ D@2 E F@2 G@2 ~@2 B ~ I ~@3 I ~ B ~ I ~@3 I ~
  J ~ K ~@3 L ~ M ~ N ~ M ~ O@4 D@2 E F@2 G@2 ~ C ~@2 B ~ I ~@3 I ~ P G@2 ~@3 I ~@3 I ~ P G@2 J ~ K ~@2 Q L M ~ R@2
>`.pickRestart({
  A: "e3 ~@7", B: "~@6 e3 ~@3 e3@3 ~@3, ~@2 g#3 ~", C: "~@9 g#3@3 ~@4", D: "[~@10 e3@3 ~ g#3@6 ~@12, ~@2 g#3 ~@5]/2",
  E: "~@15 [d#3,g#3]", F: "[~@3 e3@3 g#3@2 ~@2 g#3@11 ~@5 e3@3 ~@3, ~@6 g#3 ~]/2", G: "[~@14 d4@5 ~@13]/2",
  H: "~@9 g#3@4 ~@3", I: "b2 ~@15", J: "~ e3 ~@6", K: "~@2 e3@2 ~@4 e3 ~@7", L: "~@4 e3 ~@7 e3 ~@3",
  M: "~@15 [d#3,g#3,a3]", N: "~@4 e3 ~@11", O: "[[e2,b2]@59 ~@5]/4", P: "g#3@5 ~@5 e3@3 ~@3, ~@2 g#3 ~",
  Q: "~@10 e3 ~@5", R: "[[e2,b2]@27 ~@5]/2",
})).s("gm_overdriven_guitar").gain(0.11).pan(0.1)

// other · electric guitar jazz · "tk8"
const electric_guitar_jazz = note("<~@69 A@2 B C@2 D E F@3 G H I@3 ~@46>".pickRestart({
  A: "[~@14 d5@3 ~ d5@3 d5@3 d5@3 d5@2 ~ d5@2, ~@7 b4@5 b4@4]/2", B: "~ d5@8 ~@3 g4 ~ a4@2, b4@9 ~@7",
  C: "[a4@4 g4@2 e4@15 ~@11]/2", D: "~@5 a#4 d5 e5", E: "~ e5@5 ~@4 g5@3 g5@2 ~",
  F: "[a5@7 ~ g5 a5 g5 ~ e5 ~ e5@11 ~ d5@2 ~ a4@6 ~ g4@2 ~@2 g4@5 ~@3]/3", G: "a4@7 ~ g4@2 e4 ~ d4@2 b3 ~",
  H: "d#4@2 ~ g4 d4@2 b3 ~ a#3@2 d4 ~ a3@2 g3@2", I: "[e4@23 ~]/3",
})).s("gm_electric_guitar_jazz").gain(0.49).pan(0.4)

// other · electric guitar muted · "tk9"
const electric_guitar_muted = note(`<
  ~@4 A B C@3 D E C@3 F G C@3 D E C@3 F G A B A B H C@2 D H ~@3 A B C@3 D E C@3 F G A B A B H C@2 D H B A B H C@2 D H A
  B C@3 D A B I J A B I J ~@4 C D E C@3 F G C@2 A B A B H C@2 D H C@2 F G B A B H C@2 D H C@2 F A B C@3 D A I J ~@2
>`.pickRestart({
  A: "e2 ~ e2 ~@3 e3@2 e2 ~ e2@2 ~@2 e3@2", B: "e2 ~ e2@2 ~@2 e3@2 e2 ~ e2 ~@3 e3@2",
  C: "e2 ~ e2 ~@3 e3@2 e2 ~ e2 ~@3 e3@2", D: "e2 ~ e2 ~@3 e3@2 e2@2 e3 ~@3 e3 ~", E: "~ d3 ~ e3, g2 a2",
  F: "e2 ~ e2@2 ~@2 e3@2 e2 ~ e2@2 ~@2 e2@2", G: "~@4 d3@4 ~@4 e3@3 ~, g2 a2", H: "~ a2 ~ e3, d2 a2",
  I: "[g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@3 ~ [g2,d3]@4", J: "[a2,e3]@3 ~ a2@3 ~ a2@3 ~ [a2,e3]@4, ~ e3@2 ~",
})).s("gm_electric_guitar_muted").gain(0.33)

// other · harmonica · "tk11"
const harmonica = note("<~@35 A@2 B C ~@28 D@2 E F ~@7 G H I J ~@46 K@2>".pickRestart({
  A: "[~@2 a4@26 a4 ~ b4@2]/2", B: "g#4 ~@10 d4 e4 ~ e4 ~", C: "e3 ~@15",
  D: "[~@4 b4@2 d5@13 ~ a4@2 b4 ~ g4@2 e4 ~@3 e4 ~, ~@24 f#4 ~@7]/2", E: "~@4 e4 ~@3 e4 ~ e4 ~@3 e4 ~",
  F: "~@2 e4 ~ e4 ~@11", G: "~@5 a4 b4 ~", H: "[b4,d5]@15 ~",
  I: "~@4 b4@2 d5 ~ g4@2 e4 ~ d4@2 ~@2, ~@4 a#4 ~@3 f#4 ~@7", J: "e4@2 b3@11 ~@3",
  K: "[~@4 b4@2 d5@13 ~ a4@2 b4 ~ g4@2 e4 ~@5, ~@24 f#4 ~@7]/2",
})).s("gm_harmonica").gain(0.49).pan(0.6)

// chords · synth brass 1 · "tk12"
const synth_brass_1 = note("<~@29 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@32 A ~@3 A ~@7 A ~@3 A ~@15>".pickRestart({
  A: "~@8 [b4,d5,e5,g5]@2 [b4,d5,e5,g5] ~@5", // Em7
})).s("gm_synth_brass_1").gain(0.27).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A@30 B A@3 B A@19 B A@3 B A@3 B A@3 B A@17 C A@14 B A@3 B A@3 B A@3 B A@3 B A@9 D@3 E F
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~ x!2 ~ x ~@2", D: "x ~@3 x!2 ~ x", E: "x", F: "~@5 x ~@2",
})).gain(0.55)

// drums · snare
const snare = s("sd").struct("<~@4 A@31 ~@3 A@36 B A@6 ~@2 A C A@40 D A@2 E F>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~ x ~@2 x ~ x ~", D: "~ x!3", E: "x", F: "~@5 x ~@2",
})).gain(0.55)

// drums · low tom
const low_tom = s("lt").struct("<~@74 [~@6 x!2] ~@55>").gain(0.49)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@74 [~@4 x!2 ~@2] ~@55>").gain(0.38)

// drums · open hat
const open_hat = s("oh").struct("<~@3 [~@3 x] ~@33 [~@3 x] ~@46 [~ x ~@2 x ~ x ~] ~@45>").gain(0.38)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@4 A ~@4 A ~@4 A ~@2 B ~ A ~@3 A B ~@8 A ~@4 A ~@2 B ~ A ~@3 A ~@3 A ~@3 A ~@7 C B@2 ~@2 B@2 ~@4 B ~ A ~@4 A
// … 26 more lines