Strudelify

Look Out Any Window

Bruce Hornsby

KeyE majorTempo111 bpm
0:00/0:00
// Look Out Any Window — Bruce Hornsby
// 111 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 7 "Bass" named as a bass, played on electric bass finger (its contrabass patch is not one)
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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 · "Piano-Right Hand"
const piano = note(`<
  ~@8 A B C D E F G H I F J K L M N@2 O M N@2 O P Q R S P Q R T U V W H X V Y Z M N@2 O M N@2 O P Q R AA P Q R T U V W H
  X V Y AB AC AD@2 AE AF AG@3 AH AI@2 AJ AK AL@2 AM P Q R AA P Q R T U V W H X V Y AN U V W H X V W H X V W H X V W H AO
  AP AQ AR AO AP AS AT AU AV AW AX AO AP AQ AY AZ ~
>`.pickRestart({
  A: "[b3,e4]@3 [b3,f#4]@4 [e3,b3]", B: "[e3,b3]@3 [b3,f#4]@5", C: "[b3,e4]@3 [b3,f#4]@4 [f#3,g#3,c#4]",
  D: "[f#3,g#3,c#4]@6 [e3,b3]@2 [e3,b3]@6 [e3,f3,f#3,g3,g#3,a3,a#3,b3,c4] [c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,b4,c5]", // F#sus2 E5
  E: "[c#5,d5,d#5,e5,b5] ~ [f#5,b5] ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~", // B5
  F: "[g#5,b5] ~ [f#5,b5] ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~", // G#m B5
  G: "[e5,b5] ~ [f#5,b5] ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~ [f#5,b5] ~ [e5,a5] ~", // E5 B5 A5
  H: "[e5,a5] ~ [e5,g#5] ~ [e5,g#5]@3 ~ [e5,g#5] ~ [e5,f#5] ~ [e5,f#5] ~ [b4,e5] ~", // A5 E Esus2 E5
  I: "[e5,b5] ~ [f#5,b5] ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~", // E5 B5
  J: "[e5,b5] ~ [f#5,b5] ~ [f#5,b5]@3 ~ [f#5,b5]@3 ~ [f#5,b5]@4", // E5 B5
  K: "[e5,f#5]@3 ~ [e5,f#5]@3 ~ [e5,f#5]@3 ~ [e5,f#5]@3 ~", // Esus2
  L: "[d#5,f#5]@3 ~ [d#5,f#5]@3 ~ [b4,c#5,f#5]@3 ~ [b4,c#5,f#5]@3 ~", M: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@2",
  N: "[g#3,b3,e4,f#4]@3 [g#3,b3,e4,f#4]@3 [g#3,b3,e4,f#4]@2", O: "[a#3,c#4,f#4]@3 [g#3,b3,e4,f#4]@3 [g#3,b3,e4,f#4]@2",
  P: "[b3,d#4,f#4]@3 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@3", Q: "[b3,d#4,f#4]@3 [b3,e4,g#4]@2 [b3,d#4,f#4]@3",
  R: "[g#3,b3,e4]@3 [g#3,b3,e4]@2 [g#3,b3,e4]@3", S: "[g#3,b3]@3 [g#3,b3]@2 [g#3,b3]@3",
  T: "[a#3,c#4,f#4]@6 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [e3,f3,f#3,g3,g#3,a3,a#3,b3,c4] [c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,b4,c5]", // F#
  U: "[b4,c#5,d5,d#5,e5] ~ [b4,f#5] ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~", // B5
  V: "[b4,g#5] ~ [b4,f#5] ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~", // E B5
  W: "[b4,e5] ~ [b4,f#5] ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~ [b4,f#5] ~ [e5,a5] ~", // E5 B5 A5
  X: "[b4,e5] ~ [b4,f#5] ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~", // E5 B5
  Y: "[c#5,f#5,a5]@3 ~ [b4,c#5,f#5]@3 ~ [a4,b4,c#5]@3 ~ [f#4,a4,b4]@3 ~", // F#m Bsus2 A B7
  Z: "[e4,f#4,g#4]@3 ~ [e4,f#4,g#4]@3 ~ [e4,f#4,g#4]@3 ~ [e4,f#4,g#4]@3 ~", // E
  AA: "d#4 c#4@2 c#4!2 [g#3,b3]@3, [g#3,b3]@3 [g#3,b3]@2 ~@3", // G#m
  AB: "[e4,f#4,g#4]@3 ~ [e4,f#4,g#4]@3 ~ [e4,f#4,g#4]@3 ~@2 e5 a5 b5, ~@12 [e4,f#4,g#4]@3 ~", // E
  AC: "[e5,a5,e6]@2 [e5,e6] [e5,e6]@2 [e5,e6] [e5,a5,e6]@2 [e5,e6] [e5,e6]@2 [e5,e6] [e5,e6]@2 [f#5,f#6]!2", // A5 E A5 E F#
  AD: "[[f#5,d6,f#6]@2 [e5,e6] [e5,e6]@3 [d5,d6]@2 [c#5,c#6]@2 [b4,b5] [a4,a5]!2 e5@2 e5@2 ~ a4 d5 ~ [a4,a5]@2 e5 e4 a4 b4 e5@3 b4 a4, ~@20 e5@3 ~@9]/2", // D E D C# B A
  AE: "[f#4,d5]@2 [f#4,d5] [e4,c#5]@3 [e4,c#5]@2 [f#4,b4]@2 [f#4,b4] [e4,a4]@3 [e4,a4]@2, ~@8 f4 ~@7", // D C#m B5 A5
  AF: "~@2 a4!4 a5@2 a4@2 f#5 e5 d5 c#5 b4 a4",
  AG: "[d5@2 c#5 b4@2 a4!2 b4 [e4,c#5]@2 a4 e4@3 e4 e4@3 [f#4,f#5] [f#4,f#5]@3 [a4,a5] [a4,a5]@3 [b4,b5] [b4,b5]@3 [c#5,c#6] [c#5,c#6]@2 c#5 a4 b4 c#5 d5 f#5 d5 e5 f#5 g5 a5 b5 d6 e6 f#6]/3", // C#m F# A B C#
  AH: "[a5,e6,a6]@2 [a5,e6,a6] [a5,e6,a6]@2 [a5,e6,a6] [a5,e6,a6]@2 [a5,e6,a6] [a5,e6,a6]@2 [a5,e6,a6] [a5,e6,a6]@2 [b5,f#6,b6]!2", // A5 B5
  AI: "[[b5,f#6,b6]@2 [a5,e6,a6]!2 [a5,e6,a6]@2 [f#5,d6,f#6]!2 [f#5,d6,f#6]@2 [e5,b5,e6] [e5,b5,e6]@2 [f#5,c#6]@2 [f#5,c#6]@2 [e5,b5]@3 [f#5,b5]@2 [e5,a5]@2 [e5,c#6]@2 [e5,c#6] [e5,d6] ~ [e5,a5,d6]@2 [d5,g5,c#6], ~@24 b5 ~@7]/2", // B5 A5 D E5 F#5 E5 B5 A5 …
  AJ: "~ [d5,g5,c#6]@2 [d5,g5,b5]@2 c#6 b5 [e5,a5]@3 f#5@2 [e5,a5]@4", AK: "~@2 b5@2 c#6 a5@3 a5@2 b5 e5@3 f#5 g5",
  AL: "[f#5 e5 f#5 e5 d5 e5 f#5 a4@2 e4 a4 b4 c#5@2 a4 e4@3 [f#4,b4]@2 [f#4,b4] [f#4,b4]@2 [f#4,b4]@3 [f#4,b4] [e4,a4]@3 [f#4,a4,d5]!2, ~@18 e4 ~@13]/2", // B5 A5 D
  AM: "[f#4,a4,d5] [e4,a4,c#5] [a4,c#5] [g#4,b4] [e4,g#4,b4] [d#4,f#4]!2 [c#4,e4], ~ e4 ~@2", // D A G#m E D#m C#m
  AN: "[e4,f#4,g#4]@4 [e4,f#4,g#4]@4 [b3,e4,f#4]@4 [g#3,b3,e4]@2 [e3,f3,f#3,g3,g#3,a3,a#3,b3,c4] [c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,b4,c5]", // E Bsus4 E
  AO: "d#4 e4 f#4!2 ~ f#4!11", AP: "[e4,g#4] ~ [e4,f#4]!2 ~ f#4!11", AQ: "d#4 e4 f#4!2 ~ f#4!8 ~ [e4,a4]!2",
  AR: "[e4,a4] ~ [e4,g#4]!3 ~ [e4,g#4]!2 g#4 ~ [e4,f#4]!3 ~ [b3,e4]!2", AS: "d#4 e4 f#4!2 ~ f#4!7 [b3,f#4] ~ [e5,a5]!2",
  AT: "[e5,a5] ~ [e5,g#5]!3 ~ [e5,g#5]!3 ~ [e5,f#5]!3 ~ [b4,e5]!2", AU: "d#5 e5 f#5!2 ~ f#5!11",
  AV: "[e5,g#5] ~ [e5,f#5]!2 ~ f#5!11", AW: "d#5 e5 f#5!2 ~ f#5!8 ~ [e5,a5]!2",
  AX: "[e5,a5] ~ [e5,g#5]!3 ~ [e5,g#5]!3 ~ [e5,f#5]!3 ~ e5!2", // A5 E Esus2
  AY: "[e4,a4] ~ [e4,g#4]!3 ~ g#4 [e4,g#4]!2 ~ [e4,f#4]!3 ~ [b3,e4]!2", AZ: "[f#3,b3,d#4]",
})).s("gm_piano").gain(0.31).pan(0.4)

