Strudelify
Human Touch cover art

1992 · Human Touch

Human Touch

Bruce Springsteen

KeyG majorTempo116 bpm
0:00/0:00
// Human Touch — Bruce Springsteen
// 116 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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 · fretless bass · "Bass"
const bass = note(`<
  A B A B A B A B A B C D E F E F E F C G C H C I C J C G C D E K L F E F E F E F C G C H C I C J C G C D E K L K E K L
  K E K L K M N O P M Q R S T@2 U V U V U V U W E K L K E K L K E F E F E F C G C H C I C J C X C H C I C J C G C G C G
  C G C G C G C G C Y@2 Z@4 K L K E K L K E K L AA ~@2
>`.pickRestart({
  A: "g2@5 ~ g2@2 g2@6 ~@2, d3@13 ~@3", B: "f2@5 ~ c2@6 ~@2 c2@2, c3@13 ~@3", C: "f2@5 ~ f2@2 f2@6 ~@2",
  D: "f2@2 c2@3 ~ g2@6 ~@2 d2@2", E: "g2@5 ~ g2@2 g2@6 ~@2", F: "f2@5 ~ c2@6 ~@2 c2@2", G: "f2@2 c2@3 ~ g2@6 ~@2 e2@2",
  H: "c2@5 ~ c2@2 ~@2 c2@2 ~@2 c2@2", I: "c2@5 ~ c2@2 ~@2 c2@2 a2@2 g2@2", J: "c2@6 c2@4 c2@3 ~ c2@2",
  K: "f2@5 ~ c2@3 ~ c2@2 d2@2 e2@2", L: "g2@5 ~ b2@2 c3@2 b2@2 a2@2 g2@2", M: "a2@5 ~ a2@2 a2@2 a2@3 ~ g2@2",
  N: "f2@5 ~ c2@2 ~@2 c2@2 ~@2 e2@2", O: "g2@5 ~ g2@2 g2@2 g2@3 ~ c2@2", P: "d2@3 d2@2 d2 g2 g#2",
  Q: "~@3 c2 ~ c2 ~ e2, f2@13 ~@3", R: "g2@5 ~ g2@2 g2@2 g2@3 ~ g2@2", S: "f2@5 ~ f2@3 ~ f2@2 g2@2 g#2@2", T: "a2!8",
  U: "f2@5 ~ f2@2 f2@5 ~ f2@2", V: "c2@5 ~ c2@2 d2@2 c2@2 a2@2 g2@2", W: "c2@6 c2@2 c2@5 ~@3",
  X: "f2@2 c2@3 ~ g2@3 ~ g2@2 g2@2 e2@2", Y: "[f2@2 c2@3 ~ [g2,d3]@26]/2", Z: "[g2@24 g2@3 g2 g2@3 ~, d3@29 ~@3]/4",
  AA: "f2@5 ~ c2@3 ~@7",
})).s("gm_fretless_bass").gain(0.52)

