Strudelify

Deeply Dippy

Right Said Fred

KeyF majorTempo128 bpm
0:00/0:00
// Deeply Dippy — Right Said Fred
// 128 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: duplicate parts dropped: ch 1 electric guitar jazz (copy of ch 3 electric guitar jazz, 0.26 beats late)
// note: Full arrangement: all 104 bars on a 24-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 28.
setcpm(128/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.

// other · alto sax
const alto_sax = note(`<
  ~@33 A ~@3 A ~@5 B C D@2 E F G H@2 I J K L F M N O P ~ Q ~ R S T ~@6 U@2 V ~ U@2 W ~@7 X ~ U@2 Y ~ Z@2 AA ~@2 AB@5 ~
>`.pickRestart({
  A: "~@3 f3@2 d3 f3@2 g3 ~@3", B: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~",
  C: "a3@11 ~ f3@4 g3@3 ~@3 g3@2", D: "[~@12 d3@2 ~@2 f3@2 g3@2 d3@2 f3@12 d3@3 ~@11]/2",
  E: "ab3@4 ~@2 g3@4 ~@2 f3@4 d3@5 ~@3", F: "~@6 a3@2 ~@4 c4@9 ~ d4@2", G: "~@9 c4 d4 ~ eb4@2 ~@2 eb4@2 d4@2 ~@2 d4@2",
  H: "[c4@3 ~@3 a3@4 ~@2 f3@6 d3@4 f3@20 f4@3 ~@3]/2", I: "~@3 f3@2 d3 f3@2 f3 ~@3",
  J: "~@2 f3 ~@3 f3@4 d3@2 f3@4 f3@2 ~@6", K: "~ c3 d3 eb3 d3 eb3 ~ c3 d3 eb3 d3 eb3",
  L: "~@12 f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~", M: "~@4 c4 ~ bb3 ~", N: "a3@2 f3@3 d3 f3@3 g3@2 f3",
  O: "~@4 c4@2 eb4@2 ~@4 d4@4 db4@7 ~", P: "c3 ~@7", Q: "ab3@2 f3@3 d3 f3@3 gb3@2 f3", R: "~@6 ab3@2 ~@4 ab3@3 ~@9",
  S: "g3@2 ~@4 g3@3 ~@7 g3@7 ~", T: "~@6 gb3@3 ~@3 gb3@4 ab3@2 gb3@4 f3@2",
  U: "[~@10 a3@2 ~@4 g3@2 ~@4 f3@7 ~ f3@4 d3@2 f3@4 g3@2 f3@3 ~ a3@2]/2", V: "~@4 g3@8 f3@2 [f3,f4]@3 ~@5 f3@2",
  W: "~@2 f3@6 ~ d3@2 f3", X: "~@4 f3 ~ f3@2 d3@2 f3 ~@5 [g3,bb3] ~ [g3,bb3]@2 [ab3,b3]@2 [a3,c4] ~",
  Y: "~@4 g3@8 f3@2 f3@3 ~ f3@4 f3@2", Z: "[~@6 f3@4 d3@2 f3@4 g3@2 ~@4 f3@7 ~ f3@4 d3@2 f3@4 g3@2 f3@4 a3@2]/2",
  AA: "~@2 f3 ~@2 d3 ~@2 c3@3 ~",
  AB: "[~@4 f3@6 d3@2 f3@6 ~ d3@3 f3@7 d3@3 c3@5 ~@21 c5@4 ~ f4 c4 a3 ~ ab3@3 a3@6 f4@44, ~@15 f2@7 ~@18, ~@31 a4 ~@28]/5",
})).s("gm_alto_sax").gain(0.35).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@32 A@2 B C D@2 E F ~@4 A@2 B C D@2 E F A@2 B C D@2 E F ~@11 C A@2 B C D@2 E F A@2 B C A@2 B C A@2 B C A@2 B C ~@8
>`.pickRestart({
  A: "[c4 d4, [f3,a3]]/2", B: "[g3,bb3,eb4]", C: "[f3,bb3,d4]", D: "[c4 d4, [a3,f4]]/2", E: "[bb3,eb4,g4]",
  F: "[bb3,d4,f4]", // Bb
})).s("gm_synth_strings_1").gain(0.09)

// chords · piano
const piano = note(`<
  ~@13 A B C D A E F G ~@11 A B C D A E F G ~@4 A B C D A E F G A B C D A E F G ~@12 A B C D A E F G A B C D H I J K L M
  N O L M N O ~@8
>`.pickRestart({
  A: "f3@2 ~ f3, f2, [c4,f4,a4]@2 [c4,f4,a4], ~@2 f3 ~", B: "[d4,f4,a4]@4 d5 ~ a4@2, [d2,d3], ~ f5, ~@12 c5 ~@3 c5@8",
  C: "[g4,bb4,eb5] ~@2 [g4,bb4,eb5]@3 [g4,bb4,eb5]@3 [g4,bb4,eb5]@3, [eb2,eb3]", // Eb
  D: "[f4,bb4,d5]@6 [f4,bb4]@6 f4@4 ~@2 [bb2,d4]@4 f4 ~, bb2@8 f4@3 ~, bb1@12 [bb1,bb4]@11 ~, ~@6 d5@17 ~, ~@2 d4 ~", // Bb Bb5 Bb
  E: "[f4,a4,d5]@8 ~ d3@3, d2, d3@3 ~, ~@2 [f4,a4,d5]", F: "eb2@2 ~ [eb3,g4,bb4,eb5], [eb3,g4,bb4,eb5]@3 ~, ~ eb2",
  G: "[bb1,f4,bb4,d5]@6 [bb1,f4,bb4,d5]@5 ~, bb2@11 ~", // Bb
  H: "[c4,f4,a4]@3 ~@3 [c4,f4,a4]@2 ~@4 [c4,f4,a4]@2 ~@4 [c4,f4,a4]@2 ~@4, f3@11 ~", // F
  I: "[c4,f4,a4]@2 ~@4 [c4,f4,a4]@2 ~@4 [c4,f4,a4]@2 ~@4 [c4,f4,a4]@3 ~@3, d3@11 ~", // F
  J: "[eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4]@3 ~@3, eb3", // Eb
  K: "[d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@2, bb2@7 ~", // Bb
  L: "~@2 [a4,c5,f5] ~@3 [a4,c5,f5]@2 ~@4, f3@11 ~", // F
  M: "[a4,c5,f5]@6 ~@4 [a4,c5,f5]@2 ~@4 [a4,c5,f5]@3 ~@3 [g4,bb4,eb5]@2, d3@23 ~", // F Eb
  N: "~@4 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@3 ~@9, eb3", // Eb
  O: "[f4,bb4,d5]@2 ~@4 [f4,bb4,d5]@2 ~@4 [f4,bb4,d5]@2 ~@4 [f4,bb4,d5]@3 ~@3, bb3@7 ~", // Bb
})).s("gm_piano").gain(0.16).pan(0.3)

// other · brass section
const brass_section = note(`<
  ~@33 A ~@3 A ~@5 B C D@2 E F G H@2 I J K L F M N O P ~ Q ~ R S T ~@6 U@2 V ~ U@2 W ~@7 X ~ U@2 V ~ Y@2 Z ~@2 AA@5 ~
>`.pickRestart({
  A: "~@3 f4@2 d4 f4@2 g4 ~@3",
  B: "[f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~", // F
  C: "[a4,a5]@11 ~ [f4,f5]@4 [g4,g5]@3 ~@3 [g4,g5]@2", // A F G
  D: "[~@12 [d4,d5]@2 ~@2 [f4,f5]@2 [g4,g5]@2 [d4,d5]@2 [f4,f5]@12 [d4,d5]@3 ~@11]/2", // D F G D F D
  E: "[ab4,ab5]@4 ~@2 [g4,g5]@4 ~@2 [f4,f5]@4 [d4,d5]@5 ~@3", F: "~@6 [a4,a5]@2 ~@4 [c5,c6]@9 ~ [d5,d6]@2",
  G: "~@9 [c5,c6] [d5,d6] ~ [eb5,eb6]@2 ~@2 [eb5,eb6]@2 [d5,d6]@2 ~@2 [d5,d6]@2", // C D Eb D
  H: "[[c5,c6]@3 ~@3 [a4,a5]@4 ~@2 [f4,f5]@6 [d4,d5]@4 [f4,f5]@20 [f5,f6]@3 ~@3]/2", // C A F D F
  I: "~@3 [f4,f5]@2 [d4,d5] [f4,f5]@2 [f4,f5] ~@3", J: "~@2 [f4,f5] ~@3 [f4,f5]@4 [d4,d5]@2 [f4,f5]@4 [f4,f5]@2 ~@6",
  K: "~ [c4,c5] [d4,d5] [eb4,eb5] [d4,d5] [eb4,eb5] ~ [c4,c5] [d4,d5] [eb4,eb5] [d4,d5] [eb4,eb5]", // C D Eb D Eb C D Eb …
  L: "~@12 [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~ [f4,f5] ~", M: "~@4 [c5,c6] ~ [bb4,bb5] ~",
  N: "[a4,a5]@2 [f4,f5]@3 [d4,d5] [f4,f5]@3 [g4,g5]@2 [f4,f5]", // A F D F G F
  O: "~@4 [c5,c6]@2 [eb5,eb6]@2 ~@4 [d5,d6]@4 [db5,db6]@7 ~", P: "[c4,c5] ~@7",
  Q: "[ab3,ab4]@2 [f3,f4]@3 [d3,d4] [f3,f4]@3 [gb3,gb4]@2 [f3,f4]", R: "~@6 [ab4,ab5]@2 ~@4 [ab4,ab5]@3 ~@9",
  S: "[g4,g5]@2 ~@4 [g4,g5]@3 ~@7 [g4,g5]@7 ~", // G
  T: "~@6 [gb4,gb5]@3 ~@3 [gb4,gb5]@4 [ab4,ab5]@2 [gb4,gb5]@4 [f4,f5,f6]@2", // Gb Ab Gb F
  U: "[~@10 [a4,a5]@2 ~@4 [g4,g5]@2 ~@4 [f4,f5]@7 ~ [f4,f5]@4 [d4,d5]@2 [f4,f5]@4 [g4,g5]@2 [f4,f5]@3 ~ [a4,a5]@2]/2", // A G F D F G F A
  V: "~@4 [g4,g5]@8 [f4,f5]@2 [f4,f5]@3 ~ [f4,f5]@4 [f4,f5]@2", W: "~@2 [f4,f5]@6 ~ [d4,d5]@2 [f4,f5]",
  X: "~@4 [f4,f5] ~ [f4,f5]@2 [d4,d5]@2 [f4,f5] ~@5 [g4,bb4,g5,bb5] ~ [g4,bb4,g5,bb5]@2 [ab4,b4,ab5,b5]@2 [a4,c5,a5,c6] ~", // F D F Gm Abm Am
  Y: "[~@6 [f4,f5]@4 [d4,d5]@2 [f4,f5]@4 [g4,g5]@2 ~@4 [f4,f5]@7 ~ [f4,f5]@4 [d4,d5]@2 [f4,f5]@4 [g4,g5]@2 [f4,f5]@4 [a4,a5]@2]/2", // F D F G F D F G …
  Z: "~@2 [f4,f5] ~@2 [d4,d5] ~@2 [c4,c5]@3 ~", // F D C
  AA: "[~@4 [f3,f4]@6 [d3,d4]@2 [f3,f4]@6 ~ [d3,d4]@3 [f3,f4]@7 [d3,d4]@3 [c3,c4]@5 ~@8 [f2,f3]@75]/5", // F D F D F D C F
})).s("gm_brass_section").gain(0.41).pan(0.8)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C B D B E F G B E F H I J F H I J F H ~@11 I J F H I J F H K L M N O P Q R O P Q R O P Q R O P Q R S T U V W X Y A
  B E F Z O P Q R O P Q R O P Q R O P Q R O P Q R O P Q R ~@3 AA@3 ~@2
>`.pickRestart({
  A: "~@11 [f2,c3]", B: "[f2,c3,f3] ~@2 [f2,c3,f3] ~@2 [f2,c3,f3] ~@2 [f2,c3,f3] ~@2",
  C: "[f2,c3,f3] ~@2 [f2,c3,f3] ~@2 [f2,c3,f3] ~@2 [f2,c3,f3] ~ [f2,c3,f3]", // F5
  D: "[f2,c3,f3] ~@2 [f2,c3,f3] ~@2 [f2,c3,f3]@2 [f2,c3,f3] [f2,c3,f3]@2 [f2,c3,f3]", // F5
  E: "[d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2", F: "[eb3,bb3] ~@2 [eb3,bb3] ~@2 [eb3,bb3] ~@2 [eb3,bb3] ~@2",
  G: "[bb2,f3]@2 ~@4 [bb2,f3]@2 ~@4 [bb2,f3]@4 g3@2 [bb2,f3]@3 ~ e2@2", // Bb5
  H: "[bb2,f3]@2 ~@4 [bb2,f3]@2 ~@4 [bb2,f3]@4 g3@2 [bb2,f3]@3 ~@3", // Bb5
  I: "[c3,f3] ~@2 [c3,f3] ~@2 [c3,f3]@2 [c3,f3] [c3,f3]@2 ~", // F5
  J: "[d3,a3] ~@2 [d3,a3] ~@2 [d3,a3]@2 [d3,a3] [d3,a3]@2 ~", K: "~@8 [eb3,ab3] [eb3,ab3]@2 [eb3,ab3]",
  L: "[d3,g3] ~@7 [d3,g3] [d3,g3]@2 [d3,g3]", M: "[db3,gb3] ~@7 [db3,gb3] [db3,gb3]@2 [db3,gb3]",
  N: "[c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~ [c3,f3] ~", // F5
  O: "[c4,f4,a4]@6 [c4,f4,a4]@4 [c4,f4,a4]@2 [c4,f4,a4]@4 [c4,f4,a4]@2 [c4,f4,a4]@4 [c4,f4,a4] ~", // F
  P: "[d4,f4,a4]@3 [d4,f4,a4]@2 [d4,f4,a4] [d4,f4,a4]@2 [d4,f4,a4] [d4,f4,a4]@2 [d4,f4,a4]", // Dm
  Q: "[eb4,g4,bb4]@3 [eb4,g4,bb4]@2 [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4]", // Eb
  R: "[d4,f4,bb4]@6 [d4,f4,bb4]@4 [d4,f4,bb4]@2 [d4,f4,bb4]@4 [d4,f4,bb4]@2 [d4,f4,bb4]@4 [d4,f4,bb4] ~", // Bb
  S: "[c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2", // Ab
  T: "[b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2", // G
  U: "[bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@2", // Gb
  V: "[a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~@2", W: "[c4,eb4,ab4] ~@5 [c4,eb4,ab4] ~",
  X: "~@2 [b3,d4,g4]", Y: "[bb3,db4,gb4]@3 ~@19 [a3,c4,f4]@2",
  Z: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~", // Bb
  AA: "[~@11 c4@20 ~@5, ~@19 c3@44 ~@9, ~@20 f3@43 ~@9, ~@21 a3@41 ~@10]/3",
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.9)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@40 A B C ~@4 D ~@3 D ~@3 D ~@3 D ~@8 E ~@6 D ~@3 D ~@3 D ~@3 D ~@3 D ~@3 D F G H I ~@4
>`.pickRestart({
  A: "[ab2,eb3,ab3] ~@2 [ab2,eb3,ab3] ~@2 [ab2,eb3,ab3] ~@5", B: "~@3 [g2,d3,g3] ~@2 [g2,d3,g3] ~@5",
  C: "~@3 [gb2,db3,gb3] ~@2 [gb2,db3,gb3] ~@5", D: "~@8 g3 ~@3", E: "~@11 [f2,c3,f3]",
  F: "[ab2,eb3,ab3] ~@2 [ab2,eb3,ab3] ~@2 [ab2,eb3,ab3] ~ [ab2,eb3,ab3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]", // Ab5
  G: "[g2,d3,g3]@2 ~@4 [g2,d3,g3]@2 ~@5 [g2,d3,g3]@2 ~@3 [g2,d3,g3]@2 [g2,d3,g3]@4", // G5
  H: "~ [g2,d3,g3]@3 [gb2,db3,gb3]@2 ~@6 [gb2,db3,gb3]@3 ~@7 [gb2,db3,gb3]@2", // G5 Gb5
  I: "~@5 [gb2,db3,gb3]@3 [gb2,db3,gb3]@9 [gb2,db3,gb3]@4 ~@3", // Gb5
})).s("gm_electric_guitar_muted").gain(0.27).pan(0.2)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@4 A ~@5 B@2 ~@2 C@2 ~@2 D@2 ~ E F G ~ H@2 I J K@2 ~@6 L@2 ~ M N ~@3 C@2 ~@2 D@2 ~@2 C@2 ~@2 D@2 ~ O@3 P@2 ~@15 Q@4
  R@2 ~@3 S T ~@2 U@3 V W@2 X Y@4
>`.pickRestart({
  A: "f4@4 c4@4 ~ ab3@3 f3@10 ~@2", B: "[~@6 [c4,f4]@13 ~@5]/2", C: "[~@3 g3@2 a3 [c4,f4]@15 ~@3]/2",
  D: "[~@6 [g4,c5]@4 ~@2 g4@4 f4@2 g4@4 f4@19 ~@7, ~@12 c5@29 ~@7]/2", // C5
  E: "~@3 [eb4,bb4] eb4 c4 bb3 c4 eb4 [eb4,ab4]@2 [c4,f4]", // Eb5 Ab5 F5
  F: "[eb4,ab4]@2 [c4,f4] [e4,a4] d4 b3 a3 b3 d4 [d4,g4]@2 [b3,e4,a4]", // Ab5 F5 A5 G5 Esus4
  G: "[d4,g4]@2 [b3,e4,a4] [eb4,ab4] db4 bb3 ab3 bb3 db4 [db4,gb4]@2 [bb3,eb4]", // G5 Esus4 Ab5 Gb5 Eb5
  H: "[~@4 c4 ~ eb4@4 c4@2 eb4@4 c4@2 f4@21 ~@9]/2", I: "~@17 bb3@2 ab3@5, ~@8 c4 ~@3", J: "f3@23 ~",
  K: "[~ [c4,f4,a4]@2 ~]/2", L: "[~@3 [g4,c5]@2 ~ g4@2 f4@7 ~@9, ~@3 c5@5 ~@4]/2",
  M: "~@12 eb5@4 c5 ~ bb4@4 ab4@2, ~@12 c5 ~@11", N: "bb4@4 ab4@17 ~@3", O: "[~@12 c5@13 ab4@3 f4@25 ~@19]/3",
  P: "[~@2 c4 eb4 c4 eb4 ab4@2 b4 ab4@11 ~@4]/2",
  Q: "[~@6 eb5@21 ~@3 f5@2 eb5@2 c5@2 eb5@2 ~@2 f5@14 f5@2 eb5@2 c5@2 eb5@3 ~ f5@10 ~@4 f5@2 eb5@2 c5@2 bb5@8 ~@4]/4",
  R: "[ab5@11 ~@2 f5@2 c5@2 eb5@2 f5@23 ~@6]/2", S: "~ bb4@5", T: "ab4 f4@4 ~, bb4 ~@23",
  U: "[~@4 b5@29 ~ bb5@2 ab5@4 f5@18 ~@14]/3", V: "bb4 ab4 f4 bb3 c4 eb4 bb4 ab4 f4 bb4 ab4 f4",
  W: "[a4@2 g4@2 e4@2 a4@2 ~ g4@2 e4@2 a4@2 g4@2 ~ e4@2 a4@2 ~ g4@2 e4@2 ~ ab4@3 f4@3 eb4@3 c4@3 bb3@3 ab3@3 bb3@2]/2",
  X: "~ ab3@3 ~ bb3@3 ab3@4 ~ gb3@4 ab3@4 ~@3", Y: "[~@14 f4@23 bb3@6 a4@4 a3@8 f4@21 ~@20]/4",
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.1)

// bass · electric bass finger
const bass = note(`<
  ~@13 A B C D E F G H I J K L M N O P Q R S A B C D E F G H T U V W X Y Z AA X Y Z AB X Y Z AA X Y Z AC AD AE AF AG AH
  AI AJ ~@4 AK X Y Z AA X Y Z AC AL AM AN AO X Y Z AP X Y Z AQ AL AM AN AO AR AS AT@5 ~
>`.pickRestart({
  A: "f1@5 ~ f1@5 ~ f1@6 c2@4 db2@2", B: "d2@5 ~ d2@5 ~ d2@4 a1@2 c2@4 d2@2", C: "eb2@5 ~ g1@5 ~ ab1@5 ~ a1@5 ~",
  D: "bb1@5 ~ d2@5 ~ eb2@5 ~ e2@5 ~", E: "f1@5 ~ f1@5 ~ c2@4 a1@2 c2@4 db2@2",
  F: "d2@3 ~ a1 ~ c2@2 ~@2 d2@3 ~@5 a1 ~ c2 ~ d2@2", G: "eb2@3 ~@3 eb2@3 ~@3 eb2@2 ~@2 bb1@2 eb2@4 f2@2",
  H: "bb1@4 f1@2 g1@4 bb1@5 ~ bb1 ~ bb1@5 ~", I: "ab1@5 ~ c2@5 ~ eb2@5 ~ ab2@4 eb2@2",
  J: "g2@5 ~ d2@5 ~ b1@5 ~ g1@4 ~@2", K: "gb1@5 ~ bb1@5 ~ db2@5 ~ gb2@4 db2@2", L: "f1@3 ~@7 f1@3 ~@9 c2@2",
  M: "d2@3 ~@7 d2@3 ~@9 d2@2", N: "eb2@3 ~@7 eb2@3 ~@9 eb2 ~", O: "bb1@3 ~@7 bb1@3 ~@3 f2 ~ d2@5 ~",
  P: "f1@3 ~@7 f1@3 ~@3 f1 ~ c2@2 ~@2 db2@2", Q: "d2@2 ~@2 a1@2 c2@3 ~ d2@2 ~@10 d2@2",
  R: "eb2@2 ~@8 eb2@2 ~@4 eb2 ~ eb2@3 ~ f2@2", S: "bb1@5 ~ d2@5 ~ f2@5 ~ g2@2 f2@2 d2@2", T: "ab1", U: "g1",
  V: "gb1@3 gb2", W: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~",
  X: "f1@3 ~@3 f1@3 ~@3 f1@3 ~ c2@2 f2@4 g2@2", Y: "d2@3 ~ a1@2 c2@3 ~ d2@3 ~@3 a1@2 c2@4 d2@2",
  Z: "eb2@3 ~@3 eb2@3 ~@3 eb2@3 ~ bb1@2 eb2@4 f2@2", AA: "bb1@3 ~ f1 ~ g1@3 ~ bb1@3 ~@3 bb1 ~ c2@5 ~",
  AB: "bb1 d2 f2 g2", AC: "bb1@3 ~ f1@2 g1@3 ~ bb1@3 ~@3 f2@5 ~@3", AD: "ab1@2 ~@8 ab1@2 ab1@9 ~ ab1@2",
  AE: "g1@2 ~@8 g1@2 g1@9 ~ g1@2", AF: "gb1@3 ~@7 gb1@2 gb1@9 ~ gb1@2", AG: "f1@2 ~@8 f1@5 ~ f1@2 gb1@4 g1@2",
  AH: "ab1@2 ~@16 ab1@3 ~@3", AI: "~@2 g1", AJ: "gb1 ~@10 f1",
  AK: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  AL: "f1@3 ~@3 f1@3 ~@3 f1@4 c2@2 f2@4 g2@2", AM: "d2@2 ~@2 a1@2 c2@3 ~ d2@5 ~ a1@2 c2@4 d2@2",
  AN: "eb2@5 ~ g1@5 ~ ab1@5 ~ a1@4 f1@2", AO: "bb1@4 ~@2 d2@5 ~ f2@5 ~ g2@5 ~", AP: "bb1@4 f1@2 ab1@6 g1@6 gb1@5 ~",
  AQ: "bb1@2 ~@2 bb1 ~ ab1@3 ~ ab1@2 g1@3 ~ g1 ~ c2@5 ~", AR: "ab1@5 ~ c2@5 ~ eb2@5 ~ ab2@5 ~",
  AS: "g2@6 d2@6 ~ b1@6 ~ g1@4", AT: "[~@4 gb1@8 bb1@8 ~@2 db2@10 gb2@12 ~ f1@67 ~@8]/5",
})).s("gm_electric_bass_finger").gain(0.52)

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

// drums · rim
const rim = s("rim").struct("<~@24 [~ x ~ x]!8 ~@29 [~@3 x] ~ [~@3 x] ~@40>").gain(0.35)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@40 A B@2 ~@4 B ~@2 C D ~@3 E ~@3 E ~ F ~ E ~@2 G ~@8 B ~@2 C D ~@3 E ~@3 E ~@3 E ~@3 E ~@8
// … 69 more lines

More by Right Said Fred