// chords · piano · "Piano-Left Hand"
const piano_2 = note(`<
  ~@8 A B C D E F E G E F E H I J K@2 L J K@2 L M@2 N@2 M@2 N O E F E G E F P Q J K@2 L J K@2 L M@2 N@2 M@2 N O E F E G
  E F P Q R S T U T U T V T U T W X S T Y M@2 N@2 M@2 N O E F E G E F Z AA E F E G E F E G E F E G E F E G E F E G E F E
  G E F E G E F E G AB ~
>`.pickRestart({
  A: "[g#2,e3]@3 [b2,f#3]@4 [e2,b2]", B: "[e2,b2]@3 [b2,f#3]@5", C: "[g#2,e3]@3 [f#2,b2]@4 [f#2,c#3], ~@3 b1@5",
  D: "[f#2,c#3]@3 [e2,b2] [e2,b2]@4", E: "[g#2,e3,g#3]@3 [b2,f#3]@5", F: "[e2,b2,e3]@3 [b2,f#3]@5",
  G: "[f#2,c#3,f#3]@3 [e2,b2,e3]@5", H: "[e2,b2,e3]@3 [e2,b2,e3]@5", I: "[e3,g#3,b3]@3 [e3,g#3,b3]@5",
  J: "[b2,f#3]@3 [b2,f#3]@5", K: "[e2,b2]@3 [e2,b2]@5", L: "[f#2,c#3]@3 [e2,b2]@5",
  M: "[f#2,f#3]@3 [f#2,f#3]@2 [f#2,f#3]@3", N: "[e2,e3]@3 [e2,e3]@2 [e2,e3]@3",
  O: "[f#2,f#3]@3 [f#2,f#3]@2 ~ [f#2,f#3]!2", P: "[f#3,b3,c#4]@11 ~@5", Q: "[e2,b2,f#3]@11 ~@5",
  R: "[f#3,a3,b3,d4]@3 [a2,e3,a3]@3 a3@2", S: "[d3,a3,d4]@3 [a2,a3]@3 a3@2", T: "[f#3,a3,d4]@3 [a2,e3,a3]@3 a3@2",
  U: "[d3,a3]@6 [d3,a3]@6 a3@3 ~", V: "[e3,g3,a3,b3,d4]@3 d2@5", W: "[e3,g3,a3,b3,d4]@3 [d3,a3]@3 d4@2",
  X: "[f#3,a3,d4,e4]@3 [a2,e3,a3]@3 a3@2", Y: "[d2,a2,d3]!2 [e2,b2,e3]@2", Z: "[f#3,b3,c#4]", AA: "[e2,b2,f#3]",
  AB: "[b2,f#3]", // B5
})).s("gm_piano").gain(0.31).pan(0.6)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@12 A B A C D E D F@2 ~@8 G H I J G H K L A B A C A B M N O P Q R O P Q R G H I J G H K L A B A C A B M N ~@16 G H I
  J G H K L A B A C A B M N A B A C A B A C A B A C A B A C A B A C A B A C A B A C A S ~@4
