Strudelify

Money Is

Corduroy

KeyE majorTempo135 bpm
0:00/0:00
// Money Is — Corduroy
// 135 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 153 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · electric bass finger · "Fingered B"
const bass = note(`<
  A B@6 C D@2 E@2 D@2 F G@2 A H I J K L I M N@2 O P Q R S@2 T@2 D@2 E@2 D@2 F U I J K L I M N@2 O P Q R S@2 T@2 A B@14 V
  D@2 E@2 D@2 F U I J K L I M N@2 O P Q R S@2 T@2 W@2 X@2 W@2 Y U I J K L I M N@2 I J K L I M N@2 I J K L I M N@2 I J K
  L I M N@2 A B@10 Z@3
>`.pickRestart({
  A: "d2@2 e2!6 g2@2 e2!6", B: "[d2@2 e2!6 a#1@2 a1@2 g1@2 e1@4 e2!6 g2@2 e2!6]/2", C: "d2@2 e2!6 a#1@2 a1@2 g1@2 e1@2",
  D: "[e1@13 e2 g2@2]/2", E: "[e2@9 ~ e1 a1@2 a1 g1@2]/2", F: "e2", G: "[~@15 b1, [e2,e3]]/2",
  H: "d2@2 e2!6 e1!2 e2@2 d#2@2 d2@2", I: "c#2@2 c#2 ~ c#3@2 c#2 b2 ~ b2 g#2@2 f#2 ~ e2@2",
  J: "a1@3 a1!2 e2 g2 a2 ~ a2 g2@2 e2 d2 c2@2", K: "c2@4 c2 ~@2 c2 d2 ~ d2@4 e2@2",
  L: "~@2 e2@2 e2 a2 b2 e3@2 e3 d3@2 b2 a2 g2 d2", M: "a1 d3 e3@2 ~ d3 e3@2",
  N: "[f#1@2 c#2 ~ e2@2 c#2 e2 f#2@2 e2 ~ c#2 ~ b1@4 e2 ~ f#2@2 e2 f#2 b2@2 a2 ~ f#2@2 b1@2]/2", O: "e2 ~@13 e2@2",
  P: "g#2 ~@11 g#2@4", Q: "a2 ~@13 a2@2", R: "a#2@2 f#1@4 c#2 e2 f#2@2 e2 ~ c#2@2 a1@2",
  S: "[b1@4 b2@3 g#1 b1 ~ b1@2 c2@2 c#2@4 b2@2 c#3 b2 g#2@2 c#2 b1 g#1@2 b1 c2 c#2@2]/2",
  T: "[f#1@4 f#2@3 f#1 b1 ~ b1@2 c#2@2 e2@4 b1@4 c2@4 c#2@4 d2@2]/2", U: "a1 ~ a1@4 g#1@4 e2@2 d#2@2 d2@2",
  V: "e2 ~ c2@4 c#2@4 d2@4 d#2@2", W: "[e1@25 ~ e1@2 g1@4]/2", X: "[e1@19 ~ e1@2 a1@3 ~ a1@2 g1@4]/2", Y: "e1",
  Z: "[d2@2 e2!6 a#1@2 a1@2 g1@2 e1@34]/3",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · rock organ · "Hammond"
const rock_organ = note(`<
  ~@16 A B ~@13 C D@3 E F G@2 E H I J ~@12 C D@3 ~@23 J ~@12 C D@3 ~@7 J ~@16 K L M@2 N@3 O N@3 O N@3 O ~@14
>`.pickRestart({
  A: "~@7 [b3,b4]", B: "[d4,d5] [e4,e5] ~@6", C: "[e4,f#4,b4]", D: "[[e4,g#4,c#5]@4 [e4,f#4,b4] [e4,g#4,b4]@3]/3",
  E: "e3@2 ~@4 g3@8 e3 d3", F: "e3@2 d3 ~ b2 ~ b2@4 d3@2 e3@2 g3 ~",
  G: "[a3@2 a#3@2 a3@2 g3@2 e3 ~@3 e3@2 d3@10 ~@2 b2@2 d3@4]/2", H: "e3@2 d3 ~ b2 ~ b2@4 d3@2 e3@2 g3@2",
  I: "a3@2 a#3 ~ a3@2 g3 ~ e3@2 ~@2 e3@2 ~@2", J: "a3 ~ a3@4 g#3@4 ~@6",
  K: "g#5@2 c#6 g#5@2 c#6 g#5@2, g5 ~@5 g5 ~@5 g5 ~@3", L: "c#6@2 g#5@4 c#6@2 e6@2 c#6@2 b5 c6 c#6@2, ~@2 g5 ~@13",
  M: "[e6@2 c#6 ~ e6@2 f#6 ~ g6 f#6 e6@2 b5 ~ e6@14 ~@4]/2", N: "[e5,g#5,c#6]/3", O: "[b4,f#5,b5]",
})).s("gm_rock_organ").gain(0.2).pan(0.9)

// other · clavinet · "Clav"
const clavinet = note(`<
  A B@2 C@4 D@2 E F@2 G H I J K L M N O P@2 Q O R S T U V W X Y Z AA G E F@2 G H I AB N O P@2 Q O R S T U AC W X Y Z AA
  A B@2 C@12 AD ~@7 AE AF O P@2 Q O R S T U V W X Y Z AG AH@2 AI@2 AH@2 AJ ~ N O P@2 Q O R S AK O P@2 Q O R@2 AL O P@2 Q
  O R@2 AL O P@2 Q O R@2 AM C@10 AN@3
>`.pickRestart({
  A: "[d1,d2]@2 [e1,e2]!6 [g1,g2]@2 [e1,e2]!6", // D E G E
  B: "[[d1,d2]@2 [e1,e2]!6 a#1@2 a1@2 g1 ~ [e1,e2]@4 [e1,e2]!6 [g1,g2]@2 [e1,e2]!6]/2", // D E G E
  C: "[[d1,d2]@2 [e1,e2]!5 e2 a#1@2 a1 ~ g1@2 e1@4 [e1,e2]!6 [g1,g2]@2 [e1,e2]!6]/2", // D E G E
  D: "[[d1,d2]@2 [e1,e2]!5 e2 a#1@2 a1 ~ g1@2 ~@2 e2@2 ~@4 g2@8 e2 d2, ~@7 e1@2 ~@7]/2", // D E
  E: "e2@2 d2 ~ b1 ~ b1@4 d2@2 e2@2 g2 ~", F: "[a2@2 a#2@2 a2@2 g2@2 e2 ~@3 e2@2 d2@10 ~@2 b1@2 d2@4]/2",
  G: "e2@2 ~@4 g2@8 e2 d2", H: "e2@2 d2 ~ b1 ~ b1@4 d2@2 e2@2 g2@2", I: "a2@2 a#2 ~ a2@2 g2 ~ e2@2 ~@2 e2@2 ~@2",
  J: "[d1,d2] [e1,e2]!7 [g1,g2] [e1,e2]!7", K: "[d1,d2] [e1,e2]!7 [g1,g2] [e1,e2]!3 [d1,d2] [e1,e2]!3",
  L: "d2@2 e2!6 g2@2 e2!6", M: "d2@2 e2!6 g2 e2 [d2,g2] [b1,a2] [a#1,a#2] [a1,b2] [g1,d3] [d1,e3]",
  N: "c#3@4 [e3,g#3] ~ c#3 [e3,g#3] ~ [e3,g#3] c#3@2 e3 g#3 c#3 g#2", // E
  O: "[c#3,e3]@2 a2@2 [c#3,e3] ~ a2 [c#3,e3] ~ [c#3,e3] a2@2 d#3 [c#3,e3] a2 e2", // C#m
  P: "[[e3,g3]@4 [e3,g3]@3 c3 [f#3,a3] ~ [f#3,a3]@2 d3@2 [g#3,b3,c#4]@18]/2", // Em F#m C#7
  Q: "[g#2,c#3,g#3]@2 c#2@2 [e3,g#3] ~ c#3 [e3,g#3] ~ [e3,g#3] c#3@2 e3 g#3 c#3 g#2", // C#5 E
  R: "[e3,f#3]@2 b2@2 [e3,f#3] ~ b2 [e3,f#3] ~ [e3,f#3] ~@2 e3 f#3 e3 b2, b2 ~@9 b2@4 ~@2", // Esus2
  S: "[b2,e3] ~ b2 ~ [e3,f#3]@2 ~ [e3,f#3] ~ b2 [e3,f#3]!2 ~ e3 f#3 [e3,f#3,b3,f#4], f#3@2 ~@4 b2@3 ~@2 b3@2 ~@3", // E5 Esus2
  T: "[b3,g#4] ~@3 [b3,e4]@2 b3 [b3,d4] ~ b3 [b3,d#4,e4] ~@5, ~@4 d#4 ~@11", // E E5 Bm Emaj7
  U: "~@4 [b3,d4]@4 a#3 [a3,d4] ~ [g3,d4] ~ [e3,d4] [g3,b3] ~", // Bm D5 G5 E7 G
  V: "~@4 [e3,b3,c#4]!2 ~ [e3,b3,c#4] ~ [b3,c#4] ~ e3 [b3,c#4] e3 [b3,c#4] [a#3,b3], ~@9 e3@2 ~@5", // C#m7 Bsus2 Bmaj7
  W: "b3 [b3,d4] d4 [b3,d4] b3 [b3,d4] d4 [b3,d4] b4 [a4,a#4] g#4 [f#4,g4] f4 [d#4,e4] d4 [c4,c#4]", // Bm A#maj7 Gmaj7 Emaj7 C#maj7
  X: "[b2,b3] ~ g#2 b3 b2 ~ g#2 b2 ~ b2 [g#2,b3] ~ b2 g#3 [g#2,e3] f#3", // B G#m C#m
  Y: "[g#2,c#3] ~ b2 ~ [g#2,c#3,c#4] ~ b2 [g#2,c#4] c#2!2 [g#2,b3] b2 [c#3,c#4] b2 g#2 e2", // C#5 G#m C#
  Z: "f#2 ~ f#2 ~ f#3 f#2 e3 f#3 [b1,b2] b2 b1 e2 f#2 b2 f#3 b2", AA: "e2 ~ e2 ~@3 d2 e2 g2 e2 g2 a2 a#2 b2 d3 e3",
  AB: "a1 ~ a1@4 ~@2 [e4,f4] d#4 [c4,c#4,d4] [a#3,b3] [g#3,a3] g3 [e3,f3,f#3] [d3,d#3], ~@3 g#1@2 ~@3", // Fmaj7 Bmaj7 Amaj7 D#maj7
  AC: "~@4 [e3,b3,c#4]!2 ~ [e3,b3,c#4] ~ [b3,c#4] ~ e3 [b3,c#4] e3 [b3,c#4] a#3, ~@9 e3@2 ~@5", // C#m7 Bsus2
  AD: "e2 ~ c2@4 c#2@4 d2@4 d#2@2",
  AE: "a1 ~ a1@4 ~@2 f4 [d4,d#4,e4] [c4,c#4] b3 [a3,a#3] [g3,g#3] [f3,f#3] [d#3,e3], ~@3 g#1@2 ~@3", // C#maj7 A#maj7 G#maj7 F#maj7 Emaj7
  AF: "c#3@4 [e3,g#3] ~ c#3 [e3,g#3] ~ [e3,g#3] c#3@2 e3 g#3 c#3 g#2, d3 ~@15", AG: "~ b1@2 c2@2 c#2@2 d2",
  AH: "[e2@25 ~ e2@2 g2@4]/2", AI: "[e2@19 ~ e2@2 a2@3 ~ a2@2 g2@4]/2", AJ: "e2",
  AK: "[e3,g#3,c#4]@2 c#3@2 [e3,g#3] ~ c#3 [e3,g#3] ~ [e3,g#3] c#3@2 e3 g#3 c#3 g#2", // C#m E
  AL: "e3@2 c#3@2 [e3,g#3] ~ c#3 [e3,g#3] ~ [e3,g#3] c#3@2 e3 g#3 c#3 g#2", AM: "~@2 [e1,e2]!6 [g1,g2]@2 [e1,e2]!6",
  AN: "[[d1,d2]@2 [e1,e2]!5 e2 a#1@2 a1 ~ g1@2 e1@34]/3", // D E
})).s("gm_clavinet").gain(0.43).pan(0.2)

// chords · overdriven guitar · "Elec Guit"
const overdriven_guitar = note(`<
  A B C D@2 E@2 F G@9 ~@2 G@3 H G@3 H I J K L M N O@2 G@7 ~ P Q R@2 S T U@2 I J K L M N O@2 A B C D@2 E@2 F V E@2 F V
  E@2 ~ G@7 ~ P Q R@2 S T U@2 I J K L W X Y@2 ~@8 G@3 H G@3 H G@3 H G@3 H Z@16 V E@2 F V E@2 F V E@2 F ~@2
>`.pickRestart({
  A: "d3@2 e3 ~@5 g3@2 e3 ~@5", B: "d3@2 e3 ~@13", C: "~@2 e3!6 g3@2 e3 ~@5",
  D: "[d3@2 e3 ~@5 a#2@2 a2 ~ g2 ~ e2@4 ~@2 [e4,b4,d5] ~@5 [e4,b4,d5] ~@5]/2", // E7
  E: "[~@4 [b4,d5] ~ e4 ~ [b4,c#5]@2 [g4,b4] ~ d4 ~ [b3,e4]@4 ~@2 [e4,b4,d5] ~@5 [e4,b4,d5] ~@5]/2", // Bm Bsus2 G E5 E7
  F: "~@4 [b4,d5] ~ e4 ~ [b4,c#5]@2 [g4,b4] ~ d4 ~@3", // Bm Bsus2 G
  G: "[e4,b4,e5] ~ e4!2 [e4,b4,e5] ~ e4!2 [e4,e5] [b4,e5] e4!2 [e4,b4,e5] ~ e4!2", // E5 E E5
  H: "[b3,f#4,b4] ~ b3!2 [b3,f#4,b4] ~ b3!2 [b3,b4] [f#4,b4] b3!2 [b3,f#4,b4] ~ b3!2", // B5 B B5
  I: "[e2,b3,e4,g#4] ~@13 [e2,b3,e4,g#4]@2", J: "[g#2,b3,e4,g#4] ~@11 [g#2,b3,e4,g#4]@4",
  K: "[a2,c#4,e4,a4] ~@13 [a2,c#4,e4,a4]@2", L: "[a#2,c#4,f#4,a#4] ~@15", M: "g#4@10 ~@2 f#4 ~ e4 ~",
  N: "g#4@3 [e4,f#4] c#4 ~ e4@4 c#4 ~ e4@2 f#4 ~", O: "[g4@2 f#4 ~ e4@2 c#4 ~ e4 ~ e4@3 ~ e4@15 ~@3]/2",
  P: "g#4@4 g#4 ~ g#4@4 f#4 ~ e4@2 c#4 ~", Q: "e4@4 c#4 ~ g#4@4 c#4 ~ e4@2 f#4@2",
  R: "[g4@2 f#4 ~ e4@2 c#4 ~ e4 c#4 b3 ~ c#4 ~ e4@10 ~@8]/2", S: "c#5@4 e5 ~ c#5@4 b4 ~ g#4 ~ f#4 ~",
  T: "g#4@2 f#4@2 e4 ~ e4@4 c#4 ~ e4@2 f#4 ~", U: "[g4@2 f#4@2 e4 ~ f#4@2 g4 g#4 c#5@2 g#4 ~ b4@10 ~@8]/2",
  V: "~@4 [e4,b4,d5] ~@5 [e4,b4,d5] ~@5", W: "g#5@10 ~@2 f#5 ~ e5 ~", X: "g#5@3 f#5 [c#5,e5] ~ e5@4 c#5 ~ e5@2 f#5 ~",
  Y: "[g5@2 f#5 ~ e5@2 c#5 ~ e5 ~ e5@3 ~ e5@15 ~@3]/2",
  Z: "[c#4,g#4,c#5] ~ c#4!2 [c#4,g#4,c#5] ~ c#4!2 [c#4,c#5] [g#4,c#5] c#4!2 [c#4,g#4,c#5] ~ c#4!2", // C#5 C# C#5
})).s("gm_overdriven_guitar").gain(0.18).pan(0.7)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A@8 ~@7 B C A D A@8 ~@3 E A@3 F A@7 ~ A@8 ~@3 E A@3 F A@15 ~@9 A@8 ~@3 E A@3 F A@7 ~ A@31 G A@11 D ~@2
>`.pickRestart({
  A: "~@7 x ~@7 x", B: "~ x!2 ~ x!3 ~@2 x!2 ~ x!2 ~@2", C: "~ x!2 ~ x!3 ~@9", D: "~@7 x ~@8", E: "~@9 x!2 ~@3 x ~",
  F: "~@11 x ~@4", G: "~@7 x ~@5 x ~@2",
})).gain(0.21)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@8 A B C D A B C D@2 ~@10 E F E F ~@20 E F E F ~@20 A B C D A B C ~@9 E F E F ~@58
>`.pickRestart({
  A: "~ x!3 ~ x!2 ~@3 x!2 ~ x ~@2", B: "~@3 x ~@2 x!2 ~@5 x ~@2", C: "~@4 x!2 ~@4 x ~ x ~@3", D: "~@4 x!3 ~@9",
  E: "~ x!3 ~ x!3 ~ x!3 ~ x ~ x", F: "~ x!3 ~ x!3 ~ x!3 ~ x!3",
})).gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@15 A B ~@9 C ~@3 D ~@3 E F G H I F G H J ~@7 C ~@3 D ~@3 E ~@12 F G H K ~@7 J ~@7 C ~@3 D ~@3 E L M N O L M N J ~@7
  C ~@7 C ~@7 C ~@7 C ~@2 N O L M N O L M N P ~@2
>`.pickRestart({
  A: "~@8 x ~ x!2 ~ x ~@2", B: "~@13 x!2 ~", C: "~@5 x ~@2", D: "~@13 x!3", E: "~@12 x!2 ~@2",
  F: "~ x ~ x ~ x ~ x ~@3 x ~ x ~ x", G: "~@5 x ~ x ~ x ~ x ~ x ~ x", H: "~@3 x ~ x ~ x ~@3 x ~ x ~ x",
  I: "~ x ~ x ~ x ~@5 x ~ x ~ x", J: "x", K: "~@3 x", L: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  M: "x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x", N: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x", O: "x!2 ~ x ~ x ~ x ~@3 x ~ x ~ x",
  P: "x!2 ~ x!3 ~ x!2 ~@2 x ~ x ~ x",
})).gain(0.26)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct(`<
  ~ A ~ A ~ A ~ A ~@10 A ~ A ~ A ~ A ~ A ~@5 A ~@2 B C D E B C D ~@2 A ~ A ~ A ~ A ~@5 A ~@3 A ~ A ~ A ~ A ~ A ~ A B C D
  ~@10 A ~ A ~ A ~ A ~@5 A ~@3 A F G ~ A F ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A F G ~ A
  F G ~ A F G ~@2
>`.pickRestart({
  A: "~@3 x", B: "~@9 x ~@6", C: "~ x ~ x ~@8 x ~@3", D: "~ x ~@7 x ~@6", E: "~@7 x ~ x ~@2 x ~@3", F: "~ x ~@14",
  G: "~@9 x ~@2 x ~@3",
})).gain(0.16)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A B A B A B ~@9 A B A B A B A B A B C D C D A B A E A B A B A B A F A B A B A B A B C D C D A B A E A B A B A B A
  B A B A B A B A G ~@7 F A B A B A B A B C D C D A B A E A B A B A B A F A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A H ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@2 x ~@3", C: "x ~@6 x", D: "x ~@2 x", E: "x", F: "x ~@2 x ~@2 x ~", G: "x ~ x!2",
  H: "~@4 x ~@4 x ~@2 x ~ x ~",
})).gain(0.37)

// drums · high tom
const high_tom = s("ht").struct("<~@16 A ~@13 B ~@4 C D C E C D C ~@12 B ~@16 C D C F ~@19 B ~@55 G ~@2>".pickRestart({
  A: "~@8 x ~ x!2 ~@4", B: "~@10 x!3 ~@3", C: "x ~@2 x ~@2 x ~", D: "~ x ~@2 x ~@2 x", E: "~ x ~@2 x ~@3",
  F: "~@9 x ~ x ~@4", G: "x!2 ~ x ~@12",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@3 A ~@2 A B A C ~@2 D ~@3 D ~ A ~@2 E A ~@2 F ~@4 A ~@2 G ~@2 D ~@3 D ~ A ~@2 E A ~@2 F ~@4 A ~@10 A@2
  ~@3 A ~@2 G ~@2 D ~@3 D ~ A ~@2 E A ~@2 F ~@2 D ~@3 D G ~@2 D ~@3 D ~@3 D ~@3 D ~@3 D ~@3 D ~@3 D ~@3 D ~ A ~@3 A ~@3
  A ~@2 H ~@2
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "~@3 x", D: "~@6 x!2", E: "~ x ~@2 x ~@3", F: "~ x ~ x ~ x ~ x", G: "x ~@2 x ~@4",
// … 61 more lines

More by Corduroy