Strudelify
China In Your Hand cover art

1987 · Bridge of Spies

China In Your Hand

T'Pau

KeyB majorTempo69 bpm
0:00/0:00
// China In Your Hand — T'Pau
// 69 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 5, 4/4 at bar 6, 2/4 at bar 8, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 alto sax (copy of ch 7 alto sax, 0.104 beats late)
// note: Full arrangement: all 82 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 32 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(69/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.

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M L N L O@2 P@2 B C D E F G H I J K L M L N L O@2 P@2 B@2 Q@6 R@8 S@7 T@8 U@8 V@4
>`.pickRestart({
  A: "~@8 [f#4,b4,d#5]@2 b3@2 [f#4,b4,d#5]@2 b3 [f#4,b4,d#5]", // B
  B: "[f#4,a#4,c#5]@2 c#4 [f#4,a#4,c#5] [e4,g#4] g#4 e4 g#4 [f#4,b4,d#5]@2 b3@2 [f#4,b4,d#5]@2 b3 [f#4,b4,d#5], ~ b4 ~@2", // F# E B
  C: "[f#4,a#4,c#5]@2 c#4 [f#4,a#4,c#5] [e4,g#4] g#4 e4 g#4 [b4,d#5,f#5]@2 f#4@2 [b4,d#5]@2 f#4@2, ~ b4 ~@2", // F# E B
  D: "[b4,d#5,f#5]@2 f#4@2 [b4,d#5]@2 [f#4,b4,d#5] f#4!2 c#5 a#4 f#4 e4 g#4 b4 e5, ~@2 [a#3,c#4] [g#3,b3]", // B A#m G#m
  E: "[f#4,b4,d#5]@2 b3@2 [f#4,b4]@2 b3@2 [f#4,b4,d#5]@2 [d#4,f#4,b4] [f#4,b4,d#5] [c#5,e5] [b4,d#5] [a#4,c#5] [g#4,b4]", // B B5 B C#m B A#m G#m
  F: "[f#4,b4,d#5]@2 b3@2 [f#4,b4]@2 b3@2 [f#4,b4,c#5]@2 b3@2 [f#4,b4]@2 b4 g#4", // B B5 F#sus4 B5
  G: "f#4 c#5 a#4 f#4 e4 g#4 b4 e5 [b4,d#5]@2 f#4@2 [b4,d#5]@2 f#4@2, [a#3,c#4] [g#3,b3] ~@2", // B A#m G#m
  H: "[b4,d#5] f#4 [a#4,c#5] f#4 [b4,d#5] g#4 [b4,d#5] g#4", I: "[b4,d#5] g4 [b4,d#5] g4 [b4,d#5] f#4 [b4,d#5] f#4",
  J: "[e4,g#4,b4] c#4 [e4,g#4,b4] c#4 [e4,g#4,b4] c#4 [e4,g#4,b4] c#4", // E
  K: "[b4,c#5,e5] f#4 [b4,c#5,e5] f#4 [b4,c#5,e5] f#4 [b4,c#5,e5] f#4", L: "[b3,c#4,e4,g#4] [c#4,e4,f#4,a#4]",
  M: "[f#4,b4,d#5] [f#4,a#4,c#5] [d#4,g#4,b4] [c#4,f#4,a#4]", N: "[c#4,d#4,f#4]@2 [b3,e4,g#4] [c#4,f#4,a#4]",
  O: "[[b3,d#4,f#4] [f#4,a#4,c#5] [d#4,f#4,g#4,b4]@3 [c#4,e4,f#4,a#4] [g#4,b4,c#5,e5]@2]/2", // B F# G#m7 F#7 C#m7
  P: "[e5@4 d#5@4 [e4,f#4,b4,c#5]@16 [f#4,b4,d#5]@2 b3@2 [f#4,b4,d#5]@2 b3 [f#4,b4,d#5], [g#4,b4] ~@3]/2", // Esus2 B G#m
  Q: "[[f#4,a#4,c#5]@2 c#4 [f#4,a#4,c#5] [e4,g#4] g#4 ~ e4 g#4 [b3,d#4,f#4]@26 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [f#4,b4,d#5]@4 [f#4,a#4,c#5]@4 [d#4,g#4,b4]@4 [c#4,f#4,a#4]@4 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [c#4,d#4,f#4]@8 [b3,e4,g#4]@4 [c#4,f#4,a#4], ~@4 b4@4 [b2,d#3]@27 ~@61]/6", // F# E B C#m7 F#7 B F# G#m …
  R: "[~@3 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [b3,d#4,f#4]@4 [f#4,a#4,c#5]@4 [d#4,f#4,g#4,b4]@12 [c#4,e4,f#4,a#4]@4 [g#4,b4,c#5,e5]@8 e5@4 d#5@4 [e4,f#4,b4,c#5]@16 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [f#4,b4,d#5]@4 [f#4,a#4,c#5]@4 [d#4,g#4,b4]@4 [c#4,f#4,a#4]@4 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [c#4,d#4,f#4]@5, ~@51 [g#4,b4]@8 ~@69]/8", // C#m7 F#7 B F# G#m7 F#7 C#m7 Esus2 …
  S: "[~@3 [b3,e4,g#4]@4 [c#4,f#4,a#4]@4 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [b3,d#4,f#4]@4 [f#4,a#4,c#5]@4 [d#4,f#4,g#4,b4]@12 [c#4,e4,f#4,a#4]@4 [g#4,b4,c#5,e5]@8 e5@4 d#5@4 [e4,f#4,b4,c#5]@16 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [f#4,b4,d#5]@4 [f#4,a#4,c#5]@4 [d#4,g#4,b4]@4 [c#4,f#4,a#4], ~@59 [g#4,b4]@8 ~@45]/7", // E F# C#m7 F#7 B F# G#m7 F#7 …
  T: "[~@3 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [c#4,d#4,f#4]@8 [b3,e4,g#4]@4 [c#4,f#4,a#4]@4 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [b3,d#4,f#4]@4 [f#4,a#4,c#5]@4 [d#4,f#4,g#4,b4]@12 [c#4,e4,f#4,a#4]@4 [g#4,b4,c#5,e5]@8 e5@4 d#5@4 [e4,f#4,b4,c#5]@16 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [f#4,b4,d#5]@4 [f#4,a#4,c#5], ~@83 [g#4,b4]@8 ~@37]/8", // C#m7 F#7 D#m7 E F# C#m7 F#7 B …
  U: "[~@3 [d#4,g#4,b4]@4 [c#4,f#4,a#4]@4 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [c#4,d#4,f#4]@8 [b3,e4,g#4]@4 [c#4,f#4,a#4]@4 [b3,c#4,e4,g#4]@8 [c#4,e4,f#4,a#4]@8 [b3,d#4,f#4]@4 [f#4,a#4,c#5]@4 [d#4,f#4,g#4,b4]@12 [c#4,e4,f#4,a#4]@4 [g#4,b4,c#5,e5]@8 e5@4 d#5@4 [e4,f#4,b4,c#5]@16 [f#4,b4,d#5]@2 b3@2 [f#4,b4,d#5]@2 b3 [f#4,b4,d#5] [f#4,a#4,c#5]@2 c#4 [f#4,a#4,c#5] [e4,g#4,b4], ~@91 [g#4,b4]@8 ~@29]/8", // G#m F# C#m7 F#7 D#m7 E F# C#m7 …
  V: "[g#4 e4 g#4 [f#4,b4,d#5]@2 b3@2 [f#4,b4,d#5]@2 b3 [f#4,b4,d#5] [f#4,a#4,c#5]@2 c#4 [f#4,a#4,c#5] [e4,g#4] g#4 e4 g#4 [f#4,b4,d#5]@2 b3@2 [f#4,b4,d#5]@2 b3 [f#4,b4,d#5] [f#4,a#4,c#5]@2 c#4 [f#4,a#4,c#5] [e4,g#4] ~ g#4 e4 g#4 [d#3,b3,d#4,f#4]@24 ~@4, ~@15 b4@4 ~@12 b4@4 b2@24 ~@5]/4", // B F# E B F# E B
})).s("gm_piano").gain(0.3)

// other · piano
const piano_2 = note("<A B C@2 D E F@2 G H I ~@8 A B J@2 D E F@2 G H I ~@47 K@4 ~>".pickRestart({
  A: "~@4 b2@3 b2", B: "f#2@4 e2@3 e2 b2@6 b2@2", C: "[f#2@4 e2@3 e2 b2@14 b3@2 f#2@4 e2@4]/2", D: "b2@15 f#3",
  E: "b3@7 b3", F: "[f#2@2 e2@2 b2@6 a#3@2 g#3@3 g#3]/2", G: "g3@3 g3 f#3@3 f#3", H: "e2", I: "f#2@5 ~ f#2@2 f#2@8",
  J: "[f#2@4 e2@3 e2 b2@13 ~ b3@2 f#2@4 e2@4]/2",
  K: "[~@3 b2@6 b3@2 f#3@4 e3@4 b2@6 b3@2 f#3@4 e3@4 b2@6 b3@2 f#3@4 e3@4 ~@13]/4",
})).s("gm_piano").gain(0.25)

// bass · synth bass 2
const bass = note(`<
  A B C@2 D E F@2 G H I J K J L J M N O P B C@2 D E F@2 G H Q J K J L J M N R@2 S@2 T@3 U@2 V@2 W X Y@2 Z@2 AA AB AC@3
  AD@2 AE@2 AF@2 AG AH AI@2 Z@2 AA AB AC@3 AJ@6