>`.pickRestart({
  A: "[e3,g#3]@3 [b2,f#3]@5", B: "[b2,e3]@3 [b2,f#3]@5", C: "[c#3,f#3]@3 [b2,e3]@5",
  D: "[e3,g#3,b3]!3 [b2,f#3,b3]@2 [b2,f#3,b3]!3", // E B5
  E: "[e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [b2,f#3,b3]@4 [b2,f#3,b3]!6", F: "[e3,b3]/2",
  G: "[b2,f#3]@3 [c#3,f#3]@2 [c#3,f#3]@3", H: "[b2,f#3]@3 [b2,e3]@2 [b2,f#3]@3", I: "[b2,e3]@3 [b2,e3]@2 [b2,e3]@3",
  J: "d#3 c#3@2 c#3!2 b2@3", K: "[b2,e3]@3 [b2,e3]@2 [e2,b2]@3", L: "~@7 [f#2,c#3]!2 ~ [f#2,c#3] ~ [f#2,c#3]!4",
  M: "[f#2,c#3]", N: "[e2,b2]", O: "[b2,f#3]@3 [b2,f#3]@2 [b2,f#3]!3", P: "[e2,b2]@3 [e2,b2]@2 [e2,b2]!3",
  Q: "[e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2] [e2,b2]@2 [e2,b2]", // E5
  R: "[f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [e2,b2]@2 [e2,b2]!4 [e2,b2]@2 [f#2,c#3]@2", S: "[b2,e3]@3 ~@5",
})).s("gm_electric_guitar_clean").gain(0.36).pan(0.1)

// chords · electric guitar clean · "Guitar" · soft notes
const electric_guitar_clean_2 = note("<~@36 A ~@23 A ~@31 A ~@37 B C D E ~>".pickRestart({
  A: "[f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~ [f#2,c#3] ~@9", B: "~@3 [b2,f#3]@5", C: "[e3,g#3]@3 [b2,f#3]@5",
  D: "[c#3,f#3]@3 [b2,e3]@5", E: "[b2,f#3]",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.1)

// other · electric guitar muted · "Guitar"
const electric_guitar_muted = note("<~@2 A B@2 C@2 D ~@127>".pickRestart({
  A: "~ g#3 b3@4 c#4@3 b3@3 c#4@4", B: "[~ b3@5 c#4@2 ~@16 d#3@5 c#3@3, ~@8 f#3@21 ~@3]/2",
  C: "[d#3 c#3@4 b2 c#3 b2@4 b2 ~ g#2@5 e3@4 g#3 f#3@2 ~@3 b3@4, ~@25 g#3@5 ~@2]/2", D: "~ f#4@15",
})).s("gm_electric_guitar_muted").gain(0.36).pan(0.1)

// other · electric guitar muted · "Guitar" · soft notes
const electric_guitar_muted_2 = note("<A@2 ~@133>".pickRestart({
  A: "[~@10 g#2@3 b2@5 c#3 d#3 c#3@4 b2 f#3@7]/2",
})).s("gm_electric_guitar_muted").gain(0.2).pan(0.1)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@12 A B A C A B A D E F D@2 C F D@2 C G@2 H@2 G@2 H I A B A C A B J K F D@2 C F D@2 C G@2 H@2 G@2 H I A B A C A B J K
  L@3 M L@3 N L@3 O L@3 P G@2 H@2 G@2 H I A B A C A B J Q A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A
  C R S
>`.pickRestart({
  A: "g#1@3 b1@5", B: "e1@3 b1@5", C: "f#1@3 e1@5", D: "e1@3 e1@5", E: "e2@3 e2@5", F: "b1@3 b1@5",
  G: "f#1@2 f#2 f#1 f#1@2 f#2 f#1", H: "e1@2 e2 e1 e1@2 e2 e1", I: "f#1@2 f#2 f#1 f#2 f#1 f#2 f#1", J: "f#2", K: "e1",
  L: "d2@3 a1@3 a2@2", M: "d2@3 d2@3 a2@2", N: "e2@3 d1@3 d2@2", O: "e2@3 d2@3 d1@2", P: "d2!2 e1@2", Q: "e2", R: "b1",
  S: "b1 ~@15",
})).s("gm_electric_bass_finger").gain(0.41).pan(0.4)

