Strudelify

Pietre

Antoine

KeyD majorTempo122 bpm
0:00/0:00
// Pietre — Antoine
// 122 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 74 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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
const piano = note(`<
  ~ A B C D E F G H I J K J K L M N O J K J K L P N O Q@2 R S T U G H I V W V W L P N O J K J K L P N O Q@2 R X T Y G H
  Q@2 R X T Y Z AA AB AC AD AE G H AF
>`.pickRestart({
  A: "~@4 f#4@6 a3@2 ~@4 a3@3 ~@3 a3@2, d2@11 ~ a2@12, ~ d4@2 ~ [d4,f#4]@2, ~ a3 ~@4", // D
  B: "~@4 a3@3 ~@3 a3@2 d2@4 ~@6 a3@2, d2@5 ~@3 a3@2 ~@2, ~@4 [d4,f#4]@9 ~@3 [d4,f#4]@8, ~@3 d2", // D
  C: "g2@2 ~ g2@2 b3 g2@2 b3 ~@2 b3, ~@4 [d4,g4]@9 ~@3 [d4,g4]@8, ~@2 b3@2 ~@5 g2@3", // G5
  D: "a2@2 ~ a2@2 g3 a2@2 g3 ~@2 [g3,c#4], ~@4 [c#4,e4]@9 ~@3 e4@8, ~@4 g3@4 ~@8 c#4@5 ~@3, ~@3 a2", // Gdim C#m
  E: "d2@2 ~ d2@2 [a3,f#4] a2@2 a3 ~@2 a3, ~@4 d4@9 ~@3 f#4@7 ~, ~@4 [a3,f#4]@4 ~@8 d4@5 ~ d4 ~, ~@3 a2", // D
  F: "~@4 a3@3 ~@3 a3@2 d2@4 a3@2 d2@2 a3@2 d2@2, d2@5 ~@7, ~@4 [d4,f#4]@8 ~@4 [d4,f#4]@7 ~", // D
  G: "a2@4 ~@2 a2@4 [g3,c#4,e4] ~ a2@4 ~@6 [g3,c#4] ~, ~@4 [g3,c#4,e4]@5 ~@7 [g3,c#4,e4]@5 ~ e4@2, ~@3 a2", // C#dim Gdim C#dim
  H: "d2@4 ~@6 a3@2 [a2,g3,c#4,e4]@4 ~@2 [a2,g3,c#4,e4]@3 ~@3, ~@4 [d4,f#4]@7 ~@13, ~ a3 ~@4, ~ d2 ~@2", // A7 D
  I: "~@4 [d4,f#4]@5 ~ [a3,d4,f#4] ~ d2@4 a3@2 d2@4 a3 ~, d2@5 ~@7, ~@4 a3@2 ~@10 [d4,f#4]@7 ~", // D
  J: "d3@2 ~@3 d4 a2@2 ~ a2@2 c#4, ~@4 [a3,f#4]@9 ~@3 [g3,e4]@8, ~ d3 ~@2", // D C
  K: "~@6 a3@2 ~@2 e4@2 f#4@3 ~ g4@2 f#4@3 ~ e4@2, d3, ~@2 [d4,f#4]@3 a3@7", // D
  L: "~@4 b3@3 ~@3 b3@2 ~@4 a3@3 ~@3 a3@2, g2@11 ~ d3@12, ~ [d4,g4]@2 ~ [d4,f#4]@2", // G5 D
  M: "~@2 [d4,g4]@3 b3 d3@2 a3 ~@2 a3, g2@2 ~ d3, ~@4 b3@3 ~@9 [d4,f#4]@8", // G5 D
  N: "~@5 b3 ~@2 [d4,f#4]@3 a3, g2@13 ~@11, ~@2 b3@3 ~ d3@6, ~@6 d4@6 ~@4 a3@3 ~@5, ~@2 g4 ~@3", // D
  O: "a2@2 [g3,c#4] a2 [g3,c#4] ~ [g3,c#4,e4]@3 [g3,c#4,e4] ~@2, ~@2 e4@3 a2@6 ~", // Gdim C#dim
  P: "~@2 [d4,g4]@3 b3 d3@2 a3 ~@2 a3, g2@2 ~ d3, ~ b3 ~@2 [d4,f#4]@2", // G5 D
  Q: "[~@3 d3@2 a3 ~@3 d3 d4 d3@3 ~@2 d4 d3 a3@2 d3 a3 d3 d4, d2@11 ~ d2@17 ~ d2@18, ~@4 [d4,f#4]@7 ~@5 g4@7 ~@13 e4@9 ~@3, ~@4 a3@4 ~@8 a3@4 ~@8 [a3,f#4]@5 ~@15]/2", // D
  R: "g2@3 g3@2 g2 b3@2 g2 g3 ~ b3, ~@3 d4@5 ~ d4@3, ~@5 g2",
  S: "a2@4 [a3,d4]@2 a2 ~ a3 ~ a2@2 ~@10 a3@2, ~@3 [b3,e4] a3 a2, ~@7 a2@2 [c#4,e4]@3", // D5 E5 C#m
  T: "[d2,d3]@4 a3@2 ~@2 a3@3 ~ [g3,c#4,e4]@5 ~ [g3,c#4,e4]@4 a2 ~, ~@4 [d4,f#4]@7 ~ a2@6 ~@6, ~@6 [d2,d3]@7 ~@11", // D C#dim D
  U: "[a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ a3 d3 a3 [d2,d3] [a3,d4,f#4] [d2,d3], [d2,d3]@9 ~ d2@6 ~@8, ~@2 f#4 ~", // D
  V: "~@3 a4@2 ~@4 a4@3, d4@9 ~ d4@5 ~ d4@5 ~@3, ~ g4", W: "d4@3 a4@2 d4 ~@3 a4@2 ~, ~@6 e4@5 ~, ~@8 d4@3 ~",
  X: "a2@4 [a3,d4]@2 a2 ~ a3@2 a2@2 ~@10 a3@2, ~@3 [b3,e4] a3 a2, ~@7 a2@2 [c#4,e4]@3", // D5 E5 C#m
  Y: "[a3,d4,f#4]@5 ~ [a3,d4,f#4]@4 ~@2 a3@2 d3@2 a3@2 [d2,d3]@2 [a3,d4,f#4]@2 [d2,d3]@2, [d2,d3]@9 ~ d2@6 ~@8, ~@2 f#4 ~", // D
  Z: "~@4 [d4,f#4]@6 a3@2 a2@4 a3@2 a2@3 ~ a3@2, d2@3 ~@5, ~@4 a3@3 ~@9 [d4,f#4]@6 ~@2", // D
  AA: "d2@4 ~@2 d2@3 ~ a3@2 d2@4 ~@2 d2@4 a3@2, ~ [d4,f#4]@2 ~ [d4,f#4]@2, ~ a3 ~@2 a3 ~", // D
  AB: "g2@4 ~@2 g2@4 g3@2 g2@3 ~ g3@2 ~@4 g3@2, ~ [b3,d4]@2 ~ [b3,d4]@2, ~@2 g3@2 ~@5 g2@3", // Bm
  AC: "a2@3 ~ a3@2 a2@4 a3@2 a2@3 ~@3 a2@4 a3@2, ~ [c#4,e4]@2 ~ [c#4,e4]@2, ~@4 a3 ~", // C#m
  AD: "d2@4 a3@2 d2@3 ~ a3@2 a2@3 ~ a3@2 a2@4 a3@2, ~ [d4,f#4]@2 ~ [d4,f#4]@2", // D
  AE: "d2@4 a3@2 d2@4 a3@2 d2@3 ~ [a3,d4,f#4]@2 d2@2 [a3,d4,f#4]@2 d2@2, ~@4 [d4,f#4]@9 ~@11", // D
  AF: "[d2,d3,f#3]@3 ~@3 [a1,a2]@4 ~@2 [d2,d3]@3 ~@9", // D A D
})).s("gm_piano").gain(0.25).pan(0.4)

