Strudelify
Che vuoi che sia cover art

Pooh 60: La nostra storia

Che vuoi che sia

Pooh

KeyD majorTempo70 bpm
0:00/0:00
// Che vuoi che sia — Pooh
// 70 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 2, 4/4 at bar 7, 2/4 at bar 20, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 101 bars on a 16-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 24.
setcpm(70/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, A@4 for four bars: edit a riff to change every repeat.

// chords · piano
const piano = note("<A B C D E@2 ~@45 F ~@49>".pickRestart({
  A: "~@15 c#5, ~@7 b4", B: "~@7 b4 ~@4 a3@3 b4, [b2,d5] [a2,g#4,c#5], ~ f#3@3 ~@4, ~@2 b3@2 ~ f#4@3, ~@3 c#5 ~@4",
  C: "a4 ~@6 g4 ~@7 f#4, [g2,b4] [f#2,a4], ~ d3@3 ~@4, ~@2 g3@2 ~ d4@3, ~@3 a4 e4@3 e4", // G F#m
  D: "~ b2@3 ~ d3@3 g4 ~@3 d4@2 g3@2, [e2,e4,g4]@4 [f#2,e4,a4]@4 [g2,b4]@7 ~, ~@2 d4 ~, ~@9 d3@7, ~@5 g3@2 ~", // Em F#m7 G
  E: "[[a2,b3,d4,e4]@3 ~]/2", F: "~@3 [b4,g5]@2 [a4,f#5]@2 [g4,d5]@7 ~@2",
})).s("gm_piano").gain(0.29)

// chords · piano · soft notes
const piano_soft = note("<~@2 A B C@2 ~@95>".pickRestart({
  A: "~@3 f#3", B: "~@3 e4 ~@2 f#3@2 ~ g4@6 ~, ~ e3 ~@6", C: "[a3@3 ~]/2",
})).s("gm_piano").gain(0.19)

// bass · fretless bass
const bass = note(`<
  ~@3 A B@8 C@2 D@2 E@2 F G H I J@2 K L M@2 N O P Q R S T U V W@2 X Y Z AA AB AC@3 ~ AD@2 AE AF AD@2 AE AG AH@2 AI AJ AK
  AL AM AN N O P Q R S AO U V W@2 X AP Z AA AB AQ AR@2 ~@2 AD@2 AE AF AD@2 AE AG AD@2 AE AF AD@2 AE AG
>`.pickRestart({
  A: "e1 f#1 g1@2", B: "[a1@12 f#3@8 f#3@6 a3@2 g3@8 g3@3 g3@5 f#3@8 f#3@6 a3@2 g3@4]/8", C: "[g3@4 g3@3 g3@5 a2@4]/2",
  D: "[g2@7 ~ f#2@16 e2@8]/2", E: "[a2@2 g2@2 f#2@3 f#2@5 e2@4]/2", F: "f#2 g2", G: "~@3 a1@5, a2", H: "d2@7 d2 d2@8",
  I: "d3 c3", J: "[g2@6 g2 ~ g3@8 g4@6 g3!2 ~@4 g2@4, ~@7 g2@17 g3@8]/2", K: "d2@5 ~ d2 ~ d2@7 ~",
  L: "d2@5 ~ d2 ~ d2@4 d3 a2 d2@2", M: "[g2@5 ~ g2 ~ g3@8 ~@6 g2 ~ g2@4 e3@4, ~@7 g2@14 ~@11, ~@4 g3@3 ~]/2",
  N: "a2@6 ~ a2 g2@6 ~ g2", O: "f#2@6 ~ f#2 d2@4 d3 d2 ~ d2", P: "e2@6 e3 e2 a2@4 g2@4",
  Q: "f#2@6 f#3 d2 d2@5 ~ d2 d#2", R: "e2@6 ~ e2 f#2@5 ~ f#2 ~", S: "g2@5 ~ g2 ~ a2@6 d2 d#2",
  T: "e2@3 a1 a2@2 d2 e2 d2@5 ~ d2!2", U: "d2@6 d2 e2 a2@5 ~ a2@2", V: "a1@8 g2@5 ~ g2!2",
  W: "[g2@7 ~ d2@6 a1@6 a2@4 d2@5 ~ d2 ~]/2", X: "~@5 a3 d4 d3 a1@2 a1@3 ~ a1!2, d2 ~",
  Y: "~@4 a3 a2 a3@2 g1@5 ~ g1 ~, a1 ~", Z: "g1@4 d2@3 c3", AA: "c#3 b2", AB: "a2 g2", AC: "[f#2 e2@4 ~]/3",
  AD: "[d2@6 d2 ~@4 a2 d3@2 a2 ~@7 d2!2 ~@4 d3@4, ~@8 d2@6 ~ d2@6 ~@3 d2@8, ~@16 d3@11 ~@5]/2",
  AE: "g1@5 ~ g1 ~ g1@4 g2@2 g1 g2", AF: "g1@5 ~ g1 ~ g1@3 g1 g2@2 g1 g2", AG: "g1@5 ~ g1 ~ g1@8",
  AH: "[~@6 d3!2 d3@8 f#3@8 e3@4 d3 a2 d2 a2, d2@7 ~]/2", AI: "~@6 g1 ~ g1@8, g2@15 ~",
  AJ: "~@6 g1!2 g1@6 b1 c#2, g2 ~", AK: "~@6 d3!2 d3@8, d2", AL: "d3 d3@5 a2@2", AM: "~@6 g2!2 g2@8, g1@15 ~",
  AN: "g1@6 g1 ~ g1@8", AO: "e2@3 e2 e3@4 d2@5 ~ d2!2", AP: "~@4 a3 ~ a3@2 g1@5 ~ g1 ~, a1 ~, ~@5 a2@3 ~@8",
  AQ: "f#2@4 e2@3 a2", AR: "[e3@3 ~]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A B C D E@8 F@5 G@2 H@8 I@4 J K@4 L@6 M N@3 ~ O@8 H@8 I@4 J K@4 L@6 M N@3 ~@2 O@16
>`.pickRestart({
  A: "[b2,b3,b4]@4 [g#3,g#4] [f#3,f#4]@3", B: "[d3,d4]@4 [e3,e4] [d3,d4]@3", C: "[e3,e4] [f#3,f#4] [g3,g4]@2",
  D: "[a3,a4]", E: "[~ d3@4 [g2,g3,b4]@4 d3@4 [g2,g3,b4]@3, ~ [d4,e4,a4]@15, ~@8 d2@27 ~@37 d2@8 ~@48]/8",
  F: "[~@2 [a2,a3]@2 [g2,g3]@2 [f#2,f#3]@2 [d2,d3]@2 [e2,e3,b3]@2 [a2,a3] [g2,g3] [f#2,f#3]@2 [d2,d3]@2 [e2,e3,b3,g4]@2, ~ e4@9, ~ a4@8 ~, ~ c#4@2 d4@2 g4@2 ~@3, ~@6 c#4 d4@2 ~]/5", // A G F# D E5 A G F# …
  G: "[[f#2,f#3,f#4,a4] [g2,g3] [a2,a3,e4,a4]@2, d4, ~ g4@3]/2", // F#m G A5
  H: "[d3 [g2,g3,b4] d3 [g2,g3,b4], [d4,e4,a4], d2@27 ~@37 d2@8 ~@56]/8", // G Dsus2
  I: "[[a2,a3]@2 [g2,g3]@2 [f#2,f#3]@2 [d2,d3]@2 [e2,e3,b3]@2 [a2,a3] [g2,g3] [f#2,f#3]@2 [d2,d3]@2, [e4,a4], c#4 d4 g4 ~, ~@5 c#4 d4@2]/4", // A G F# D E5 A G F# …
  J: "[e2,e3,b3,g4] [f#2,f#3,d4,f#4,a4]", // Em D
  K: "[[g2,g3] [a2,a3,e4,a4]@2 [d2,d3,d4,f#4,a4]@2 [a1,a2,c#4,e4,a4]@2 [g2,g3,d4,g4,b4], g4@3 ~@5]/4", // G A5 D A G
  L: "[~@4 [d2,d3,d4,f#4,a4]@2 ~ [a1,a2,d4,e4,a4,b4]@5 [d2,d3,d4,f#4,a4]@8 [a1,a2,c#4,e4,a4]@8 [g1,g2,d4,g4,b4]@8 [d2,d4,f#4]@4 [c#2,c#4,e4]@4 b3@4, ~@9 a4@2 ~]/6", // D Asus4 D A G D C#m
  M: "a3 g3", N: "[f#3@7 ~ [b2,d3,e3,g3]@32 ~@8]/3", O: "[[d2,a3,f#4] [g2,g3,b3] [d2,a3,f#4] [g2,g3,b3], d4]/8",
})).s("gm_string_ensemble_2").gain(0.23).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@3 A ~ B@3 C D@4 E@7 F@2 G H F@2 I@2 J@6 K@8 ~@6 L@8 F@2 G H F@2 I@2 J@6 K@8 ~@7 L@16
>`.pickRestart({
  A: "g5 a5 d6@2", B: "[~ [a3,a4]@4 ~]/3", C: "~ c#5", D: "[[d4,d5] [a3,a4]@4 b3@3]/4", E: "[~@4 a4@51 ~]/7",
  F: "[a3,a4]/2", G: "[b3,b4]", H: "[c#4,c#5] [d4,d5]", I: "[b3,b4]/2", J: "a4/6", K: "[~ a5@15]/8",
  L: "[[a4,a5]@125 ~@3]/8", // A
})).s("gm_string_ensemble_1").gain(0.18).pan(0.8)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@4 A@2 ~ B@2 ~@2 C@3 ~@87>".pickRestart({
  A: "[b5@8 e6@15 ~@9]/2", B: "[~ [b3,b4]@2 c#4]/2", C: "[~ b4@4 ~]/3",
})).s("gm_string_ensemble_1").gain(0.13).pan(0.8)