// chords · pad halo · "Synth-Right Hand"
const pad_halo = note(`<
  ~@2 A B@2 C@2 D ~@21 E F G H E F G I J K J L J K ~@10 E F G H E F G I J K J L J K ~@2 M N O@2 M N M P M Q M R M N M S
  E F G H E F G I J K J L J K ~@2 J K J L J K J L J K J L J K J L J K J L J K J L J K J L J ~@5
>`.pickRestart({
  A: "~@6 c#5@3 [e4,b4]@3 c#5@4", B: "[~ b4@5 c#5@2 f#4@21 ~@3]/2",
  C: "[d#4 c#4@4 b3 c#4 b3@4 b3 ~ g#3@5 e4@4 g#4 [a3,b3,f#4]@2 ~@3 [b3,b4]@4, ~@25 g#4@5 ~@2]/2", D: "~ [f#4,f#5]@15",
  E: "d#4@3 c#4@5", F: "d#4@3 e4!2 d#4@2 c#4", G: "c#4@3 b3@5", H: "d#4 c#4@2 c#4!2 b3@3", I: "f#4!8 [f#4,f#5]!8",
  J: "~@2 [f#4,b4] [f#4,b4]@5", K: "[e4,b4] [d#4,b4]@3", L: "[e4,b4] [e4,b4]@3", M: "b3@3 a3@5", N: "f#3@3 e3@5, a3",
  O: "[~ f#3, a3]/2", P: "g3@3 f#3@5, a3", Q: "f#3@5 e3@3, a3", R: "[g3,a3]", S: "[d2,a2,d3]!2 [e2,b2,e3]@2",
})).s("gm_pad_halo").gain(0.41).pan(0.4)

