Strudelify

High and Mighty

John Scofield

KeyF majorTempo69 bpm
0:00/0:00
// High and Mighty — John Scofield
// 69 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 86 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
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: edit a riff to change every repeat.

// chords · epiano2
const epiano2 = note(`<
  ~@4 A B@3 C B@3 D E F G@2 H I J K L M@2 N O P Q R@2 B@3 C B@2 S@2 F G@2 H I J K H I J K H I J K H I J T B@3 C B@2 S@2
  F J U H I J K H I J K L M@2 N O P Q V@2 ~
>`.pickRestart({
  A: "~@42 [g3,f4,bb4,d5]@2 ~@2 [f4,bb4,d5] ~, ~@23 g3", // Gm7 Bb
  B: "[f3,eb4,ab4,c5]@2 ~@2 [f3,c5]@2 ~@36 [g3,f4,bb4,d5]@2 ~@2 [f4,bb4,d5] ~, ~@4 [eb4,ab4] ~@41 g3@2", // Fm7 F5 Gm7 Bb Ab5
  C: "[f3,eb4,ab4,c5]@2 ~@2 [f3,eb4,c5]@2 ~@36 [g3,f4,bb4,d5]@2 ~@2 [f4,bb4,d5] ~, ~@4 ab4 ~@41 g3@2", // Fm7 F7 Gm7 Bb
  D: "[f3,eb4,ab4,c5] ~ [f3,eb4,c5] ~@21, ~@4 ab4 ~@43", // Fm7 F7
  E: "[f3,eb4,g4,bb4] [g3,eb4,g4,bb4] [db3,a4,db5,e5] [d3,f4,a4,c5]", // Eb A Dm7
  F: "[e3,g4,c5,e5] [f3,f4,a4,c5] [bb3,f4,bb4,c5] [e3,d4,ab4,b4]", // C F Bbsus2 E7
  G: "[[eb3,g4,bb4,db5] [d3,f4,a4,c5] [e3,g4,c5,e5] f4 [g3,f4,bb4,d5] [a3,f4,a4,c5] [bb3,bb4,d5,f5] [c4,bb4,d5,f5], ~@36 [f3,a4,c5]@25 ~@35]/2", // Eb7 Dm7 C Gm7 F Bb F
  H: "[b3,g4,b4,d5] [g3,eb4,g4,bb4] [db3,a4,db5,e5] [d3,f4,a4,c5]", // G Eb A Dm7
  I: "[e3,g4,c5,e5] [f3,f4,a4,c5] [bb3,f4,bb4,c5] [e3,ab4,b4,d5]", // C F Bbsus2 E7
  J: "[eb3,g4,bb4,db5] [d3,f4,a4,c5] [e3,g4,c5,e5] [f3,f4,a4,c5]", // Eb7 Dm7 C F
  K: "[g3,f4,bb4,d5]@3 [a3,f4,a4,c5]@3 [bb3,bb4,d5,f5]@3 ~ c3@2, ~@3 [c4,bb4,d5,f5]", // Gm7 F Bb
  L: "[d4,f4,ab4] ~@4 [gb2,db4,f4,ab4]@19, [db3,b3] ~@47", // Ddim Db Db7
  M: "[[db3,f4,ab4]@2 ~@8 [gb2,db4,f4,ab4]@22 ~@4 [db3,d4,f4,ab4]@2 ~@8 [gb2,db4,f4,ab4]@43 ~@7, [b3,d4] ~@35 b3 ~@59]/2", // Db Bm
  N: "[c3,a3,c4,f4]@6 [d3,bb3,d4,f4]@5 [e3,c4,e4,g4]@7 [b2,g4,b4,d5]@6", // F Bb C G
  O: "[g3,eb4,g4,bb4] [db3,a4,db5,e5] [d3,f4,a4,c5] [e3,g4,c5,e5]", // Eb A Dm7 C
  P: "[f3,f4,a4,c5] ~ [e3,ab4,b4,d5] [eb3,g4,bb4,db5], ~@12 [bb3,f4,bb4,c5]@25 ~@11", // F E7 Eb7 Bbsus2
  Q: "[d3,f4,a4,c5] [e3,g4,c5,e5] [f3,f4,a4,c5] [g3,f4,bb4,d5]", // Dm7 C F Gm7
  R: "[[a3,f4,a4,c5]@12 [bb3,bb4,d5,f5]@12 [b3,f4,b4,d5]@12 [c4,bb4,d5,f5]@2 ~@4 [e3,ab4,bb4,c5,eb5]@18 [f3,eb4,ab4,c5]@2 ~@2 [f3,eb4,ab4,c5] ~@25 [g3,f4,bb4,d5]@2 ~@2 [f4,bb4,d5] ~, ~@47 g3]/2", // F Bb Bdim Bb Ab Fm7 Gm7 Bb
  S: "[[f3,eb4,ab4,c5] ~ [f3,c5] ~@15 [f3,eb4]@6 [f3,eb4,g4,bb4]@6 [g3,eb4,g4,bb4]@6 [db3,a4,db5,e5]@6 [d3,f4,a4,c5]@6, ~@4 [eb4,ab4] ~@31 [ab4,c5]@24 ~@36]/2", // Fm7 F5 F7 Eb A Dm7 Ab5 Ab
  T: "[g3,f4,bb4,d5]@12 [a3,f4,a4,c5]@12 [bb3,bb4,d5,f5]@12 [c3,c4,bb4,d5,f5]@6 [g3,f4,bb4,d5]@2 ~@2 [f4,bb4,d5] ~, ~@23 g3", // Gm7 F Bb Gm7 Bb
  U: "[g3,f4,bb4,d5] [a3,f4,a4,c5] [bb3,bb4,d5,f5] [c4,bb4,d5,f5]", // Gm7 F Bb
  V: "[[a3,f4,a4,c5]@6 [bb3,bb4,d5,f5]@6 [b3,f4,b4,d5]@6 [c4,bb4,d5,f5] ~@2 [e3,ab4,bb4,c5,eb5]@27]/2", // F Bb Bdim Bb Ab
})).s("gm_epiano2").gain(0.41)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B@2 C A B@2 C D E F G H I J G K L@2 M N O P Q@2 A B@2 C A B@2 D E F G H I J G H I J G H I J G H I J G A B@2 C A
  B@2 D E F G H I J G H I J G K L@2 M N O P R@2 ~