// chords · pad warm
const pad_warm = note("<~ A B C@3 ~@36 D@5 ~@31 D@5 ~@18>".pickRestart({
  A: "[f#4,b4,d5] [e4,a4,c#5]", B: "[g4,b4] [f#4,a4], d4",
  C: "[[b3,e4,g4] [f#4,a4] g4@2 [e4,a4]@6 ~@2, ~ d4@9 ~@2, ~ b4@4 ~]/3", // Em F#m A5
  D: "[~ [b2,b3,d4,b4] [a2,a3,c#4,a4] [g2,g3,b3,g4] [f#2,f#3,a3,f#4] [e2,e3,b3,d4,e4,g4]@4 ~, ~ f#4@2 d4@2 ~@5]/5", // Bm A G F#m Em7
})).s("gm_pad_warm").gain(0.25)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@3 A B@7 C@7 D@2 E@2 F@2 E@2 F@2 G H@2 I@4 ~@7 J@6 K@2 L@2 M@2 N@2 E@2 F@2 E@2 F@2 G H@2 O@4 ~@7 J@6 ~ K@2 L@2 M@2
  N@2 K@2 L@2 M@2 P@2
>`.pickRestart({
  A: "~@7 a3, e2 f#2 g2@2, ~ g3@2 g3@2 g3@2 g3@2 g3@2 g3@2 g3@2 ~, ~ d4@2 d4!2 a3 d4@2",
  B: "[~@4 [b3,d4]@8 ~@4 d4@4 ~@4 d4@4 ~@4 d4@4 ~@4 d4@4 ~@4 d4@4 ~@3 f#3, ~@7 [e4,a4]@17 f#3@6 f#3@10 f#3@6 f#3@10 g3@6 g3@10 g3@6 g3@10 f#3@6 f#3@10 f#3@6 ~@2, ~@13 a3@7 ~ a3@7 ~ a3@8 a3@7 ~ a3@7 ~ a3@3, ~@7 e4 ~@3 e4 ~@3 e4 ~@3 e4 ~@3 e4 ~@3 e4]/7", // Bm A5
  C: "[d4@8 ~@8 d4@8 ~@8 d4@8 ~@2 a3@2 ~@10 g3@2 ~@15 f#3 ~@5 d4@2 ~@5 c#4@4 ~@15 f#3 ~@6 b3@2, ~@4 g3@3 g3@5 g3@3 g3@5 a2@4 g2@4 f#2@8 e2@4 a2@4 f#2@8 e2@4, ~@10 a3@16 a3@14 ~@5 a3@5 a3@4 ~@4 a3@4 ~@2 d4@5 d4@3 ~@8 d4@4 ~@6 a3@4 ~@2 d4@5 d4@3 ~@5 d4@3, ~@12 e4@4 ~@12 e4@4 ~@12 c#4@8 c#4@4 e4@4 e4@7 e4@9 e4@12 e4@4 e4@7 e4@8 e4@5, ~@46 e3@10 ~@6 f#3@4 f#3@4 a3@2 ~@2 e3@5 e3@3 e3@6 ~@6 f#3@4 f#3@4 a3@2 ~@2 b2@6]/7",
  D: "[~@6 a3@2 ~@15 e3@9, f#2@4 g2@3 b3 a2@8, ~@2 d3@8 d3@5 g3@7 [a3,b3,d4]@10, ~@3 e4@8 e4@11 ~@10, ~@5 d4@8 d4@9 ~@10]/2", // Bm7
  E: "~ d4, f#3@3 f#3@5, ~ a3@7, ~ e4 ~@2", F: "[~ d4 ~ d4, g3@3 g3@5 g3@3 g3@5, ~ a3@8 a3@7, ~ e4 ~@3 e4 ~@2]/2",
  G: "~ a3 ~@5 g3, a2 g2, ~ c#4@2 c#4, ~@5 a3@5 a3@4 ~@2, ~@3 e3@5",
  H: "[~@15 f#3 ~@12 c#4@4, e4@4 e4@7 e4@9 e4@12, ~ a3@2 f#3@2 f#3@2 a3 ~ e3@2 b3 a2@4, ~@8 d3@8 e2@7 e3@3 e3@6, ~@8 d4@5 d4@3 ~@5 d4@3 d4@4 ~@4]/2",
  I: "[~@15 f#3 ~@7 e3 ~@7 f#3 ~@6 b3 g3 [e3,a3,b3]@4 ~@2 [e3,a3,b3,d4]@9 ~@9, e4@4 e4@7 e4@9 ~ d4@8 d4@8 d4@3 d4@2 ~@22, ~ a3@2 f#3@2 f#3@2 a3 ~ b2@2 b3 ~ d3@2 a3 ~ d3@3 ~@12, ~ d3 e2 f#2 g2 a2@2 ~, ~@8 d4@5 d4@3 ~@3 e4@8 e4@8 e4@5 ~@24]/4", // Esus4
  J: "[~@61 b4@7 a4@16 ~@12, ~@8 b3@8 a3@8 g3@8 f#3@8 e3@7 ~@49, ~@10 d4@8 d4@7 ~ d4@8 d4@8 d4@8 d4@8 d4@8 ~@30, ~@11 a4@8 a4@8 a4@8 a4@8 a4@8 a4@8 a4@8 ~@29, ~@13 b4@8 b4@8 b4@8 b4@8 b4@8 b4@8 ~@35]/6",
  K: "[~@4 [d4,e4]@4 ~@6 a3@4 [a3,d4] [d3,a3,d4,e4]@2 [a3,d4,e4] [d3,a3,d4,e4]@3 [d3,a3,d4,e4]!2 [d3,a3,d4,e4]@2 [d3,a3,d4,e4]@3, ~@4 d3@15 ~@13, ~@4 e4@2 e4@3 ~@7, ~@9 d4@4 d4@5 ~@14, ~@5 a3@2 ~@9]/2", // Dsus2 D5 Dsus2 Asus4 Dsus2
  L: "[~@10 d4@3 [d3,g3,d4]@2 ~ d3@2 ~@3 g4 d4@2 d3 ~ [d3,g4,a4] [g3,d4,g4,a4]@2 [g3,a4]@3, ~@2 d3@11 ~@5 [d3,g3]@6 ~ [g3,d4,g4,a4]@2 ~@5, ~@4 a4@4 a4@5 ~@7 a4@5 ~@7, ~@5 g4@4 g4@4 [g4,a4]@8 ~@11, ~@3 d4@2 ~@11]/2", // G5 Dsus4 Gsus2 G5 Gsus2
  M: "[~@4 e4@4 ~@6 a3@4 [a3,d4] [d3,a3,d4,e4]@2 [a3,d4,e4] [d3,a3,d4,e4]@3 [d3,a3,d4,e4]!2 [d3,a3,d4,e4]@2 [d3,a3,d4,e4]@3, ~@4 d3@15 ~@13, ~@4 [a3,d4]@5 d4@4 d4@5 ~@14, ~@4 e4@2 e4@3 ~@7, ~@5 a3@2 ~@9]/2", // D5 Dsus2 Asus4 Dsus2 D5
  N: "[~@10 d4@3 [d3,d4]@2 ~ d3@2 ~@3 g4 [d4,g4]@2 d3 ~ [d3,g4,a4] [g3,d4,g4,a4]@2 [g3,d4,g4,a4]@2 ~, ~@2 d3@11 ~@5 [d3,g3]@6 ~ [g3,d4,g4,a4]@2 d3@4 ~, ~@4 a4@4 a4@5 a4@7 a4@5 ~@7, ~@5 g4@4 g4@4 ~@19, ~@6 d4@4 ~@5 d4@7 ~@10]/2", // D G5 Dsus4 Gsus2 G5 Gsus2
  O: "[~@15 f#3 ~@7 e3 ~@7 f#3 ~@6 b3 g3 [e3,b3,e4,a4,d5,e5] [b3,e4,a4,d5,e5]@2 [b3,e4,a4,d5,e5] [e3,b3,e4,a4,d5,e5]@2 [e3,b3,a4,d5,e5] [a4,d5,e5] [a4,d5,e5] [b3,e4,a4,d5,e5] [e3,b3,e4,a4,d5,e5]@2 [e3,b3,e4,a4,d5,e5] e5 e5@2 ~@8, e4@4 e4@7 e4@9 ~ d4@8 d4@8 d4@3 ~@24, ~@2 a3@4 f#3@4 f#3@4 a3@2 ~@2 b2@4 b3@2 ~@2 d3@4 a3@2 ~@2 d3@6 ~@7 [e3,b3,e4]@3 ~@3 [e3,b3,e4,a4,d5]@3 ~@8, ~ d3 e2 f#2 g2 ~@3, ~@8 d4@5 d4@3 ~@3 e4@8 e4@8 e4@5 ~@24]/4", // Esus4 Bm7 Esus4 Asus4 Bm7 Esus4 E5 Esus4
  P: "[~@10 d4@3 [d3,d4]@2 ~ d3@2 ~@3 g4 [d4,g4]@2 d3 ~ [d3,g4,a4] [g3,d4,g4,a4]@2 [d4,g4,a4]@2 ~, ~@2 d3@11 ~@5 [d3,g3]@6 ~ [g3,d4,g4,a4]@2 d3@4 ~, ~@4 a4@4 a4@5 a4@7 a4@5 ~@7, ~@5 g4@4 g4@4 ~@19, ~@6 d4@4 ~@5 d4@7 ~@10]/2", // D G5 Dsus4 Gsus2 Dsus4 G5 Gsus2
})).s("gm_electric_guitar_clean").gain(0.21).pan(0.4)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@3 A@2 ~@10 B ~ C D ~@26 E F@2 G H I@2 ~ H J@2 ~@13 K ~@11 E F@2 ~ G H I@2 ~ H J@2 G H I@2 ~ H J@2
>`.pickRestart({
  A: "[~@15 g3@8 ~@9]/2", B: "d3@4 ~@3 b3", C: "d3@8 ~@7 e3", D: "~@7 f#3 ~@8", E: "e3@7 ~ e3@7 ~",
  F: "[~@3 b4@7 ~@6, ~ e3@19 ~@12, ~@3 d4@17 ~@12]/2", G: "~@2 a3@3 ~@3", H: "~@2 e4 ~@5 a3 ~@7",
  I: "[~@2 g3@8 g3@3 ~@2 d4@7 g4@2 [g3,d4] ~@4 [d4,g4]@3, ~@15 g3@3 ~@14, ~@15 d3 ~@11 d3@5]/2", // G5
  J: "[~@2 g3@8 g3@3 g3@2 g3@3 ~@6 [g3,d4] ~@7, ~@13 g4@8 ~@11, ~@15 d3 ~@16]/2", K: "~@9 e3@2 ~@3 e4 ~",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.4)

// other · agogo
const agogo = note("<~@34 A B C D A B C D E ~@27 A B C D A B C D E ~@22>".pickRestart({
  A: "~@8 a5 ~@3 a5 ~@3", B: "a5 ~@3 a5 ~@3 a5 ~@3 a5 ~@3", C: "a5 ~@3 a5 ~@3 g5 ~@3 g5 ~@3",
  D: "g5 ~@3 g5 ~@3 f#5 ~@3 f#5 ~@3", E: "e5 ~@3 e5 ~@11",
})).s("gm_agogo").gain(0.32).pan(0.4)

// other · timpani
const timpani = note("<~@23 [~@13 f2!3] [f2 ~@15] ~@34 [~@13 f2!3] [f2 ~@15] ~@40>").s("gm_timpani").gain(0.17).pan(0.4)

// other · timpani · soft notes
const timpani_soft = note("<~@23 [~@12 f2 ~@3] ~@35 [~@12 f2 ~@3] ~@41>").s("gm_timpani").gain(0.09).pan(0.4)

// chords · overdriven guitar
const overdriven_guitar = note("<~@34 A@8 ~@28 A@8 ~@23>".pickRestart({
  A: "[~@4 [d3,a3,d4]@8 [a2,e3,a3]@8 [g2,d3,g3]@8 [d3,a3,d4]@3 [e3,g3,a3,d4]@5 [d3,a3,d4]@8 [a2,e3,a3]@8 [g2,d3,g3]@8 [d3,a3,d4]@4]/8", // D5 A5 G5 D5 Em7 D5 A5 G5 …
})).s("gm_overdriven_guitar").gain(0.22).pan(0.8)

// chords · overdriven guitar · soft notes · F#m
const overdriven_guitar_soft = note("<~@42 [[c#3,a3,c#4] ~] ~@35 [[c#3,a3,c#4] ~] ~@22>")
  .s("gm_overdriven_guitar").gain(0.15).pan(0.8)

// other · shamisen
const shamisen = note("<~@22 A ~@3 A ~@31 A ~@3 A ~@38>".pickRestart({
  A: "~@11 a4!2 ~ a4 ~",
})).s("gm_shamisen").gain(0.14).pan(0.2)

// other · shamisen · soft notes
const shamisen_soft = note("<~@22 A ~@3 A ~@31 A ~@3 A ~@38>".pickRestart({
  A: "~@10 a4 ~@5",
})).s("gm_shamisen").gain(0.08).pan(0.2)

// other · pad metallic
const pad_metallic = note("<~ A B C ~@44 D@2 E F G@2 H I ~@29 D@2 E F G@2 H I D@2 E F G@2 H I>".pickRestart({
  A: "d5 c#5", B: "b4 a4", C: "e4 f#4 g4@2", D: "[f#5@23 ~ g5@4 a5@4]/2", E: "a5", F: "b5@3 g5", G: "[f#5@6 g5 a5]/2",
  H: "d5@15 c#5", I: "b4",
})).s("gm_pad_metallic").gain(0.8)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@20 A B A B A B A B A B A B A B C D ~@2 D@2 ~ E ~@14 A B A B A B A B A F A B A B C D ~@2 G D ~ E ~@10 H ~@3 E ~@3 H
  ~@4
>`.pickRestart({
  A: "~@6 x!2 ~@8", B: "~@3 x ~@4", C: "~@3 x ~@3 x", D: "~@7 x", E: "~@15 x", F: "~@7 x ~@8", G: "~@3 x ~@10 x ~",
  H: "~@13 x ~@2",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct(`<
  ~@8 A ~@3 A ~@6 B ~@3 C ~@3 C ~@3 C ~@10 D E F ~@14 C ~@3 C ~@3 C ~@10 D E F ~@20
>`.pickRestart({
  A: "~ x", B: "x!2 ~@2", C: "~ x!2 ~@5", D: "~@3 x", E: "~ x ~ x", F: "~ x ~@2",
})).gain(0.25)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@19 A ~@3 A ~@3 A ~@3 A ~@27 A ~@3 A ~@3 A ~@33>".pickRestart({
  A: "~@3 x ~@12",
})).gain(0.15)

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

// drums · low tom
const low_tom = s("lt").struct("<~@34 A ~@2 B C ~@3 D ~@8 E ~@18 F ~@2 G D ~@3 D ~@9 H ~@3 I ~@3 H ~@3 I>".pickRestart({
  A: "~@5 x!2 ~@9", B: "~@13 x!2 ~", C: "~ x!2 ~@5", D: "~ x ~@2", E: "~@8 x ~@2 x ~@2 x!2", F: "~@6 x!2 ~@8",
  G: "~@8 x!3 ~ x ~ x ~", H: "~@8 x!2 ~ x!2 ~ x ~", I: "~@13 x ~ x",
})).gain(0.35)

// drums · hihat
// … 44 more lines

More by Pooh