// chords · pad halo · "Synth-Right Hand" · soft notes
const pad_halo_soft = note("<A@2 B ~@127 C D E F ~>".pickRestart({
  A: "[~@10 g#3@3 b3@5 c#4 d#4 c#4@4 b3 f#4@7]/2", B: "~ g#4 b4@4 ~@10", C: "[e4,b4] [d#4,b4]@3",
  D: "~@2 [f#4,b4] [f#4,b4]@5", E: "[e4,b4] [e4,b4]@3", F: "[d#4,f#4,b4]",
})).s("gm_pad_halo").gain(0.2).pan(0.4)

// other · pad halo · "Synth-Left Hand"
const pad_halo_2 = note(`<
  ~@2 A@5 B ~@21 C@2 D@2 C@2 D E F G F H F G I D J K@2 H J K@2 H C@2 D@2 C@2 D C F G F H F G I D L M L N L M L O L P L O
  L M L Q C@2 D@2 C@2 D C F G F H F G I D F G F H F G F H F G F H F G F H F G F H F G F H F G F H F ~@5
>`.pickRestart({
  A: "[~@9 a3@5 g#3@5 [e2,f#3]@5 ~@16 [f#3,b3,d#4]@5 [e3,b3,c#4]@5 [e2,b2,e3]@21 [f#2,e3]@5 [e2,e3]@4, ~@9 f#2@10 ~@5 [b2,f#3]@15 ~@41, ~@30 b1@21 ~@29]/5", // Esus2 B C#m7 E5 F#7 E B5
  B: "~ [e3,g#3,d#4]@6 [e3,g#3,c#4]@9", C: "f#2", D: "e2", E: "[f#1,f#2]", F: "g#2@3 b2@5", G: "e2@3 b2@5",
  H: "f#2@3 e2@5", I: "f#3", J: "b2", K: "e2/2", L: "[f#2,d3]@3 [a2,e3]@5", M: "[d2,a2]@3 [a2,e3]@5", N: "[d2,a2]",
  O: "[e2,b2]@3 [d2,a2]@5", P: "[d2,a2]@5 [a2,e3]@3", Q: "[d2,a2,d3]!2 [e2,b2,e3]@2",
})).s("gm_pad_halo").gain(0.41).pan(0.7)