// bass · tuba
const bass = note("<~@6 A B C D ~@22 B C D ~@22 B C ~@6 E@2 F G H I B C J>".pickRestart({
  A: "~@16 a1 ~ a1 ~ c#2 ~ e2@2", B: "a2@3 ~@3 e2@3 ~@3 a2@4 ~@2 e2@4 ~@2", C: "d3@4 ~@2 a2@3 ~@3 a2@3 ~@3 a2@4 ~@2",
  D: "d3@4 ~@2 a2@4 [f2,g2] e2 d2@5 ~@7", E: "~@6 f#2 ~ d2 ~ f#2 ~ a2@9 ~@3",
  F: "~@2 d2 ~ g2 ~ b2 ~ g2 ~ b2 ~ d3@10 ~@2", G: "~@2 e2 ~ a2 ~ c#3 ~ a2 ~ c#3 ~ e3@10 ~@2",
  H: "~@2 a1 ~ d2 ~ f#2 ~ d2 ~ f#2 ~ a2@11 ~", I: "~@2 a1 ~ d2 ~ f#2 ~ d2 ~ f#2 ~ a2@10 ~@2",
  J: "d3@3 ~@3 a2@3 g2 [e2,f2] d2 d2@4 ~@8", // Fmaj7
})).s("gm_tuba").gain(0.33).pan(0.3)