>`.pickRestart({
  A: "~@4 b1@3 b1", B: "f#1@3 ~ e1@2 ~ e1 b1@5 ~ b1@2", C: "[f#1@3 ~ e1@2 ~ e1 b1@13 ~ b2@2 f#1@3 ~ e1@3 ~]/2",
  D: "b1@14 ~ f#2", E: "b2@13 ~ b2@2", F: "[f#1@3 ~ e1@3 ~ b1@11 ~ a#2@3 ~ g#2@5 ~ g#2@2]/2",
  G: "g2@5 ~ g2@2 f#2@5 ~ f#2@2", H: "e1@15 ~", I: "f#1@4 ~@2 f#1@2 f#1@7 ~", J: "e2@5 ~ e2@2 f#2@5 ~ f#2@2",
  K: "b1@3 ~ a#1@3 ~ g#1@3 ~ f#1@3 ~", L: "d#2@5 ~ d#2@2 e2@3 ~ f#2@3 ~", M: "b1@3 ~ a#1@3 ~ g#1@5 ~ g#1@2",
  N: "g#1@3 ~ f#1@3 ~ e2@5 ~ e2 ~", O: "e2@5 ~ e2@2 f#2@7 ~", P: "f#2@7 ~ b1@5 ~ b1@2", Q: "f#1@5 ~ f#1@2 f#1@7 ~",
  R: "[e2@5 ~ e2@2 f#2@5 ~ f#2@9 ~ b1@5 ~ b2@2]/2", S: "f#2@3 ~ e2@3 ~ b1@5 ~ b2@2",
  T: "[f#2@4 e2@4 ~ b1@26 e2@5 ~ e2@2 f#2@5]/3", U: "[~ f#2@2 b1@3 ~ a#1@3 ~ g#1@3 ~ f#1@3 ~ e1@5 ~ e1@2 f#1@5]/2",
  V: "[~ f#1@2 d#1@5 ~ d#1@2 e1@3 ~ f#1@3 ~ e1@5 ~ e1@2 f#1@5]/2", W: "~ f#1@2 b1@3 ~ a#1@3 ~ g#1@5",
  X: "~ g#1@2 g#1@3 ~ f#1@3 ~ e1@5", Y: "[~ e1@2 e1@5 ~ e1@2 f#1@15 ~ e2@5]/2",
  Z: "[~ e2@2 f#2@5 ~ f#2@2 b1@3 ~ a#1@3 ~ g#1@3 ~ f#1@3 ~ e2@5]/2", AA: "~ e2@2 f#2@5 ~ f#2@2 d#2@5",
  AB: "~ d#2@2 e2@3 ~ f#2@3 ~ e2@5",
  AC: "[~ e2@2 f#2@5 ~ f#2@2 b1@3 ~ a#1@3 ~ g#1@5 ~ g#1@2 g#1@3 ~ f#1@3 ~ e2@5 ~ e2@2 e2@5]/3",
  AD: "[~ e2@2 f#2@7 ~ f#2@7 ~ e2@5 ~ e2@2 f#2@5]/2",
  AE: "[~ f#2@2 b1@3 ~ a#1@3 ~ g#1@3 ~ f#1@3 ~ e2@5 ~ e2@2 f#2@5]/2",
  AF: "[~ f#2@2 d#2@5 ~ d#2@2 e2@3 ~ f#2@3 ~ e2@5 ~ e2@2 f#2@5]/2", AG: "~ f#2@2 b1@3 ~ a#1@3 ~ g#1@5",
  AH: "~ g#1@2 g#1@3 ~ f#1@3 ~ e2@5", AI: "[~ e2@2 e2@5 ~ e2@2 f#2@7 ~ f#2@7 ~ e2@5]/2",
  AJ: "[~ e2@2 f#2@7 ~ f#2@7 ~ b1@5 ~ b2@2 f#2@3 ~ e2@3 ~ b1@5 ~ b2@2 f#2@3 ~ e2@3 ~ b1@6 b2@2 f#2@4 e2@4 ~ b1@23 ~@5]/6",
})).s("gm_synth_bass_2").gain(0.4)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@11 A B C D A E@2 F@2 ~@10 A B C D A E@2 F@2 ~@4 G H@2 I@2 J@2 K@8 L M@2 H@2 I@2 J@2 K@8 L N@2 ~@4
>`.pickRestart({
  A: "[g#3,g#4]@8 [a#3,a#4]@6 [f#3,f#4] [c#3,c#4]", B: "[d#3,d#4] [c#3,c#4] [b3,b4] [a#3,a#4]",
  C: "[g#3,g#4]@4 [a#3,a#4]@3 [a#3,a#4]", D: "[f#3,f#4]@2 [g#3,g#4] [a#3,a#4]",
  E: "[[f#3,f#4]@4 [c#4,c#5]@4 [b3,b4]@12 [b3,b4]@2 [c#4,c#5] [d#4,d#5] [e4,c#5,e5]@6 [e4,c#5,e5]!2]/2", // F# C# B C# D# C#m
  F: "[[e4,c#5,e5] [d#4,b4,d#5]!4 [c#4,a#4,c#5]!3 [c#4,c#5]@16 ~@8]/2", G: "~@3 [g#3,g#4]@8 [a#3,a#4]@5",
  H: "[~ [f#3,f#4] [c#3,c#4] [d#3,d#4]@4 [c#3,c#4]@4 [b3,b4]@4 [a#3,a#4]@4 [g#3,g#4]@8 [a#3,a#4]@5]/2", // F# C# D# C# B A# G# A#
  I: "[~ [a#3,a#4]@2 [f#3,f#4]@8 [g#3,g#4]@4 [a#3,a#4]@4 [g#3,g#4]@8 [a#3,a#4]@5]/2", // A# F# G# A# G# A#
  J: "[~ [f#3,f#4] [c#3,c#4] [f#3,f#4]@4 [c#4,c#5]@4 [b3,b4]@12 [b3,b4]@2 [c#4,c#5] [d#4,d#5] [e4,c#5,e5]@5]/2", // F# C# F# C# B C# D# C#m
  K: "[~ [e4,c#5,e5]!3 [d#4,b4,d#5]!4 [c#4,a#4,c#5]!3 [c#4,c#5]@16 [g#3,g#4]@8 [a#3,a#4]@6 [f#3,f#4] [c#3,c#4] [d#3,d#4]@4 [c#3,c#4]@4 [b3,b4]@4 [a#3,a#4]@4 [g#3,g#4]@8 [a#3,a#4]@6 [a#3,a#4]@2 [f#3,f#4]@8 [g#3,g#4]@4 [a#3,a#4]@4 [g#3,g#4]@8 [a#3,a#4]@6 [f#3,f#4] [c#3,c#4] [f#3,f#4]@4 [c#4,c#5]@4 [b3,b4]@12 [b3,b4]]/8", // C#m G#m F# C# G# A# F# C# …
  L: "~ [c#4,c#5] [d#4,d#5] [e4,c#5,e5]@6 [e4,c#5,e5]!3 [d#4,b4,d#5]!4", // C# D# C#m G#m
  M: "[[c#4,a#4,c#5]!3 [c#4,c#5]@16 [g#3,g#4]@8 [a#3,a#4]@5]/2", N: "[[c#4,a#4,c#5]!3 [c#4,c#5]@16 ~@13]/2",
})).s("gm_overdriven_guitar").gain(0.3)