// chords · epiano1 · "Piano"
const epiano1 = note(`<
  A B C D A E F G H I J K F E F G F E L M N O P Q P O R S T M C U C V W G F D C G J S T Q P X T Y R K R K C Z W U F B W
  Z C B A U AA D C AB AC I W L AC AD N AE R AE T M T AF C V W Z A B A U H D A I H E AG M T Y P Q T AH R AE R Y R X T AH
  R M P AE R M N M R S P K P S T M F W F AI C Z A V F U A B F U C V AJ@2
>`.pickRestart({
  A: "~@6 [d4,g4]@9 ~, ~ g2@7, ~ b3@3", B: "~ [a3,c4,g4]@3 ~ [g3,c4,e4]@3",
  C: "~@2 g3 b3@4 ~, [g4,b4]@7 ~, d4@5 ~@11, ~ g2@6 ~", D: "[a3,c4,f4]@4 ~ [g3,c4,e4]@3", E: "[a3,c4,f4] [g3,c4,e4]",
  F: "[g3,b3,d4]@9 ~ [g3,b3,d4] ~@5", G: "~ [a3,c4,f4]@3 ~ [g3,c4,e4]@3", H: "a3 b3 a3 g3@5, [g2,d4]",
  I: "~ [a3,c4,f4]@3 [g3,c4,e4]@4", J: "g4 a4 g4 f4@5, [f3,c5]", K: "~ [g3,c4,e4]@3 ~ [g3,b3,d4]@3",
  L: "~@6 [c4,f4]@9 ~, ~ f2@7, ~ a3@3", M: "~ [g3,c4,e4]@3 [g3,b3,d4]@4", N: "[a3,c4,g4]@15 ~",
  O: "~@6 [c4,e4]@9 ~, ~ c3@7, ~ g3@3", P: "~@6 [c4,g4]@9 ~, ~ f2@7, ~ a3@3", Q: "[g3,c4,e4]@9 ~ [g3,c4,e4] ~@5",
  R: "[a3,c4,g4]@9 ~ [a3,c4,g4] ~@5", S: "[g3,c4,e4] [g3,b3,d4]", T: "~@2 f3 a3@4 ~, [g4,a4]@7 ~, c4@5 ~@11, ~ f2@6 ~",
  U: "[a3,c4,g4] [g3,c4,e4]", V: "~ [a3,c4,g4]@3 [g3,c4,e4]@4", W: "[g3,b3,d4]@15 ~", X: "[g3,c4,e4]@15 ~",
  Y: "d4 e4 d4 c4@5, [c3,g4]", Z: "[a3,c4,g4]@4 ~ [g3,c4,e4]@3", AA: "[a3,c4,e4]@9 ~ [a3,c4,e4] ~@5",
  AB: "~@6 [c4,f4]@9 ~, ~ d3@7, ~ a3@3", AC: "~@6 [a3,c4]@9 ~, ~ a2@7, ~ e3@3",
  AD: "~@2 c3 e3@4 ~, [c4,e4]@7 ~, g3@5 ~@11, ~ a2@6 ~", AE: "[g3,c4,e4]@4 ~ [g3,b3,d4]@3", AF: "~ [g3,c4,e4]@3 ~@4",
  AG: "~@2 f3 a3@4 ~, [f4,a4]@7 ~, c4@5 ~@11, ~ f2@6 ~", AH: "~@2 e3 g3@4 ~, [e4,g4]@7 ~, c4@5 ~@11, ~ c3@6 ~",
  AI: "~ [g3,b3,d4]@3 ~@4", AJ: "[[c4,e4,g4,c5]@4 ~@4 [c4,e4,g4,c5]@3 ~@3 [c4,e4,g4,c5]@16 ~@2]/2",
})).s("gm_epiano1").gain(0.22)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  A B C D E F A G A H I J K G E L M N I O P Q R S T U V W X Y Z AA AB AC AD F E AE M H AF O AG AH AI AJ R U R AK T AL Z
  AC AB AM Z AN Z AN Z AA AB AO AP AQ AR AS AP AT AR AU AV AW AX AY P AZ AX BA AX BB C BC M AC K AC A BC A G M BD C BE
  BF BG P AJ V Q X U V W V S R Q X AH X W X J V BH T Y T BI AI BI T AY V AL BJ BK AD BL C BM K BN AD BO K BO C BP C AC
  BQ@2
