Strudelify
E poi cover art

E poi

Giorgia

KeyF♯ majorTempo116 bpm
0:00/0:00
// E poi — Giorgia
// 116 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 126 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
const bass = note(`<
  ~@9 A B C B A D@2 E A F@2 G H I J K@2 L@2 G H I H M N@2 O M P@2 ~@2 Q R S T U R S V W X S Y W Z K@2 AA@2 K@2 AB@2 G H
  I J K@2 AC@2 G H I H M N@2 O M P@2 Q R S T U R S AD AE@2 S V W X S Y W X S AF W Z K@2 AA@2 K@2 AA@2 ~@14
>`.pickRestart({
  A: "d#2", B: "a#2", C: "b2", D: "[f2@7 f2@9]/2", E: "e2!2", F: "[e2@31 ~]/2", G: "d#1@13 ~ d#1 ~", H: "a#1", I: "b1",
  J: "f#1@5 f#1@3", K: "g#1/2", L: "[f#1@3 f1]/2", M: "d#1", N: "[f1@7 f1@9]/2", O: "e1!2", P: "[e1@31 ~]/2",
  Q: "f#1@13 ~ f#1 ~", R: "c#1@13 ~ c#1 ~", S: "g#1@13 ~ g#1 ~", T: "a#1@15 ~", U: "f#1@12 ~@2 f#1 ~",
  V: "g#1@4 ~ f#1@3", W: "b1@4 ~ f#1 b1 f#1", X: "a#1@13 ~ a#1 ~", Y: "g#1@9 ~ f#1@6", Z: "a#1@12 ~@2 a#1 ~",
  AA: "f#1/2", AB: "[f#1@23 ~ f1@8]/2", AC: "[f#1@24 f3@3 c#3@2 f2@3]/2", AD: "a#1@4 ~ a#1@3",
  AE: "[~@2 f#1@6 a#1@6 g#1@15 ~ g#1 ~]/2", AF: "g#1 ~ f#1@3 ~ g#1@3 ~ a#1@5 ~",
})).s("gm_fretless_bass").gain(0.48)