// other · brass section
const brass_section = note("<~@7 A B C ~@21 D A B C ~@21 D A B E ~@4 F G H I J G K A B L>".pickRestart({
  A: "a4 ~@3 a4 ~ a4 ~@3 a4 ~ a4@2 ~@2 g4 ~ g4 ~ a4 ~ g4 ~",
  B: "[f#4,a4] ~@3 [f#4,a4] ~ [f#4,a4] ~@3 [f#4,a4] ~ b4 ~ c#5 ~ b4 ~ a4 ~@3 g4 ~", C: "f#4@5 ~",
  D: "~@16 f#5 ~ f#5 ~ a5 ~ f#5 ~", E: "[f#4,a4]@7 ~@17", F: "~@18 f#4@5 ~", G: "a4@17 ~ f#4@6", H: "d4@17 ~ d5@5 ~",
  I: "d5@3 b4", J: "g4@17 ~ f#4@5 ~", K: "d4@16 f#5 ~ f#5 ~ a5 ~ f#5 ~", L: "f#4@5 ~ [f#4,a4]@3 ~@3 [f#4,d5]@3 ~@9",
})).s("gm_brass_section").gain(0.35).pan(0.7)

// other · harmonica
const harmonica = note("<A B C D E B F G H I ~@21 J G H K ~@21 J G H L ~@4 M N O P Q N R G H S>".pickRestart({
  A: "~@18 f#5@5 ~", B: "a5@3 f#5", C: "d5@18 d6@5 ~", D: "d6@3 b5", E: "g5@17 ~ f#5@6",
  F: "d5@13 ~@3 d6 ~ d6 ~ e6 ~ d6 ~", G: "c#6 ~@3 c#6 ~ c#6 ~@3 c#6 ~ c#6 ~@3 b5 ~ b5 ~ c#6 ~ b5 ~",
  H: "a5 ~@3 a5 ~ a5 ~@3 a5 ~ g5 ~ a5 ~ g5 ~ f#5 ~@3 e5 ~", I: "d5 ~@7", J: "~@16 d6 ~ d6 ~ e6 ~ d6 ~", K: "d5 ~@5",
  L: "d5@7 ~@17", M: "~@9 f#5@2 ~", N: "a5@17 ~ f#5@6", O: "d5@16 ~@2 d6@5 ~", P: "d6@17 ~ b5@6", Q: "g5@8 ~ f#5@3",
  R: "d5@12 ~@4 d6 ~ d6 ~ e6 ~ d6 ~", S: "d5@5 ~ a5@4 b5 d6@3 ~@10, ~@11 c#6 ~@12",
})).s("gm_harmonica").gain(0.27).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J K L M N O P Q J K L M N O R Q S@2 T U V W G H I X Y X Y N O R Q Z K L M N O AA Q S@2 AB AC V W G
  H AD@2 AE AC V W AF AG AH AI AJ AK G H AL