>`.pickRestart({
  A: "[d4,g4]@2 ~@2 [d4,g4]@3 ~@3 g2@2 b3 ~@3", B: "[c4,g4]@7 ~ [c4,e4]@7 ~", C: "[d4,g4] ~ [d4,g4] ~@5",
  D: "~ [c4,f4]@3 ~ [c4,e4]@3", E: "~@2 g2@2 ~@2 [d4,g4]@7 ~@3, ~ b3 ~@2",
  F: "~@4 [c4,f4]@2 ~@2 [c4,e4]@2 ~@2 [c4,e4]@3 ~", G: "[c4,f4]@2 ~@2 [c4,f4]@3 ~@5 [c4,e4]@2 ~@2",
  H: "~@2 [c4,f4] ~@2 [c4,e4]@3", I: "~@2 f2@2 ~@2 [c4,f4]@7 ~@3, ~ a3 ~@2",
  J: "[c4,e4]@2 ~@2 [c4,e4]@3 ~@5 [d4,g4]@2 ~@2", K: "g2@4 [d4,g4]@3 ~@3 [d4,g4]@2 ~@4",
  L: "[c4,f4]@7 ~ [c4,e4]@2 ~@2 [c4,e4]@3 ~", M: "[d4,g4] ~@3 [d4,g4]@2 ~@2 g2@2 [d4,g4]@2 ~@4",
  N: "~ [c4,f4]@3 ~@2 [c4,e4] ~", O: "~ [c4,e4]@3 ~@2 [d4,g4] ~", P: "f2@4 [c4,g4]@3 ~@3 [c4,g4]@2 ~@4",
  Q: "[c4,e4] ~ [c4,e4] ~@5", R: "~@2 [c4,g4] ~@3 f2 ~ [c4,g4]@7 ~", S: "[c4,e4]@2 ~@2 [c4,e4]@3 ~@3 c3@2 g3 ~@3",
  T: "~ [c4,g4] ~@2 [c4,g4]@3 ~", U: "~@2 c3@2 ~@2 [c4,e4]@7 ~@3, ~ g3 ~@2", V: "~@2 [c4,g4] ~@3 f2@2 [c4,g4]@8",
  W: "[c4,e4]@2 ~@2 [c4,e4]@3 ~ [d4,g4]@2 ~@2 [d4,g4]@3 ~", X: "~ f2 a3 [c4,g4]@4 ~", Y: "~@2 [c4,e4]@6 [d4,g4]@7 ~",
  Z: "~ g2 b3 [d4,g4]@4 ~", AA: "~ [c4,g4]@3 ~ [c4,e4]@3", AB: "~@2 [d4,g4] ~@3 g2@2 [d4,g4]@5 ~@3",
  AC: "~@4 [c4,g4]@2 ~@2 [c4,e4]@7 ~", AD: "[d4,g4,b4] ~@3 [d4,g4,b4]@2 ~@10", AE: "~@4 [c4,f4]@2 ~@2 [c4,e4]@7 ~",
  AF: "[c4,f4]@2 ~@2 [c4,f4]@3 ~@3 f2@2 a3 ~@3", AG: "[c4,g4,a4] ~@3 [c4,g4,a4]@2 ~@10",
  AH: "[c4,e4] ~@3 [c4,e4]@2 ~@2 c3@2 [c4,e4]@2 ~@4", AI: "~@2 [c4,g4] ~@3 f2@2 [c4,g4]@5 ~@3",
  AJ: "c3@4 [c4,e4]@3 ~@3 [c4,e4]@2 ~@4", AK: "~@2 [c4,e4]@6 [d4,g4]@2 ~@2 [d4,g4]@3 ~", AL: "[c4,e4]@7 ~@3 [d4,g4]@6",
  AM: "[c4,g4]@2 ~@2 [c4,g4]@3 ~ [c4,e4]@7 ~", AN: "~@2 [c4,g4]@6 [c4,e4]@7 ~", AO: "[c4,g4]@7 ~@3 [c4,e4]@6",
  AP: "~@2 [a3,c4] ~@3 a2@2 [a3,c4]@8", AQ: "~@2 [c4,f4]@6 [c4,e4]@7 ~", AR: "~@2 [d4,g4] ~@3 g2 ~ [d4,g4]@7 ~",
  AS: "[c4,f4] ~@3 [c4,f4]@2 ~@2 d3@2 [c4,f4]@2 ~@4", AT: "[c4,f4]@7 ~@3 [c4,e4]@6",
  AU: "f2@4 [c4,f4]@3 ~@3 [c4,f4]@2 ~@4", AV: "~@2 [a3,c4] ~@3 a2@2 [a3,c4]@5 ~@3",
  AW: "[g3,c4,e4] ~@3 [g3,c4,e4]@2 ~@10", AX: "~@2 f2@2 ~@2 [c4,g4]@7 ~@3, ~ a3 ~@2", AY: "[c4,e4]@7 ~@5 [d4,g4]@2 ~@2",
  AZ: "~@2 [c4,e4] ~@3 [d4,g4] ~", BA: "~ [c4,e4]@3 ~ [d4,g4]@3", BB: "~@2 [c4,e4] ~@5",
  BC: "[c4,g4]@2 ~@2 [c4,g4]@3 ~ [c4,e4]@2 ~@2 [c4,e4]@3 ~", BD: "[c4,f4]@2 ~@2 [c4,f4]@3 ~ [c4,e4]@2 ~@2 [c4,e4]@3 ~",
  BE: "[c4,f4]@2 ~@2 [c4,f4]@3 ~@3 [c4,e4]@6", BF: "[c4,f4] ~@3 [c4,f4]@2 ~@2 f2@2 [c4,f4]@2 ~@4",
  BG: "~@4 [c4,e4]@2 ~@2 [d4,g4]@2 ~@2 [d4,g4]@3 ~", BH: "~@4 [c4,e4]@2 ~@2 [d4,g4]@7 ~",
  BI: "[c4,e4]@2 ~@2 [c4,e4]@3 ~ [d4,g4]@7 ~", BJ: "[d4,g4]@2 ~@2 [d4,g4]@2 ~@4 g2@2 b3 ~ [d4,g4]@2",
  BK: "~@2 [d4,g4] ~@5 [g3,d4]@6 ~@2", BL: "[d4,g4]@2 ~@2 [d4,g4]@3 ~@9", BM: "~@2 [c4,g4] ~@3 [c4,e4] ~",
  BN: "~ [c4,g4]@3 ~@2 [c4,e4] ~", BO: "~@2 [c4,g4] ~@2 [c4,e4]@3", BP: "~@4 [c4,g4]@2 ~@2 [c4,e4]@2 ~@2 [c4,e4]@3 ~",
  BQ: "[[c4,e4]@6 ~@2 [c4,e4]@4 ~@2 [c4,e4]@13 ~@5]/2", // C
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@27 A B A C D E D ~@15 F G A C H B H B I C J E I E J K ~@9 L M N O G A G P C I C D C I B H ~@15 F N ~@6 O L O L F B O
  B F N F B A G M ~@4 E H B H B H C H E D C I Q@2
>`.pickRestart({
  A: "[e4,c5] [g4,d5]", B: "~ g4@7", C: "~ b4, [g4,d5]", D: "~ c5 ~ c5, [g4,a4] [e4,g4]", E: "[g4,d5]",
  F: "[e4,c5]@2 ~ d5, ~ [g4,b4]", G: "[g4,c5]", H: "~ c5 [e4,c5]@2, [g4,a4] ~", I: "[g4,c5] [e4,c5]",
  J: "[g4,c5]@2 ~ c5, ~ [e4,g4]", K: "[c4,a4]", L: "~ a4, [g4,c5]", M: "~ c5 ~ d5, [e4,g4] [g4,b4]",
  N: "~@8 c5@7 ~, [g4,a4]@15 ~", O: "~ c5 [g4,d5]@2, [e4,g4] ~", P: "~ c5 ~@2, [e4,g4] ~",
  Q: "[e4@6 ~@2 e4@3 ~@3 c5@10 ~@8]/2",
})).s("gm_string_ensemble_1").gain(0.16)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note(`<
  ~@28 A ~@21 B ~@3 C ~ C ~@7 D ~@13 B ~ B ~@7 C ~@29 A ~ A ~@3 A ~@9 C ~ C ~@7 E@2
>`.pickRestart({
  A: "~ c5@7", B: "~ g5", C: "~ d5@7", D: "~ c5", E: "[~@14 e4@11 ~@7]/2",
})).s("gm_string_ensemble_1").gain(0.12)