// chords · piano
const piano = note(`<
  ~@5 A@2 B@2 C D E F G H@2 I J K@2 L M N O P Q R S C D E F T U@2 V W X@2 ~@2 Y Z AA AB AC AD AE@2 AF AG@4 AH AI@4 AJ@2
  AK@2 L M N O AL AM R S C D E F T U@2 V W X@2 Y Z AN AB AC AD AO AP AQ@2 AR AS AF AT@4 AU@2 AV AW AH AI@4 AJ@2 AX@3 ~@3
  A@2 AY@5 ~ AZ@2
>`.pickRestart({
  A: "[~@14 f#5 c#5 [d#4,a#4]@16, ~@15 [g#3,b4]@17]/2", // D#5 G#m
  B: "[c#5@3 g#4@3 ~@3 [g#3,c#4]@7, [f#2,f5], ~@3 c#5@13, ~@3 g#4@5]/2", C: "[f#3,a#3,f4]", D: "[g#3,c#4,f4]",
  E: "[f#3,a#3,d#4]", F: "[g#3,c#4,f4] f#3", G: "~@3 f4@5, f3, ~ f#3@7, ~ a#3@3",
  H: "[[f3,g#3,b3,d#4]@11 ~@3 d#4@2, ~@11 f3@5, ~@3 g#3, ~@13 b3@3]/2", I: "[e3,g#3,b3,e4]", J: "[d#3,f#3,a#3,d#4]",
  K: "[e3,g#3,b3,d#4,f#4]/2", L: "[f#3,a#3,f#4]", M: "[g#3,c#4,f4]@5 [c#4,f4,g#4]@3", N: "[a#3,d#4,f#4]",
  O: "~@8 [f#3,g#3,c#4]@2 [f#3,g#3,c#4] ~@5", P: "~@10 f#5@2 [f#5,a#5] ~ f#5@2, ~@10 a#5 ~@3 a#5 ~",
  Q: "~@2 [c#5,f#5]@2 ~@2 [g#4,c#5]@7 ~@3", R: "[f#3,a#3,c#4]@15 ~",
  S: "f#3@2 [a#3,c#4,f#4]@4 f#3 ~ [f3,a#3,c#4,g#4]@7 ~", T: "[g#4,a#4,c#5] [c#4,f4,f#4], [d#3,f#3,a#3]",
  U: "[b4@7 f4 g#4 d#5 b4 g#5@4 ~, [f3,g#3,b3]]/2", V: "[g#3,b3,e4]", W: "[d#3,f#3,b3]", X: "[e3,g#3,b3,d#4]/2",
  Y: "a#3@5 ~ a#3@2 c#4@5 ~ c#4@2, [c#3,f#3] [f#4,a#4]", Z: "[c#3,g#3]@8 [e4,g#4]@6 c#4 ~, ~@8 c#4@5 ~@3",
  AA: "[e3,g#3,b3]@8 e4@4 b3 ~@3, ~ [f#4,b4]", AB: "[f#3,a#3,c#4]@8 f#4@4 c#4 ~ f#4@2, ~@8 [a#4,c#5]@7 ~",
  AC: "[c#3,f#3,a#3]@8 ~@4 [f#3,a#3] ~ c#4@2, ~ [f#4,a#4]", // F#
  AD: "~@2 c#4@4 ~@2 c#4@2 e4 ~@3 g#3 ~, [c#3,e3,g#3]@4 ~@2 g#3@7 ~@3, ~ [e4,g#4]@3 ~@2 [c#4,e4,g#4]@2", // C#m E C#m
  AE: "[b3@5 ~@7 b3@2 ~@2 b3@5 ~ b3@3 ~ [e4,f#4,b4]@2 ~@4, [e3,f#3] [f#4,b4] ~@2, ~@6 b3@5 ~@5 [e3,f#3]@8 ~@8, ~@4 e4@3 e4@3 ~@6]/2", // Esus2 B5 Esus2
  AF: "f#3@6 ~@2 [b3,d#4]@6 f#3 ~, [b3,d#4] ~, ~@6 f#3@7 ~@3", // B
  AG: "[[a#3,c#4]@6 ~@2 a#3@2 ~@6 [f#3,b3]@8 [f#3,g#3,b3]@6 ~@2 [f#3,g#3]@8 b3 ~ [a#3,c#4]@4 ~@2 [b3,d#4]@6 ~@4 d#4@4 f#3 ~, f#3@5 ~ f#3@6 f#3@4 d#3@13 ~ d#3@10 ~@6 f#3@8 f#3@7 ~@3, ~@10 c#4@4 a#3@4 ~@14 b3@6 ~@18 b3@7 ~]/4", // A#m B5 G#m7 F#sus2 A#m B
  AH: "[f#3,a#3,c#4]@7 ~ [f#3,a#3,c#4]@7 ~", // F#
  AI: "[[g#3,b3,d#4]@14 [f#3,a#3,c#4]@20 [a#3,b3] ~@3 f#4@8 [c#3,f#3,a#3]@17 ~, ~@18 [a#3,b3]@5 ~@9]/4", // G#m F# Bmaj7 F# Bmaj7
  AJ: "[~@2 b3 ~ b3@2 f#3@2 c#4@4 b3@2 e3@18]/2",
  AK: "[~@2 [a#3,b3] ~@3 f#4@8 [c#3,f#3,a#3]@10 [c#3,f3,g#3]@6 ~@2, ~@2 [a#3,b3]@5 ~@9]/2", // Bmaj7 F# C# Bmaj7
  AL: "~@5 [f#5,a#5] ~ [c#5,f#5]", AM: "~@2 [a#4,c#5]@2 ~@2 [g#4,c#5]@7 ~@3",
  AN: "[d#3,g#3,b3]@8 d#4@4 b3 ~@3, ~ [f#4,b4]", AO: "[g#3,b3,d#4]@8 [g#3,b3,d#4]@6 g#3 ~",
  AP: "c#4@2 c#4 [c#4,f#4,a#4]@3 [f#4,a#4,c#5]@2, [a#3,f#4]@3 ~@5", // F# D#m
  AQ: "[~ [a#3,c#4,f#4]@3 [c#4,f#4,a#4]@3 [g#3,b3,e4]@5 [g#3,b3,e4]@4]/2", AR: "[g#3,b3,e4]@4 g#3@3 g#3, ~ [b3,e4]",
  AS: "g#3@6 g#3@2 [g#3,b3]@2 [g#3,b3,e4]@3 ~@3, e4@5 ~@3, b3 ~", // G#m E
  AT: "[[a#3,c#4]@6 ~@2 a#3@2 ~@6 [f#3,b3]@8 [f#3,g#3,b3]@6 ~@2 [f#3,g#3]@8 b3 ~ [a#3,c#4]@4 ~@10 [b3,d#4]@6 f#3 ~, f#3@5 ~ f#3@6 f#3@4 d#3@13 ~ d#3@10 ~@6 f#3@8 f#3@7 ~@3, ~@5 c#4@2 a#3@2 ~@7 b3@3 ~@5 b3@4 ~@4]/4", // A#m B5 G#m7 F#sus2 A#m B
  AU: "[[a#3,c#4]@3 ~ a#3 ~@3 [f#3,b3]@4 [f#3,g#3,b3]@3 d#3, f#3@5 ~ f#3@6 f#3@4 d#3@13 ~@3, ~@5 c#4@2 a#3@2 ~@7]/2", // A#m B5 G#m7
  AV: "[f#3,g#3,b3] ~ [c#3,f#3,a#3]@2 ~@2 [d#3,f#3,b3]@2 ~@2 [f#3,a#3,c#4]@5 ~", // G#m7 F# B F#
  AW: "[b3,d#4]@6 ~@4 d#4@4 f#3 ~, ~@6 f#3@7 ~@3, ~@8 b3@7 ~", // B
  AX: "[~@2 [a#3,b3] ~@3 f#4@8 [c#3,f#3,a#3]@32 ~@2, ~@2 [a#3,b3]@5 ~@17]/3", // Bmaj7 F# Bmaj7
  AY: "[g#4@3 g#4@3 ~@6 f#3@3 ~@3 g#3@16 ~@6, [f#2,f5]@9 g#3@3 b3@16 ~@12, ~@3 c#5@12 [f#3,a#3]@16 ~@9, ~@3 g#4@8 ~@9, ~@9 c#4@16 ~@15]/5", // F#maj7 F#
  AZ: "[~@8 [a#6,c#7]@21 ~@3, ~@7 g#6@21 ~@4]/2", // A#m
})).s("gm_piano").gain(0.42).pan(0.7)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@20 A B C D E@2 F@2 A B C G H I@2 J K L@2 ~@10 M N O@2 M P@5 ~@4 A B C D E@2 F@2 A B C G H I@2 J K L@2 ~@7 M Q@4 M N
  O@2 M N R@2 M P@5 ~@10 S@4 T@3 ~