// other · pad halo · "Synth-Left Hand" · soft notes
const pad_halo_soft_2 = note("<A@3 ~@127 B C D E ~>".pickRestart({
  A: "[[b1,f#2,b2]@20 [e2,b2,e3]@21 ~@7]/3", B: "e2@3 b2@5", C: "g#2@3 b2@5", D: "f#2@3 e2@5", E: "[b1,f#2,b2]",
})).s("gm_pad_halo").gain(0.15).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@12 A@8 B A@3 B A@3 B A@19 B A@3 B A@31 B A@48 C D>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x!2 ~ x ~", C: "x ~@2 x ~@6 x ~@3 x ~", D: "x",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@12 A@8 B A@3 B A@3 B A@19 B A@3 B A@31 B A@48 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.51)

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

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@97 x ~@30 [~@12 x!4] ~@3 [~@12 x!4] ~@2>").gain(0.26)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@16 A@4 B A@3 B A@3 B A@7 B A@6 ~ B A@3 B A@3 B A@7 B A@6 ~ B A@15 B A@7 B A@6 ~ B A@32 ~@2
>`.pickRestart({
  A: "x!16", B: "~@13 x!3",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@15 A B@2 C@2 D C@3 D C@3 D C@7 A ~@3 E ~@4 C@3 D C@3 F C@7 A ~@3 A ~@19 F C@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@10
>`.pickRestart({
  A: "~@6 x!3 ~ x ~@5", B: "x ~@2 x ~@4", C: "x!2", D: "x ~@3 x!4", E: "~@6 x!3 ~ x ~@2 x ~@2", F: "~@4 x!4",
})).gain(0.51)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@128 [~@6 x!3 ~ x ~@5] ~@3 [~@6 x!3 ~ x ~@5] ~@2>").gain(0.31)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@20 A ~@3 A ~@3 A ~@7 A ~@6 B C ~@3 A ~@3 A ~@7 A ~@6 B C ~@15 C ~@7 A ~@6 B A ~@34
>`.pickRestart({
  A: "x!7 ~", B: "x!4", C: "x ~ x ~ x!3 ~",
})).gain(0.41)

// … 8 more lines

More by Bruce Hornsby