// chords · acoustic guitar nylon · "Guitar 1"
const acoustic_guitar_nylon_2 = note(`<
  A B A C D E F G H E I J K L M N O L P Q R S R T@2 S U Q U V W X W X K L M N O L P Q R S R T@2 S U Q U V W X W X W X W
  X W X W X Y Z@2 AA AB AC AD AE AF AG AH AI AJ AK AH AI AJ AL W X W X W X W AM K L M N O L P Q R S R T@2 S U Q R S R
  T@2 S U Q U V U Q U V U Q U V U Q U J AN@4 W X W X W X W X W X W X ~@2
>`.pickRestart({
  A: "[g3,b3]@13 ~@3", B: "f3@5 ~ e3@5 ~ f3@2 e3@2, [g3,c4]@13 ~@3", C: "[f3,a3]@5 ~ e3@5 ~ f3@2 e3@2, ~@3 g3@5",
  D: "[g3,b3]@3 ~@5 [d4,g4]@4 ~@4", E: "[f4,a4]@2 ~@4 e4@3 ~ e4@5 ~", F: "[b3,d4]@5 ~@3 [d4,g4]@2 ~@6",
  G: "[f4,a4]@2 ~@4 [e4,g4]@5 ~ f4@2 e4@2", H: "[b3,d4]@3 ~@5 [d4,g4]@3 ~@5",
  I: "[a3,c4]@3 ~@5 [c4,f4]@2 ~@2 [c4,f4]@3 ~", J: "[c4,f4]@2 [c4,e4]@3 ~ [d4,g4]@10", K: "[b3,d4] ~@3 [d4,g4] ~@3",
  L: "[f4,a4]@2 ~@4 e4@3 ~@7", M: "[b3,d4]@2 ~@6 [d4,g4]@3 ~ [d4,g4]@3 ~", N: "[f4,a4]@2 ~@4 e4@5 ~ f4@2 e4@2",
  O: "[b3,d4]@2 ~@6 [d4,g4]@3 ~@5", P: "[a3,c4]@2 ~@6 [c4,f4]@3 ~ [c4,f4]@3 ~",
  Q: "[c4,f4]@2 [c4,e4]@3 ~ [d4,g4]@6 ~@2 [g3,c4]@2", R: "[g3,a3,c4]@3 ~@5 [g4,a4]@2 ~@6",
  S: "[e4,g4]@2 ~@4 [e4,g4]@3 ~ [e4,g4]@5 ~", T: "[[e4,g4]@2 ~@4 [e4,g4]@3 ~@5 [f4,a4]@5 ~@5 [g4,a4]@6 ~@2]/2",
  U: "[g3,a3,c4]@3 ~@5 [c4,g4]@2 ~@6", V: "[c4,f4]@2 [c4,e4]@3 ~ [d4,g4]@3 ~@7", W: "[g3,d4,g4]@13 ~@3",
  X: "[a3,c4,g4]@5 ~ [g3,c4,g4]@10", Y: "[c4,e4,a4]@3 ~ [c5,e5]@3 ~ [c5,e5]@3 ~ [c5,e5]@3 ~",
  Z: "[[c5,f5]@2 ~@4 [g4,c5]@3 ~@5 [g4,b4]@10 ~@2 [g4,b4]@3 ~@3]/2", AA: "[a4,c5]@2 ~@4 [f4,a4]@3 ~ [f4,a4]@6",
  AB: "~@2 [e4,a4]@5 ~@5 [c5,e5]@3 ~", AC: "[c5,f5]@2 ~@4 [g4,c5]@3 ~@5 [a4,c5]@2", AD: "[g4,b4]@6 ~@6 [g4,b4]@3 ~",
  AE: "[a4,c5]@2 ~@4 [f4,a4]@3 ~ [f4,a4]@3 ~ [e4,a4]@2", AF: "~@2 [e4,a4]@11 ~@3",
  AG: "[a4,c5]@2 ~@6 [c5,e5]@3 ~ [c5,e5]@3 ~", AH: "~@2 a4!5 g4, [f3,g3,c4]@4 [f3,g3,c4]@3 ~",
  AI: "[c4,f4,a4]@2 [e4,g4]@3 ~ [d4,g4,b4]@6 ~@2 [g3,c4]@2, [e3,g3]@13 ~@3, ~@2 c4@11 ~@3", // F Em G C5 Em
  AJ: "~@2 a4!2 [g4,a4] a4!2 g4, [f3,g3]@13 ~@3, c4@8 c4@5 ~@3", // Gsus2 Fsus2
  AK: "[c4,f4,a4]@2 [e4,g4]@3 ~ [d4,g4,b4]@2 ~ a4 g4@5 ~, [e3,g3]@13 ~@3, ~@2 c4@11 ~@3", // F Em G Em
  AL: "[c4,f4,a4]@2 [c4,e4,g4]@3 ~ [d4,g4,b4]@2 ~ a4 d4@2 a#3 a3 g3@2, [e3,g3]@6 ~@2 [g3,c4,e4]@2 g4@5 ~", // F C G Em C
  AM: "[a3,c4,g4]@5 ~ [g3,c4,g4]@5 ~ [g3,c4]@3 ~", AN: "[d3,g3,b3,g4]@13 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// drums · kick
const kick = s("bd").struct("<A@48 B A@49 B A@13 B A@14 B A@17 ~>".pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x!2 ~@3",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct(`<
  A@3 ~ A@7 ~ A@8 ~ A@5 B A B A@4 B A@8 B A@5 B A ~ A@13 B A@3 B A B A@2 B A@3 B A@3 B A@7 ~ A@8 B A@5 B A B A@5 B A@3 ~
  A@3 B A@3 B A@2 B A@3 B A@3 B A@3 B A@3 B@2 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.45)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@48 A ~@49 A ~@13 A ~@14 A ~@18>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.25)

// drums · clap
const clap = s("cp").struct(`<
  ~@3 A ~@7 A ~@8 A ~@5 A@7 B ~@8 A ~@5 B A@16 ~@3 A ~ A ~@2 A@17 ~@8 B ~@5 A@3 ~@5 B A@14 B ~@3 A@14 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@64 A ~@3 A ~ A ~@2 A ~@50 A ~@10 A ~@10>".pickRestart({
  A: "~@7 x",
})).gain(0.4)

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

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@7 A ~@8 A ~@29 A ~@13 B ~@3 B ~ B ~@2 B ~@15 A ~@26 A ~@7 B ~@10 B ~@10
>`.pickRestart({
  A: "~@3 x ~ x ~@2", B: "~@5 x ~@2",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@2 B ~ A ~ A ~ A ~ B ~ A@2 B ~ A ~ A B ~ A C A@2 D ~@5 A@2 ~ A ~ A ~ A ~ A ~@2 A ~ A ~ B ~ B ~@3 A ~@3 B ~@2 D A
  ~@3 A ~@5 A ~@4 B ~@7 A ~@3 B ~ A ~ A ~ A@2 B@2 ~ A ~ A ~@5 A ~ A C B ~ A ~ B ~@3 D ~ A D ~@3 B ~ A ~@3 A ~@5 D ~ A ~
  D E ~
// … 54 more lines

More by Bruce Springsteen