>`.pickRestart({
  A: "[a#3,d#4,f#4]", B: "[g#3,c#4,f4]", C: "[f#3,b3,d#4]", D: "[a#3,c#4,g#4]", E: "[b3,d#4,f#4]/2",
  F: "[[a#3,f#4]@3 [f4,g#4], c#4]/2", G: "[f3,g#3,c#4]", H: "[d#4,f#4,a#4]", I: "[f4,g#4,b4]/2", J: "[e4,g#4,b4]",
  K: "[d#4,f#4,b4]", L: "[e4,b4]/2", M: "f#6", N: "g#6@3 f#6@5", O: "b5/2",
  P: "[g#6@3 ~@5 [d#5,g#5,b5]@7 [c#5,f#5,a#5]@20 ~@5, ~@3 f#6@32 ~@5]/5", // G#m F#
  Q: "[~ f#6@3 a#6@3 ~@5 e6@3 ~@3 g#5@3 ~@8 f#6@3, ~@7 g#6@9 g#6@13 ~@3, ~@15 b5@3 ~@3 e5@11]/4", R: "[b5@9 ~@7]/2",
  S: "[[g#4,f5]@3 [g#4,c#5]@3 [c#4,g#4]@3 [c#3,g#3,c#4]@3 [d#3,b3]@3 [c#3,a#3]@3 [b2,g#3]@14]/4", // C# C#5 G#m F# E
  T: "[g#3@9 a#3@31 ~@8, [f#2,c#3,f#4]@5 ~]/3", // F#5
})).s("gm_string_ensemble_2").gain(0.3)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~@37 A@2 ~@2 B C D B@2 C E@2 F B G@2 F B H@2 I@2 J@2 K@2 ~@17 A@2 B C L B@2 C L M@5 F B G@2 F B N ~ F B H@2 I@2 J@2
  I@2 ~@14
>`.pickRestart({
  A: "f#4/2", B: "[f#3,a#3,c#4]", C: "[e3,g#3,c#4]", D: "[f#3,b3,e4]", E: "[f#3,b3,e4]/2", F: "[f#3,b3,d#4]",
  G: "[[g#3,b3,d#4]@13 [f#3,a#3,c#4]@3]/2", H: "[[g#3,b3,d#4]@7 [f#3,a#3,c#4]@9]/2",
  I: "[[f#3,b3,c#4]@7 [f#3,a#3,c#4]@9]/2", J: "[g#3,b3,e4,f#4]/2",
  K: "[[f#3,b3,c#4]@7 [f#3,a#3]@5 [f3,g#3]@4, ~@7 c#4@9]/2", L: "[g#3,b3,e4]",
  M: "[[f#3,a#3,c#4]@23 ~@7 g#3@44 f#3@6, ~@3 [b3,e4]@5]/5", N: "[g#3,b3,d#4]",
})).s("gm_string_ensemble_2").gain(0.24)