>`.pickRestart({
  A: "d3@4 ~@2 d3@4 a3@2 ~@4 a3@3 ~ d3 ~ [a3,d4]@2, ~@4 [d4,f#4]@9 ~@3 [d4,f#4]@6 ~@2, ~@2 a3@2 ~@2 d3@3 ~@3", // D5 D
  B: "d3@2 a3 d3@2 a3 d3@2 a3 ~@2 [a3,d4], ~ [d4,f#4]@2 ~ f#4@2, ~@16 d4@5 ~@3, ~@3 d3", // D5 D
  C: "g2@2 b3 g2@2 b3 g2@2 b3 ~@2 b3, ~@4 [d4,g4]@9 ~@3 [d4,g4]@8, ~@3 g2", // G5
  D: "a2@2 ~ a2@2 [a3,c#4] a2@2 g3 a2@2 g3, ~ e4@2 ~ [c#4,e4]@2, ~@4 [a3,c#4]@5 ~@15", // A C#m A
  E: "d3@2 a3 d3@2 a3 d3@2 a3 d3@2 a3, ~@4 [d4,f#4]@9 ~@3 [d4,f#4]@8", // D
  F: "d3@2 ~ d3@2 a3 d3@2 a3 d3 a3 d3, ~@4 [d4,f#4]@9 ~@3 [d4,f#4]@7 ~, ~ a3 ~@4", // D
  G: "~@4 [g3,c#4,e4]@5 ~ [g3,c#4,e4] ~ a2@4 ~@2 a2@4 [g3,e4]@2, a2@10 ~@6 c#4@7 ~, ~@16 [g3,e4]@5 ~@3", // C#dim C
  H: "d3@4 ~@2 d3@4 [a3,d4,f#4] ~ [a2,g3,c#4,e4]@5 ~ [a2,g3,c#4,e4]@4 ~@2, ~@4 [a3,d4,f#4]@5 ~@15", // D A7 D
  I: "~@4 [d4,f#4]@4 d3@2 a3 ~ d3@4 a3@4 d3@2 a3@2, d3 ~@3, ~@4 a3@3 ~@9 [d4,f#4]@7 ~", // D
  J: "a3@4 d3@2 [a3,d4]@4 d3@2 [a2,g3,e4]@5 ~ [g3,c#4,e4]@4 a2@2, f#4@11 ~@13, d3 ~@7", // D5 A7 C#dim
  K: "d3@3 ~@2 d3 a3@2 d3 d4@2 d3, f#4@11 ~ f#4@11 ~, a3@5 ~ [a3,d4]@6 ~@12", // D5
  L: "~@3 d4@2 d3 a2@3 c#4@2 a2, [a3,f#4]@10 ~@2 [g3,e4]@11 ~, ~ d3 ~@4", // D C
  M: "d3@3 d4@2 d3 ~@2 d3 d4@2 d3, [a3,f#4]@10 ~@2 [a3,f#4]@11 ~", // D
  N: "~@2 b3@2 ~ b3 ~@2 a3 ~@2 a3, g2@2 d3!2, ~@4 [d4,g4]@9 ~@3 [d4,f#4]@8", // G5 D
  O: "~@2 b3 ~@2 b3 ~@2 a3 ~@2 a3, g2!2 d3@2, ~@4 [d4,g4]@9 ~@3 [d4,f#4]@8", // G5 D
  P: "~@2 b3 ~@2 b3 d3@2 a3 ~@2 a3, g2@2 ~ d3, ~ [d4,g4]@2 ~ [d4,f#4]@2", // G5 D
  Q: "~@2 e3 a3 ~@2 e4@3 e3 [a3,e4] [a2,e3], a2@3 [b3,e4]@2 a3@4 ~@3, ~@2 a2@3 ~, ~ e3 ~", // A5 E5
  R: "~@2 b3 ~@2 b3 ~@2 a3 ~@2 a3, g2@2 d3!2, ~@4 [d4,g4]@8 ~@4 [d4,f#4]@7 ~", // G5 D
  S: "[[a3,d4]@4 d3@2 a3@2 ~@2 d4 ~ d4@4 d3@2 [a3,d4,g4]@4 ~@2 [a3,d4]@4 d3@2 a3@2 d4@2 ~@6 d3@2 a3@4 d3@2, f#4@4 ~@2 [a3,g4]@3 ~@3 f#4@4 ~@2 [d4,e4]@5 ~, d3 ~@7 d3@6 ~@8 d3@5 ~@7 [d3,a3]@6 ~@8]/2", // D5 Dsus4 D5 A7 Dsus2 D5
  T: "[b3,d4,g4]@4 [g2,d3]@2 [b3,d4,g4] ~ [g2,d3,g3]@2 ~@2 [g2,d3,g3]@4 b3@2 [g2,d3,g3]@4 [b3,d4,g4] ~, g2 ~@4 [d4,g4]@5 ~@2, ~@5 b3@2 ~@5", // G G5 G G5 G G5
  U: "[a2,e4]@2 a3 a2 a3 a2 a3 a2 a3 a2 ~ a2, [a3,c#4]@3 ~ [c#4,e4]@6 ~@2 [b3,e4]@6 ~@2 [a3,c#4,e4]@4", // A5 A C#m E5 A
  V: "d3@2 a3 ~@3 a2@2 a3 ~@2 a3, ~@4 d4@8 ~@4 [c#4,e4]@7 ~, ~@4 f#4@5 ~ a3@4 ~@10, ~ d3 ~ a2", // C#m
  W: "d3@4 a3@2 d3 ~ a3@2 ~@2 a3@5 ~@5 a3 ~, ~@2 [d4,f#4]@3 d3@3 ~ d3@3, ~@6 [d4,f#4]@5 ~", // D
  X: "d3@4 a3@2 ~@4 a3 ~ [d4,e4]@4 a2@2 [b3,d4,e4,a4]@4 a2@2, ~@4 [d4,f#4]@7 ~@13, ~@2 d3@2 [a2,b3] ~@3", // Dsus2 Bm7 D Asus2
  Y: "~@4 a3@2 [d4,a4]@4 ~@8 [d4,a4]@4 a3 ~, d3@6 ~@4 [d3,a3]@4 ~@2 d3@7 ~, ~@2 [d4,e4] ~, ~@16 a3@5 ~@3", // D5 Dsus2
  Z: "a3@2 d3 [a3,d4]@2 d3 [a2,g3,e4]@3 [g3,c#4,e4]@2 a2, f#4@11 ~@13, d3 ~@7", // D5 A7 C#dim
  AA: "~@2 b3 ~@2 b3 ~@2 a3 ~@2 a3, g2@2 d3!2, ~ [d4,g4]@2 ~ [d4,f#4]@2", // G5 D
  AB: "[b3,d4,g4]@4 [g2,d3,g3]@2 [b3,d4,g4] ~ [g2,d3,g3]@2 ~@2 [g2,d3,g3]@4 b3@2 [g2,d3,g3]@4 [b3,d4,g4] ~, g2 ~@9 [d4,g4]@9 ~@5, ~@5 b3@2 ~@5", // G G5 G G5 G G5
  AC: "[a2,e4]@2 a3 a2 a3 a2 a3 a2 a3 a2 a3 a2, [a3,c#4]@3 ~ [c#4,e4]@6 ~@2 [b3,e4]@6 ~@2 [c#4,e4]@4", // A5 A C#m E5 C#m
  AD: "[[a3,d4]@4 d3@2 a3@2 ~@2 d4 ~ d4@4 d3@2 [a3,d4,g4]@4 ~@2 [a3,d4]@4 d3@2 a3@2 d4@2 ~@6 d3@2 a3@4 d3 ~, f#4@4 ~@2 [a3,g4]@3 ~@3 f#4@4 ~@2 [d4,e4]@5 ~, d3 ~@7 d3@6 ~@8 d3@5 ~@7 [d3,a3]@6 ~@8]/2", // D5 Dsus4 D5 A7 Dsus2 D5
  AE: "[b3,d4,g4]@4 [g2,d3,g3]@2 [b3,d4,g4] ~@3 [b3,d4,g4]@2 [g2,d3,g3]@2 [b3,d4,g4]@2 ~@2 [d4,g4]@4 b3 ~, [g2,g3]@2 ~@14 [g2,d3,g3]@7 ~, d3 ~@17 b3@3 ~@3", // G G5 G G5 G G5 G G5
  AF: "d3@4 ~@2 d3@4 a3@2 a2@4 a3@2 a2@3 ~ a3@2, ~ [d4,f#4]@2 ~ [d4,f#4]@2, ~ a3 ~@4", // D
  AG: "d3@2 a3 d3@2 a3 d3@2 a3 ~@2 a3, ~ [d4,f#4]@2 ~ [d4,f#4]@2, ~@3 d3", // D
  AH: "g2@2 b3 g2@2 b3 g2@2 ~ g2@2 [b3,d4,g4], ~ [d4,g4]@2 ~ [b3,d4,g4] ~", // G G5 G
  AI: "~@2 a2@2 a3@2 a2@4 [a3,e4]@2 a2@4 a3@2 a2@3 ~ [a3,c#4]@2, ~@4 [c#4,e4]@5 ~@7 e4@8, ~@16 c#4@5 ~@3", // A5 A C#m
  AJ: "d3@2 ~ d3@2 a3 a2@2 a3 a2@2 a3, ~ [d4,f#4]@2 ~ [d4,f#4]@2, ~ a3 ~@4", // D
  AK: "d3@2 a3 d3@2 a3 d3@2 a3 d3 a3 d3, ~@2 [d4,f#4]@4 ~@2 [d4,f#4]@3 ~", // D
  AL: "[d3,a3,f#4] ~ [a2,g3,c#4,e4] ~ [d3,a3,d4,f#4] ~@3, d4 ~@23", // D A7 D
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.6)

// other · trombone
const trombone = note(`<
  ~@7 A B ~@5 C D@2 E ~@4 C D@2 E ~@6 A B ~@5 C D@2 E ~@4 C D@2 E ~@6 F G H ~@5 I@2 J K L I A B ~