>`.pickRestart({
  A: "f1@2 ~@2 f1@2 ~@18 f1@2 ~@2 f1@2 ~@12 bb1@2 b1@2 c2 ~", B: "f1@3 ~ f1@2 ~@18 f1@2 ~@2 f1@2 ~@12 bb1@2 b1 ~ c2 ~",
  C: "f1@2 ~@2 f1@2 ~@18 f1@2 ~@2 f1@2 ~@12 bb1 ~ b1@2 c2 ~", D: "f1 g1 db1 d1", E: "e1@11 ~ f1@12 bb1@12 e1@12",
  F: "eb1 d1 e1 f1", G: "g1@3 a1@3 bb1@3 c2 c1@2", H: "b1 g1 db1 d1", I: "e1 f1 bb1 e1",
  J: "eb1@11 ~ d1@12 e1@12 f1@12",
  K: "db2@2 ~@8 gb1@16 ~@2 gb1@2 ab1@2 bb1 ~@2 eb2@4 ~ gb2@2 eb2@4 db2 ~, ~@17 db2 ~@6",
  L: "[db2 ~@9 gb1@12 ab2@2 gb2@4 eb2 ~ db2@3 bb1 ~@2 db2 ~@9 gb1@21 ~@3 gb2@2 ~@4 gb2@2 gb1@6 gb2@3 gb1@6 ~@3]/2",
  M: "c2@6 d2@5 e2@7 b1@6", N: "g1@12 db2@12 d2@11 ~ e1@12", O: "f1 bb1 e1 eb1", P: "d1 e1 f1 g1",
  Q: "[a1@12 bb1@12 b1@12 c2@2 ~@4 e1@17 ~ f1@2 ~@2 f1@2 ~@30]/2", R: "[a1@6 bb1@6 b1@6 c2 ~@2 e1@27]/2",
})).s("gm_electric_bass_finger").gain(0.33)

// other · electric guitar muted
const electric_guitar_muted = note("<~@5 A B C D A B C D ~@73>".pickRestart({
  A: "~@4 eb3 ~@5 eb3 ~@5 eb3 ~ d3@2 ~@4 eb3@8 ~@2 f3@10 ~@4",
  B: "~@4 d3 ~@5 eb3 ~@5 eb3 ~ d3@2 ~@4 eb3@7 ~@3 ab3@8 ~@6",
  C: "~@4 d3 ~@5 eb3 ~@5 eb3 ~ d3@2 ~@4 eb3@8 ~@2 f3@11 ~@3",
  D: "~@4 d3 ~@5 eb3 ~@5 eb3 ~ d3@2 ~@4 f3@7 ~@3 ab3@11 ~@3",
})).s("gm_electric_guitar_muted").gain(0.32)

// other · overdriven guitar
const overdriven_guitar = note("<~@62 [~@33 db4 ~@5 c4@3 ~@6] ~@23>").s("gm_overdriven_guitar").gain(0.3)

// chords · piano
const piano = note("<~@64 A B@4 C D E@4 F@2 ~@9>".pickRestart({
  A: "~@4 c4@2 ~ g3 d4@2 g3 ~ eb4@3 ~ f4@3 g3 eb4@2 e4@3 ~@14 g3 ~ g4 ~ a4 bb4 ~ c5@2",
  B: "[bb4 ~@9 f4@11 ~ a3 f4 a4@2 bb4 c5@2 ~@3 [bb3,f4]@2 ~@4 d5@2 eb5@2 f5@4 [c4,g4,c5]@11 ~ [c5,f5]@12 [c4,g4] ~@5 g5@2 a5@3 ~ [g4,d5,bb5]@2 ~@2 [d5,c6]@2 ~@2 [g4,d5,a5]@4 ~@8 [g4,d5,g5]@3 ~ [g4,d5,c6]@5 [d5,g5]@2 ~ [g4,d5,e6]@4 [g4,d5] ~@3 [d5,e6]@2 ~@2 [g4,d5,c6]@3 ~ [g4,d5,c6,f6]@4 [c6,f6] e5 ~@2 [c5,f5,c6,g6]@2 ~@2 [c5,g5,g6,c7]@14 [c4,g4] eb5@2 ~ db5 ~@2 bb4 ~ c5 [c4,g4]@4 ~@2 [c4,g4]@3 ~ a4@2 bb4 ~ a4@2 ~ d5 ~ eb5 ~ e5@2 ~ b5 ~, ~@2 a4@4 ~ a4@5 ~@22 c5@7 ~@16 ab4@12 ~@25 [g4,d5,c6]@11 ~@6 g4 ~@10 g4 ~@36 d5@2 ~ c5@2 ~@15 c5@2 ~@11, ~@4 g4@7 ~@10 e4@2 ~@75 a5@8 ~@12 c6@2 ~@69 g5@3]/4", // Bb5 C5 F5 C5 Gm D7 Gsus2 G5 …
  C: "c6 [g4,d5] ~ bb5 ~ a5 ~ a5 bb5 ~ [c5,f5,c6]@2 d6 ~ eb6 ~ e6 ~ f6 ~@2 bb6 ~ gb5@2 bb6 ~@4 bb6@2 f6@2 ~@5 f6@2 eb6 d6 ~@3 eb6 [b5,f6], ~@22 bb4@2 ~@10 bb6@2 bb6@2 bb6@3 ~@7, ~@23 d7 ~@4 g6@13 ~@4 c6@2 ~, ~@35 f6@2 f6@2 ~@4 f6@4 ~", // G5 F5 Bdim
  D: "bb5 ~ b5 ~ bb5 ~ [gb5,g5] ~ [eb5,f5] ~@2 f5@2 eb5 c5@2 eb5 g4 ~@15 a4 ~ bb4 c5@2 d5 eb5 ~ [db4,ab4,c5]@2 d5 eb5 e5 f5 g5, ~@3 c6@2 ~@5 e5@2 ~@19 c4@2 ~@15, ~@16 g4 ~@7", // Gmaj7 Ebsus2 Dbmaj7
  E: "[~@6 bb5@3 ~ [g4,d5]@4 [g4,d5,c6]@2 ~@2 [g4,d5,f5]@3 ~ [g4,d5,f5,c6]@4 [d5,f5,d6]@4 [g4,g5,d6]@4 [g4,d5,g5,e6] ~@3 [d5,g5,e6] g4 ~@2 [g4,d5,a5,f6] ~@3 [c6,g6]@14 ~@10 [c4,g4]@2 ~ g5 a5@2 c4 g4 ~ g5@2 ~ f5@2 ~ e5@3 ~ [c4,g4] ~ f5@2 ~ c5@10 ~ c4 ~ a4@2 ~ g4@6 ~ f4@3 ~@12 [d5,f5,g5,d6]@10 f5@12 ~@4 a5@2 [f4,c5,c6]@8 ~@5 a5@4 ~@8 [d4,a5]@4 [a4,ab5]@2 ~, f4@9 ~@17 g4 ~@19 [g4,d5] ~@59 g4@2 ~@14 d4@20 g4@2 ~@10 [f4,c5]@6 ~@8 [f4,c5,bb5]@9 [f4,c5,f5]@14 ~, ~ c5@8 f5@5 ~@16 d5 ~@111 [a5,c6]@18 ~@21 ab5@8 ~@3, ~@39 f5 ~@8]/4", // G5 Gsus4 G7 Gsus4 Dm G5 Em7 Dm …
  F: "[[d4,a4,f5]@6 d5@3 ~@6 d5@2 ~@5 f5@5 ~ g4 ~ a4 ~@2 g4 c5@3 g4 ~@2 d4 ~ g4@4 f4@14 ~@36, ~@9 f5@8 ~@79, ~@10 [d4,a4]@8 f4@8 ~@2 c4@4 ~@7 c4@2 ~@55]/2", // Dm D5
})).s("gm_piano").gain(0.48)

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

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

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

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

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A B C ~ A ~ A ~ A ~ D E F ~ F ~ G H ~ I J K ~ A ~ A ~ A ~ A ~ A ~ A C E F ~ F ~ G H ~ E F ~ F ~ G H ~@2 G H ~@2 A
  ~ A ~ A C ~@12 I J K ~ A ~ A ~@3
>`.pickRestart({
  A: "~@3 x ~@7 x ~@7 x ~@4", B: "~@19 x ~@4", C: "~@4 x ~@4 x ~@2", D: "~ x ~@6", E: "~@11 x ~@12", F: "~@23 x",
  G: "~@7 x", H: "~@11 x", I: "~ x ~ x", J: "~@3 x", K: "~ x ~",
})).gain(0.29)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@14 A ~@2 A ~@4 B ~@15 A ~@2 A ~@4 A ~@2 A ~@3 A ~@23 B ~@8>".pickRestart({
  A: "~@5 x", B: "~@5 x ~@18",
})).gain(0.19)