// chords · epiano2
const epiano2 = note("<~@16 A B C@2 ~@15 A B D@2 ~@39 A B D@2 ~@36 E@2 ~@6>".pickRestart({
  A: "[c#5,f#5,a#5]@7 ~", B: "c#5", C: "[[g#4,b4,d#5]@31 ~]/2", D: "[[f#4,g#4,b4]@31 ~]/2",
  E: "[f5@3 c#5@3 ~@3 c#4@3 ~@4, g#4@3 g#4@3 ~@2]/2",
})).s("gm_epiano2").gain(0.18)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@41 A B C D A B E@2 F G H@2 F G I@3 ~@24 A B C D A B C J K@2 C L F G H@2 F G M N F G I@3 ~@19
>`.pickRestart({
  A: "[c#3,f#3,c#4]", B: "[g#2,c#3,g#3]", C: "[g#2,e3,g#3]", D: "[c#3,f#3,a#3]", E: "[[g#2,e3,g#3]@13 [e3,f#3,e4]@3]/2",
  F: "[b2,f#3,b3]", G: "[a#2,f#3,a#3]", H: "[[g#2,d#3,g#3]@13 [f#2,f#3,a#3]@3]/2", I: "[g#2,d#3,g#3]/3",
  J: "[f#2,c#3,f#3]", K: "[~ [f#2,c#3,f#3]@3 [a#2,c#3,a#3]@3 [g#2,e3,g#3]@8 [g#2,e3,g#3]]/2",
  L: "[g#2,e3,g#3]@9 ~ [f#2,e3,f#3]@6", M: "[g#2,d#3,g#3]", N: "~ [f#2,c#3,f#3] ~ [g#2,d#3,g#3] ~ [a#2,f3,a#3]@3",
})).s("gm_distortion_guitar").gain(0.18)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@9 A B C D E F@2 G H@3 A I J K L M N@2 A I O D E P@2 G Q@3 ~@2 R@8 S T U@2 S V W@8 A I J K X Y@3 A I O D E P@2 G Q@3
  Z@8 ~ AA@3 S T U@2 S T AB AC S V AD@2 AE@7 ~@5 AF@4 AG@3 ~
>`.pickRestart({
  A: "~ c#4, d#2, ~ a#2@7, ~ f3@3, ~@3 f#3@5", B: "~ g#4, a#2, ~ f3@7, ~ a#3@3, ~@3 c#4@5",
  C: "~ [c#4,d#4], b2, ~ f#3@2 f#3@5, ~ a#3@3", D: "~@7 f3, c#3!2, ~ g#2@7, ~ f3@2 g#3, ~@3 g#3@2 c#4@3",
  E: "~ c#4, f#3, ~ d#3@2 d#3@5, ~ f3@3",
  F: "[~@7 b3, g#3@4 g#3@9 g#3@3, ~ d#3@2 d#3@3 d#3 d#4@9, ~ f3@4 b3@2 ~, ~@5 b3@4 d#3@3 [d#3,f3]@4]/2", // D#sus2
  G: "~ e4, a#4, ~ e3@7, ~ g#4@3, ~@3 b3@5",
  H: "[~@8 d#4@7 ~ [b3,d#4]@32, g#4@5 ~@11, ~@2 d#3@13 [e2,e3,g#3]@32 ~, ~@4 f#4@11 ~@33, ~@2 a#3@3 ~@11]/3", // B E
  I: "~@3 f3 [a#3,d#4] [g#3,c#4] [d#3,g#3] [a#2,f3], a#2 ~, ~ f3@2 ~@5, ~ g#3 ~@2", // D#5 C#5 G#5 A#5
  J: "~@7 f#3, b2, ~ f#3@3 f#3 c#4@3, ~ a#3@3, ~@3 b3@5", K: "~@7 f#3, c#3, ~ f#3@3 f#3@3 ~, ~ a#3@2 a#3, ~@3 c#4@5",
  L: "~@6 b3@2 f#3 ~ [f#4,a#4]@2 [f#4,a#4] ~ [f#4,a#4]@2, b2@9 ~@7, ~ f#3@3 ~@4, ~@4 a#3@5 ~@7", // F#
  M: "~ [c#4,f#4] ~@4 b3 ~, ~@3 [f#3,c#4]@4 ~", // F#5
  N: "[a#3@2 ~@9 f#3 a#3@2 a#3@2, f#4@5 f#4@4 f#4@3 ~@4, f#3@4 f#3@3 f#3@4 ~ [f3,c#4,g#4]@4, c#4@3 c#4@5 c#4@4 ~@4, ~ a#3@2 a#3@2 a#3 ~@2]/2", // C#
  O: "~ [c#4,d#4], ~ f#3@2 f#3@5, ~ a#3@3", // C#sus2
  P: "[~@7 b3, g#3@4 g#3@4 g#3@2 b3 g#4@2 g#3@3, ~ d#3@2 d#3@3 d#3@10, ~@2 f3@5 f3@9, ~@5 b3@4 d#4@7]/2",
  Q: "[~@4 f#3@3 ~ d#4@16, c#4@7 ~@17, ~ d#3@6 [e2,e3]@16 ~, ~@4 f#3@4 ~@7 [g#3,b3]@32 ~, ~@3 b3@4 ~@17]/3", // E G#m
  R: "[~@62 b3!2, ~ c#3@2 c#3@2 c#3@12 f#3 b3 f#3 e4 f#3@3 b3@14 f#3 a#3@10 f#3 b3 f#3 e4 f#3 b3 e4 b3 f#3 b3@3 f#3@3, ~@2 f#3@4 f#3@2 f#3@5 e3@12 a#3 c#4 a#3 f#4@12 f#3@6 g#3 c#4@16 ~, ~@4 a#3@10 g#3 c#4@7 b3 e4@10 c#3 f#3 c#3 a#3 c#3@11 g#3@16, ~@7 c#4@2 e3 g#3 e3 e4@4 g#3@13 f#3 a#3 c#4@10 e3 g#3 e3 c#4 e3@14 f#3 e4@4]/8",
  S: "~@7 d#3, f#2, d#4@2 d#3 f#3, ~ d#3@2 b3@5, ~@2 f#3@3 d#4@3",
  T: "~@7 c#3, [f#2,c#4], ~ c#3@3 c#3@2 a#3@2, ~ f#3@3, ~@3 a#3@2 f#4@3", // F#5
  U: "[~@12 d#4 ~@2 c#3, g#2@7 d#3 d#4@3 b3@2 ~@3, d#4@4 d#3@2 g#3@3 d#3@4 ~@3, ~ d#3@2 b3@7 g#3@3 ~@3, ~@2 g#3@3 d#4@3 g#2@5 [f#2,c#4]@3]/2", // F#5
  V: "~@7 c#3, f#2, c#4@3 c#4@5, ~ c#3@3 c#3@2 a#3@2, ~@2 a#3@3 f#4@3",
  W: "[[g#3,b3,d#4]@7 [f#3,a#3,c#4]@10 b3 ~@15 b3 ~@5 e3@10 b3 ~@5 a#3@5 g#3@3 ~, ~@18 b3@15 ~ b3@4 b3@11 ~ b3@10 ~@4, ~@19 f#4@16 f#3@14 ~@15, ~@23 a#3@16 ~@25, ~@36 c#4@13 ~@2 f#4@9 ~@4]/8", // G#m F#
  X: "~@6 b3@2 f#3 ~ [f#4,a#4]@2 ~@2 [c#4,f#4]@2, b2@9 ~@7, ~ f#3@3 ~@4, ~@4 a#3@5 ~@7", // F# F#5
  Y: "[~ [a#3,c#4] ~ b3@3 ~@2 a#3@2 ~@9 f#3 a#3@2 a#3@2, ~@3 f#3@4 ~ f#4@4 f#3@2 a#3@3 f#4@3 ~@4, ~@3 b3@7 ~@2, ~@8 f#3@3 c#4@4 f#3@3 a#3@2 [f3,c#4,g#4]@4, ~@8 c#4@2 a#3@3 f#4@3 c#4@4 ~@4]/3", // A#m C#
  Z: "[~@63 f#4, ~ c#3@2 c#3@2 c#3@12 f#3 b3 f#3 e4 f#3@3 b3@14 f#3 a#3@10 f#3 b3 f#3 e4 f#3 b3 e4@4 a#3 f#4 f#3@3, ~@2 f#3@4 f#3@2 f#3@5 e3@12 a#3 c#4 a#3 f#4@12 f#3@6 g#3 c#4@9 b3@8, ~@4 a#3@10 g#3 c#4@7 b3 e4@10 c#3 f#3 c#3 a#3 c#3@11 g#3@16, ~@7 c#4@2 e3 g#3 e3 e4@4 g#3@13 f#3 a#3 c#4@10 e3 g#3 e3 c#4 e3@12 f#3 c#4@6]/8",
  AA: "[~@11 b3, ~ e3@2 e3@2 e3@4 e3@2 e3@2 e3@4 e3@2 e3@2 e3@3, ~ b3@2 b3 b3 b3@2 b3 b3 b3@2 ~, ~@4 e4@3 e4@5 e4@3 e4@5 e4@4]/3",
  AB: "~@7 d#3, g#2, d#4@2 d#3 g#3, ~ d#3@2 b3@5, ~@2 g#3@3 d#4@3",
  AC: "[g#2,d#4] ~ [f#3,a#3]@2 ~@2 [g#3,b3]@2 ~@2 [a#3,c#4]@6", AD: "[[g#3,b3,d#4]@7 [f#3,a#3,c#4]@9]/2",
  AE: "[~ b3 ~@15 b3 ~@5 e3@10 b3 ~@5 a#3@16 ~, ~@2 b3@15 ~ b3@4 b3@11 ~ b3@16 ~@6, ~@3 f#4@16 f#3@14 ~@23, ~@7 a#3@16 ~@33, ~@20 c#4@13 ~@2 f#4@16 ~@5]/7",
  AF: "[c#5@3 g#4@3 c#4@3 ~@9 [b2,g#3]@14, f5@9 g#3@3 [d#3,b3]@16 ~@4, ~@3 c#5@12 [c#3,a#3]@16 ~, ~@3 g#4@8 ~@5, ~@9 c#4@16 ~@7]/4", // E G#m F#
  AG: "[~@9 a#3@31 ~@8, f#2@13 ~@3, ~@2 c#3@5 c#3@32 ~@9, ~ g#3@8 ~@3]/3",
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@20 A@3 B C A@3 C A@2 B A@3 B C A ~@3 C A C A D A@2 B D A@2 B D A@2 ~@7 A@3 B C A@2 E C A@2 B A@2 F B A G ~ C A C A@5
  H I A B D A@2 B D A@2 J D A@2 ~@21
>`.pickRestart({
  A: "x", B: "x ~@4 x ~@2", C: "x ~@6 x", D: "x ~@2 x", E: "x ~@7 x ~@2 x ~ x ~@2", F: "x ~@5 x!2 ~@6 x ~",
  G: "x ~@14 x", H: "x!2 ~@2 x ~@2 x", I: "~@2 x ~@4 x", J: "x!2 ~ x ~ x ~@2",
})).gain(0.48)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@45 A ~ B ~ A ~ B ~ A ~@32 B ~ B ~@5 A ~ B ~ A ~ B ~ A ~@23>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@63 [~ x]!7 ~@56>").gain(0.6)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<[x!4] ~@125>").gain(0.18)

// drums · snare
const snare = s("sd").struct("<~@39 A ~ B@14 ~@7 B ~@7 C B@8 ~ D E B@8 ~ B@13 ~@22>".pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~ x", C: "~@3 x ~@4", D: "~@5 x!2 ~", E: "x ~@2 x ~@4",
})).gain(0.6)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@39 [~@7 x] [~ x ~ x ~ x!2 ~] ~@60 [~@9 x ~@6] ~@24>").gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@40 A ~@13 B ~@22 C ~ D B E ~@7 F ~@13 B ~@22>".pickRestart({
  A: "~@5 x!2 ~", B: "~@7 x", C: "~ x", D: "~@6 x!2", E: "~@3 x", F: "~@15 x",
})).gain(0.48)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 A B ~@13 C ~@7 D ~@14 D ~ E F G ~@7 H ~@13 C ~@22>".pickRestart({
  A: "~@7 x", B: "~ x ~ x ~@4", C: "~@11 x!2 ~@3", D: "~ x", E: "~@4 x!2 ~@2", F: "~@13 x ~@2", G: "~@5 x ~@2",
  H: "~@14 x!2",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@69 [~@6 x!2] ~@31 x ~@24>").gain(0.3)

// … 46 more lines

More by Giorgia