// other · pizzicato strings
const pizzicato_strings = note(`<
  A B C D E ~ F G ~@3 H I H J K L M N O B C D E ~ F G ~@3 H I H J K L M N O B P Q ~ R S T U V W X Y Z AA AB AC AD AE AF
  AG AH AI S T U V W X Y Z AA AB AC AD AE AF AG AH AJ AK AL AM ~
>`.pickRestart({
  A: "~@10 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~", B: "~@2 [c#5,f#5,a#5] ~@2 [b4,e5,g#5] ~@4 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~",
  C: "~@2 [c#5,f#5,a#5] ~@2 [b4,e5,g#5] ~@10", D: "~@8 d#6 c#6 a#5 f#5 e5 g#5 b5 e6",
  E: "d#6 ~ [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~@2 [d#5,f#5,b5]!2 ~", // B
  F: "d#6 c#6 a#5 f#5 e5 g#5 b5 e6 ~@2 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~", G: "~@2 [d#5,f#5,b5] ~@2 [c#5,f#5,a#5] ~@10",
  H: "~@2 b4 ~ f#5 ~ b4 ~@3 d#5 ~ f#5 ~ d#5 ~", I: "d#5 b4 b5 d#6 ~ f#5 d#5 c#5 b4 f#4 b4 c#5 f#5 c#5 b4 f#4",
  J: "~@2 f#5 ~ c#5 ~ f#5 ~@3 g#5 ~@3 a#5 ~", K: "~@2 g#5 ~ e5 ~ g#5 ~@3 c#5 ~ f#5 ~ c#5 ~",
  L: "d#5 b4 f#4 d#5 c#5 a#4 f#4 c#5 b4 f#4 b4 c#5 f#5 c#5 b4 f#4",
  M: "b4 d#5 f#5 d#5 b4 a#4 b4 d#5 e5 ~ e5 ~ b4 ~ e5 ~", N: "~@2 e5 ~ b4 ~ e5 ~@3 b5 ~ f#5 ~ b5 ~",
  O: "~@2 b5 ~ f#5 ~ b5 ~@3 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~", // B
  P: "~@2 [c#5,f#5,a#5] ~@2 [b4,e5,g#5] ~@4 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~", // F# E B
  Q: "~@2 [a#4,c#5,f#5] ~@2 [g#4,b4,e5] ~@10", R: "~@5 b4 ~ f#5 ~ b4 ~@3 d#5 ~ f#5",
  S: "~ d#5 ~ d#5 b4 b5 d#6 ~ f#5 d#5 c#5 b4 f#4 b4 c#5 f#5", T: "c#5 b4 f#4 ~@2 b4 ~ f#5 ~ b4 ~@3 d#5 ~ f#5",
  U: "~ d#5 ~@3 f#5 ~ c#5 ~ f#5 ~@3 g#5 ~@2", V: "~ a#5 ~@3 g#5 ~ e5 ~ g#5 ~@3 c#5 ~ f#5",
  W: "~ c#5 ~ d#5 b4 f#4 d#5 c#5 a#4 f#4 c#5 b4 f#4 b4 c#5 f#5",
  X: "c#5 b4 f#4 b4 d#5 f#5 d#5 b4 a#4 b4 d#5 e5 ~ e5 ~ b4", Y: "~ e5 ~@3 e5 ~ b4 ~ e5 ~@3 b5 ~ f#5",
  Z: "~ b5 ~@3 b5 ~ f#5 ~ b5 ~@3 b4 ~ f#5", AA: "~ b4 ~@3 d#5 ~ f#5 ~ d#5 ~ d#5 b4 b5 d#6 ~",
  AB: "f#5 d#5 c#5 b4 f#4 b4 c#5 f#5 c#5 b4 f#4 ~@2 b4 ~ f#5", AC: "~ b4 ~@3 d#5 ~ f#5 ~ d#5 ~@3 f#5 ~ c#5",
  AD: "~ f#5 ~@3 g#5 ~@3 a#5 ~@3 g#5 ~ e5", AE: "~ g#5 ~@3 c#5 ~ f#5 ~ c#5 ~ d#5 b4 f#4 d#5 c#5",
  AF: "a#4 f#4 c#5 b4 f#4 b4 c#5 f#5 c#5 b4 f#4 b4 d#5 f#5 d#5 b4", AG: "a#4 b4 d#5 e5 ~ e5 ~ b4 ~ e5 ~@3 e5 ~ b4",
  AH: "~ e5 ~@3 b5 ~ f#5 ~ b5 ~@3 b5 ~ f#5", AI: "~ b5 ~@3 b4 ~ f#5 ~ b4 ~@3 d#5 ~ f#5",
  AJ: "~ b5 ~@3 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~@3 [c#5,f#5,a#5] ~@2", // B F#
  AK: "[b4,e5,g#5] ~@4 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~@3 [c#5,f#5,a#5] ~@2", // E B F#
  AL: "[b4,e5,g#5] ~@4 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [a#4,c#5,f#5] ~@2", AM: "~ [g#4,b4,e5] ~@14",
})).s("gm_pizzicato_strings").gain(0.3)