>`.pickRestart({
  A: "a3@8 ~@2 b3@2 c#4@5 ~ d4@3 ~ e4@2", B: "f#4 ~@3 e4 ~ d4 ~@3 b3 ~ a3@4 ~@8", C: "g4@12 f#4@11 ~", D: "g4 f#4",
  E: "e4@19 ~@5", F: "a3@8 ~@2 b3 ~ c#4@5 ~ d4@3 ~ e4@2", G: "f#4 ~@3 e4 ~ d4 ~@3 b3 ~ a3@5 ~@7", H: "d3@7 ~@17",
  I: "~@2 a2 ~ d3 ~ f#3 ~ d3 ~ f#3 ~ a3@8 ~@4", J: "~@2 d3 ~ g3 ~ b3 ~ g3 ~ b3 ~ d4@12",
  K: "~@2 e3 ~ a3 ~ c#4 ~ a3 ~ c#4 ~ e4@7 ~@5", L: "~@2 a2 ~ d3 ~ f#3 ~ d3 ~ f#3 ~ a3@11 ~",
})).s("gm_trombone").gain(0.35).pan(0.4)

// chords · drawbar organ
const drawbar_organ = note("<~@26 A@2 B C D E ~@19 F@2 B C G E ~@2 F@2 B C G E ~@9>".pickRestart({
  A: "[f#5 g5 f#5 e5, d5, a4 a4]/2", B: "[g4,b4,d5]", C: "[a4,c#5,e5]", D: "[d5,f#5] [g4,c#5,e5]", E: "[a4,d5,f#5]",
  F: "[[a4,d5,f#5] [a4,g5] [a4,f#5] [a4,d5,e5], ~ d5@2 ~]/2", G: "[a4,d5,f#5] [g4,c#5,e5]",
})).s("gm_drawbar_organ").gain(0.16).pan(0.6)

// bass · acoustic bass
const bass_2 = note(`<
  ~ A B C D E F G H I J K L K M N O P J K L K M N O P Q R S T U V G H I J K J K M N O P J K L K M N O P Q W S T U X G H
  Q Y S T U V Z AA AB AC AD AE G H AF