// drums · high tom
const high_tom = s("ht").struct("<A ~@3 B ~@7 B ~@10 C ~@4 C ~@38 D ~@2 E F ~@2 E F ~@2 C ~@4 C ~@2>".pickRestart({
  A: "~@19 x ~@4", B: "~@7 x ~@4", C: "~@17 x ~@6", D: "~@5 x ~@6", E: "~@12 x ~@4 x ~@6", F: "~ x ~@4 x ~@11 x ~@5",
})).gain(0.29)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A B ~@6 C B ~@7 D E ~ B ~@3 A F B ~@5 A B ~@18 A B ~@5 A G ~@3 H I B J K I B J D E ~ B ~@3 A L M
>`.pickRestart({
  A: "~@6 x!2", B: "x", C: "~ x", D: "x ~@4 x ~@18", E: "x ~@4 x ~@12 x ~@4 x", F: "~@6 x ~ x ~@9 x ~@2 x ~@2",
  G: "x ~@5 x!2", H: "~ x ~@4 x ~", I: "~@11 x ~@6 x ~@3 x ~", J: "~@11 x", K: "x!2 ~@4 x ~", L: "~@3 x!2 ~@7",
  M: "~ x ~@22",
})).gain(0.26)

// drums · ride
const ride = s("rd").struct("<~@64 A B C D E F G H I F G H ~@8 J K>".pickRestart({
  A: "~@5 x!2 ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x", B: "x ~@2 x ~@2 x ~ x ~@2 x!2 ~@2 x ~ x!2 ~ x ~ x ~",
  C: "x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x", D: "~ x!4 ~@7", E: "x ~@5 x ~ x!2 ~ x!2 ~ x!2 ~ x ~@2 x!2 ~ x",
  F: "x ~ x!2 ~@2 x ~ x!2 ~@4 x!2 ~ x ~@2 x ~@3", G: "~@3 x ~ x!2 ~ x!2 ~@4 x!2 ~@2 x ~ x ~@2 x",
  H: "~ x ~@2 x ~@3 x ~ x ~@13", I: "~@6 x ~ x!2 ~ x!2 ~ x!2 ~ x ~@2 x!2 ~ x",
  J: "~@22 x ~ x ~ x ~ x ~ x!6 ~ x ~@2 x ~@7", K: "~ x ~@22",
})).gain(0.26)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@64 A B C ~@2 D ~@3 D ~@10 E ~>".pickRestart({
  A: "~@7 x ~@4", B: "~@2 x ~@6 x ~@14", C: "~ x ~@6", D: "~@5 x ~@18", E: "~@25 x ~ x ~ x ~@18",
})).gain(0.13)

stack(
  epiano2, bass, electric_guitar_muted, overdriven_guitar, piano, kick, snare, low_tom, hihat, hihat_soft, mid_tom,
  open_hat, open_hat_soft, high_tom, crash, ride, ride_soft
)