// other · alto sax
const alto_sax = note("<~@42 A B C@2 D E F G H@3 I@2 J@2 K@2 L@2 M N O@2 P Q@4 ~@12>".pickRestart({
  A: "~@14 f#4 g#4", B: "b4 c#5 b4 [c#5,d#5] f#5@11 d#5",
  C: "[e5 d#5 ~ [b4,c#5] c#5@2 c#5@3 b4 b4@9 ~@3 g#5 g#5@3 f#5 f#5@2 g#5 f#5@2]/2", // Bsus2
  D: "d#5@2 [g#4,b4,c#5] [f#4,b4] ~@4 c#5 d#5 e5 [d#5,e5] [c#5,d#5] d#5 [d#5,e5] [c#5,d#5], ~@3 c#5@5 ~@8", // C#7 B5 Emaj7 C#sus2 Emaj7 C#sus2
  E: "[c#5,d#5,e5] d#5 f#5 d#5@5 ~ d#5 f#5 d#5 [b4,c#5] c#5@3", // C#m Bsus2
  F: "~@3 f#4 [g#4,a#4,b4] c#5 c#5@3 [g#4,b4] c#5@2 c#5@2 [g#4,b4] c#5", // G#m
  G: "[g#4,b4] c#5 d#5 e5 d#5@5 [b4,c#5] [f#4,g#4,a#4] g#4 b4@4", // G#m Bsus2 F#
  H: "[~@2 d#5 e5 f#5 g#5 g#5@2 f#5 f#5@3 ~ f#6@29 ~@6]/3", I: "[~@4 d#4 d#5 e5 d#5 c#5 b4 g#4 b4@8 ~@13]/2",
  J: "[~@3 g#5 f#5 d#5 b4!2 g#4 b4 b4@3 c#5 g#4@5 ~@13]/2", K: "[~@5 f#5 d#5!2 f#5@4 b5@6 g#5 g#5@8 d#5 e5 d#5@2 ~]/2",
  L: "[c#5 b4 c#5@5 ~ d#5 e5 g#5@2 [g#5,a5] f#5 f#5@5 b5@12 ~]/2", M: "~@13 d#5 f#5 d#5",
  N: "c#5 a#4 b4 f#5@2 g#4 b4@5 ~@5", O: "[~@11 c#5 c#5@6 d#5 b4@8 ~@5]/2", P: "~@11 c#5 [c#5,d#5] b4 c#5!2",
  Q: "[d#5 [b4,c#5] c#5!2 d#5 [b4,c#5] c#5 d#5@2 f#5@11 ~@3 d#5 e5 f#5 f#5@9 f#6@22 ~@7]/4", // Bsus2
})).s("gm_alto_sax").gain(0.45).pan(0.3)

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