>`.pickRestart({
  A: "d2@5 ~ d2@6 a1@5 ~ a1@6", B: "d2@5 ~ d2@6 d1@6 d2@3 ~ d1@2", C: "g1@4 ~@2 g1@6 g2@5 ~ g1@6",
  D: "a1@5 ~ a1@6 e2@5 ~ a1@6", E: "d2@5 ~ d2@6 a1@4 ~@2 a1@5 ~", F: "d2@5 ~ d2@6 d1@4 d2@2 d1 ~ d2@2 d1@2",
  G: "a1@4 ~@2 a1@4 ~@2 a1@5 ~ a1@6", H: "d2@3 ~@3 d2@6 a1@5 ~ a1@4 ~@2", I: "d2@5 ~ a1@6 d2@5 ~ a1@6",
  J: "d2@5 ~ d2@5 ~ a1@5 ~ a1@6", K: "d2 a1 d2 a1", L: "d2@2 ~ d2@3 a1@2 ~ a1@3", M: "g1@4 ~@2 g1@6 d2@5 ~ d2@6",
  N: "g1@5 ~ g1@6 d2@4 ~@2 d2@5 ~", O: "g1@5 ~ g1@6 d2@5 ~ d2@6", P: "a1@5 ~ a1@6 a2@4 a1@2 a2@2 e2@2 a1@2",
  Q: "d2@5 ~ d2@5 ~ d2@6 a1@5 ~", R: "d2@4 ~@2 d2@4 ~@2 d2@5 ~ d2@3 ~ a1@2", S: "g1@5 ~ g1@6 g2@5 ~ g1@6",
  T: "a1@5 ~ a1@6 e2@6 a1@6", U: "d2@4 ~@2 d2@6 a1@5 ~ a1@6", V: "d2@4 ~@2 d2@6 d1@3 ~ d1@2 f#1@2 a1@2 d2 ~",
  W: "d2@4 ~@2 d2@5 ~ d2@5 ~ d2@3 ~ a1@2", X: "d2@4 ~@2 d2@6 d1@3 ~ d1@2 f#1@2 a1 ~ d2 ~",
  Y: "d2@4 ~@2 d2@5 ~ d2@5 ~ d2@3 ~ a1 ~", Z: "d2@5 ~ d2@5 ~ a1@4 ~@2 a1@5 ~",
  AA: "d2@4 ~@2 d2@4 ~@2 d2@3 ~ d1@2 a1@2 d2@2 a1 ~", AB: "g1@3 ~@3 g1@6 g2@5 ~ g1@6",
  AC: "a1@3 ~@3 a1@4 ~@2 a1@4 ~@2 a1@6", AD: "d2@4 ~@2 d2@5 ~ a1@4 ~@2 a1@5 ~", AE: "d2@2 ~ d2@2 ~ d2@3 d1 f#1 a1",
  AF: "d2 ~ a1 ~ d2 ~@3",
})).s("gm_acoustic_bass").gain(0.27)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!9 [x!4]!16 [x!2]!9 [x!4]!16 [x!2]!22 [x!3 ~]>").gain(0.29)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@9 B C B C B C B C B C B C B C B C D@5 E A@3 B C B C B C B C B C B C B C B C D@5 E A@2 D@5 E D@5 E A@2 F
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x!2 ~ x", B: "~@2 x", C: "~@2 x ~ x!3 ~@5", D: "~ x ~ x", E: "~@3 x ~ x ~ x!3 ~@2", F: "~ x!2 ~",
})).gain(0.22)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~ A@9 B C B C B C B C B C B C B C B C ~@5 D A@3 B C B C B C B C B C B C B C B C ~@5 D A@2 ~@5 D ~@5 D A@2 ~
>`.pickRestart({
  A: "~@7 x ~@4", B: "~ x ~@4", C: "~ x ~@2", D: "~ x",
})).gain(0.11)

// drums · hihat
const hihat = s("hh").struct("<~ A@9 B@16 ~@6 A@3 B@16 ~@6 A@2 ~@12 A@2 C>".pickRestart({
  A: "x!2 ~ x!2 ~", B: "~@2 x ~@2 x ~@2 x ~ x!2", C: "x",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@31 A ~@24 A ~@7 A ~@5 A ~@3>".pickRestart({
  A: "~@10 x!2",
})).gain(0.29)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 A ~@24 A ~@7 A ~@5 A ~@3>".pickRestart({
  A: "~@3 x",
})).gain(0.22)

// drums · open hat
const open_hat = s("oh").struct("<~@73 [~ x ~@2]>").gain(0.29)

// drums · crash
const crash = s("cr").struct("<~@26 A ~@5 A ~@18 A ~@5 A ~ A ~@5 A ~@5 A ~ B>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.22)

// drums · ride
const ride = s("rd").struct("<~@10 A@16 B@6 ~@3 A@16 B@6 ~@2 B@12 ~@3>".pickRestart({
  A: "x!4", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x",
})).gain(0.22)

// drums · tambourine
// … 11 more lines

More by Antoine