// drums · rim
const rim = s("rim").struct("<~@19 A B@10 ~@8 B@3 C ~@34 D E@3 ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2", D: "~@15 x", E: "~@7 x ~@7 x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@11 A@8 ~@11 A@8 ~@5 B@8 C B@3 D B@3 E B@3 F B@3 G H B@3 D B@3 I ~@5>".pickRestart({
  A: "~ x ~ x", B: "~@7 x ~@7 x", C: "~@2 x!2 ~@11 x", D: "~@3 x ~@11 x", E: "~@6 x!2 ~@8", F: "~@7 x ~@3 x ~@4",
  G: "~@7 x ~@5 x ~ x", H: "~@15 x", I: "~@7 x ~@8",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@13 B ~@3 C ~ D ~ D ~@3 E F ~ G ~ G ~@3 H ~ D ~ D ~@9>".pickRestart({
  A: "~@7 x", B: "~ x ~@14", C: "~@9 x!2 ~@5", D: "~@5 x ~@2", E: "~@15 x", F: "x!3 ~@13", G: "~ x ~@6",
  H: "~@7 x!4 ~@5",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@14 A ~@2 B ~@15 A ~@2 B ~@8 C ~ C ~ D ~@3 B ~@7 A ~@8 B ~@9 E F>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~ x ~@14", D: "~@9 x ~@6", E: "~@4 x!12", F: "x!3 ~@13",
})).gain(0.1)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@81 [~@3 x!9 ~@4]>").gain(0.05)

// drums · mid tom
const mid_tom = s("mt").struct("<~@33 A ~@13 B ~@3 C ~ D ~ E ~@3 F ~@2 G ~ H ~@3 I ~ D ~ E ~@9>".pickRestart({
  A: "~@13 x ~@2", B: "x", C: "~ x", D: "~@9 x ~@6", E: "~@8 x!2 ~@6", F: "~@7 x", G: "~ x ~@14", H: "x!2 ~@14",
  I: "~@3 x ~@4",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@11 A ~ A ~ A ~ B C ~@11 A ~ A ~ A ~ B C ~@5 D ~ D ~ D E@2 ~ E ~ E ~ E ~ D F ~ D ~ D ~ D E G ~ E ~ E ~ E ~ D F H ~@5
>`.pickRestart({
  A: "x", B: "~ x", C: "~@3 x", D: "~@3 x ~@12", E: "~@11 x ~@4", F: "~ x ~@14", G: "~@9 x ~@6", H: "~@7 x ~@8",
})).gain(0.35)

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

stack(
  piano, piano_2, bass, overdriven_guitar, pizzicato_strings, alto_sax, kick, rim, snare, hihat, low_tom, open_hat,
// … 2 more lines