Strudelify
Oggi un Dio non ho cover art

Sogni …è tutto quello che c'è

Oggi un Dio non ho

Raf

KeyG majorTempo104 bpm
0:00/0:00
// Oggi un Dio non ho — Raf
// 104 bpm, 4/4, key G 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: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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(`<
  ~@26 A@2 B@2 C D E F G H I J K H I L M N O P Q R A@2 B@2 C S K T G U I V W X Y D Z AA K T G U I AB AC AD AE AF K AG AH
  AI AJ AK AL H AM AN AO AP AQ AR AS AT AU AV AQ AW AX AY AZ BA BB BC BD BE BF BG BH@2 BI@3
>`.pickRestart({
  A: "g1/2", B: "e1/2", C: "b1", D: "d2", E: "g1@7 d2", F: "g2 d2@3 g1@4", G: "e1@14 e1 ~", H: "e1@15 ~",
  I: "b1@14 b1 ~", J: "d1 d2", K: "g1@14 g1 ~", L: "d2@6 a1 ~ d1@8", M: "g1@5 d2@2 g2", N: "g2", O: "e2@5 b2@2 g3",
  P: "g3@3 e3@5", Q: "c2@7 d3", R: "c3 d2", S: "c2 d2", T: "g1", U: "e1@6 f#1 g1", V: "b0", W: "c1@7 d2",
  X: "c2@5 d2@3", Y: "e2@5 e3@3", Z: "c2@5 a1 c2 e2", AA: "d2 a1 d2@3 d1@3", AB: "d1", AC: "g1@7 d1", AD: "g1@5 a1@3",
  AE: "a#1@14 a#1 ~", AF: "a#1@15 ~", AG: "g1@9 ~ a1@6", AH: "a#1@13 ~ a#1 ~", AI: "g#1@15 ~", AJ: "f#1@14 g#1 ~",
  AK: "a#1", AL: "c#1@13 ~ d#1 ~", AM: "d#1@3 a#1", AN: "d#1@5 d#1@3", AO: "g#1@13 ~ g#1 ~", AP: "g#1@6 d#1 g#1",
  AQ: "f1@14 f1 ~", AR: "f1@5 g#1 f1 d#1", AS: "c1@14 c1 ~", AT: "d#1", AU: "~@5 d#2 g#2 a#2, g#1",
  AV: "g#2 d#2@3 a#1 g#1@2 d#1", AW: "f1@9 ~ f1@2 g#1@2 a#1@2", AX: "c2@5 d#2 c2 g1", AY: "d#1@6 a#1 ~ d#2@8",
  AZ: "g#1@14 g#1 ~", BA: "f1@15 ~", BB: "c2@14 c2 ~", BC: "d#2", BD: "g#1@5 d#2@2 g#2", BE: "g#2", BF: "f2@5 c3@2 g#3",
  BG: "g#3@3 f3@5", BH: "[c#2@3 d#1]/2", BI: "[~ g#1@37 ~@10]/3",
})).s("gm_fretless_bass").gain(0.63)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G H I@2 F@2 J@2 K@2 L@2 M N E@2 O@2 P N E@2 Q@2 G R S@2 T U V@2 W@2 X@2 E@2 F@2 G H I@2 F@2
  J@2 K@2 Y@2 M N E@2 O@2 P N Z@2 AA@2 AB@2 AC AD AE AF AG AH AI AJ AK@4 AL AM AN@2 AO@2 AP AQ AR@2 AS AM AT@2 AU@2 AV@2
  AW@3
>`.pickRestart({
  A: "[g2,g3,d4,a4,b4]/2", B: "[g2,b3,d4,a4,d5]/2", C: "[b2,d4,f#4,a4,f#5]/2",
  D: "[[d4,g4,b4,g5]@3 [d4,f#4,a4,e5], [e2,e3]]/2", E: "[g2,g3,b3,d4,g4]/2", F: "[e3,b3,d4,g4,b4]/2",
  G: "[b2,d4,f#4,a4,d5]", H: "[c3,c4,e4,g4,e5] [d3,d4,a4,d5]", I: "[g2,g3,d4,g4,b4]/2", J: "[b2,d4,f#4,a4,d5]/2",
  K: "[[c3,g3,d4,e4,g4]@13 [d3,a3,d4,f#4,a4]@3]/2", L: "[e3 g3, [b3,d4,g4,b4]]/2", M: "[c3,g3,d4,e4,g4]",
  N: "[d3,g3,a3,d4,a4]", O: "[e3,g3,b3,d4,g4]/2", P: "[b2,b3,d4,f#4,a4]", Q: "[e3,b3,d4,g4,e5]/2",
  R: "[e4,g4,c5] [d4,f#4,d5], [d3,a3]", S: "[[g2,d4] [e3,b3], [g4,b4,d5]]/2", T: "[b2,b3,f#4,a4,d5]",
  U: "[d3,a3,d4,g4,a4]", V: "[g2,g3,b3,d4]/2", W: "[e3,g3,b3,d4]/2", X: "[[c3,e3,g3,b3,e4]@3 [d3,f#3,a3,d4,a4]]/2",
  Y: "[e3 d3, [b3,d4,g4,b4]]/2", Z: "[[g2,g3,b3,d4,g4]@13 [a2,a3,a4]@3]/2", AA: "[a#2,f3,a#3,d4,f4]/2",
  AB: "[[g2,f3,a#3,d4,g4]@13 [a2,a3,c4,f4,a4]@3]/2", AC: "[a#2,a#3,d4,f4,a#4]", AD: "[g#2,c4,f4,g#4,f5]",
  AE: "[f#2,a#3,c#4,f#4,a#5]", AF: "[a#2,g#3,c#4,f4,f6]", AG: "[c#3,c#4,e4,g#4,d#6]", AH: "b5 g#5, [e3,b3,e4,g#4]",
  AI: "[d#3,a#3,d#4,g#4,a#4,a#5]", AJ: "[d#3,a#3,d#4,g4,a#4,d#6]",
  AK: "[[g#2,d#4,g#4,c5] [f2,c4,d#4,g#4,c5], d#6@5 ~@3]/4", AL: "[c3,a#3,d#4,g4,c5]", AM: "[d#3,a#3,d#4,g#4,a#4]",
  AN: "[g#2,g#3,c4,d#4,g#4]/2", AO: "[f3,c4,d#4,g#4,f5]/2", AP: "[c3,d#4,g4,a#4,d#5]",
  AQ: "[f4,g#4,c#5] [d#4,g4,d#5], [d#3,a#3]", AR: "[[g#2,d#4] [f3,c4], [g#4,c5,d#5]]/2", AS: "[c3,c4,g4,a#4,d#5]",
  AT: "[g#2,g#3,c4,d#4]/2", AU: "[f3,g#3,c4,d#4]/2", AV: "[[c#3,f3,g#3,c4,f4]@3 [d#3,g3,a#3,d#4,a#4]]/2",
  AW: "[~ [g#2,g#3,c4,d#4,g#4]@37 ~@10]/3", // G#
})).s("gm_string_ensemble_2").gain(0.32)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@26 A@2 B@2 C@2 D@2 E F ~@2 G@3 ~@25 A@2 B@2 C@2 H@2 I J K L I M N I O@2 P Q R@2 S@2 T@2 U@2 V W ~@2 X@3 ~@10
>`.pickRestart({
  A: "[~@2 g3 a3@2 g3@2 b3@3 g3 a3@2 g3@3, g2]/2", B: "[~@2 g3 a3@2 g3@2 ~@2 g3@2 a3@2 g3@3, e3, ~@7 b3@3 ~@6]/2",
  C: "[~@2 g3 a3@2 g3@2 ~@4 a3@2 g3@3, b2 d3, ~@7 d4@3 g3@2 ~@4]/2",
  D: "[~@2 g3 a3@2 g3@2 b3@3 ~ a3@2 g3@3, g2, ~@5 g3 ~@2]/2", E: "~@2 e4@3 g4@3 e4@2 e4@4 b3@2, ~@4 b3@3 ~",
  F: "e4@5 e4@3, b3", G: "[~@5 d4@15 ~@4, ~@5 g4@11 ~@8]/3", H: "[~@2 g3 a3@2 g3@2 b3@6 [a2,a3]@3, g2@13 ~@3]/2",
  I: "[a#2,a#3]", J: "[a#2,a#3]@3 [a#2,a#3]", K: "[g2,g3]", L: "[g2,g3]@5 [a2,a3]@3", M: "[g#2,g#3]", N: "[f#2,f#3]",
  O: "[[g#2,c#3]@3 ~ [b2,e3]@4, ~@6 [g#2,c#3]@3 ~@7]/2", P: "[a#2,d#3]", Q: "[a#2,d#3]@5 [a#2,d#3]@3",
  R: "[~@2 g#3 a#3@2 g#3@2 c4@3 g#3 a#3@2 g#3@3, g#2]/2",
  S: "[~@2 g#3 a#3@2 g#3@2 ~@2 g#3@2 a#3@2 g#3@3, f3, ~@7 c4@3 ~@6]/2",
  T: "[~@2 g#3 a#3@2 g#3@2 ~@4 a#3@2 g#3@3, c3 d#3, ~@7 d#4@3 g#3@2 ~@4]/2",
  U: "[~@4 g#3@2 a#3@4 g#3@4 c4@6 g#3@2 a#3@4 g#3@5 ~, g#2]/2", V: "~@2 f4@3 g#4@3 f4@2 f4@4 c4@2, ~@4 c4@3 ~",
  W: "f4@5 f4@3, c4", X: "[~@5 d#4@15 ~@4, ~@5 g#4@11 ~@8]/3",
})).s("gm_overdriven_guitar").gain(0.38).pan(0.7)

// chords · piano
const piano = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G H E@2 I@2 J@2 K@2 L M N O E@2 F@2 P Q R@2 S@3 T U V W X Y@2 Z@2 AA@2 E@2 AB@2 G H E@2 I@2
  AC@2 K@2 AD AE N AF E@2 F@2 P Q AG@2 AH@3 AI AJ AK AL AM AN AO AP AQ AR@2 AS@2 AT AU AV@2 AW@3 AX AY AZ BA AU BB@2
  BC@2 BD@2 BE@3
>`.pickRestart({
  A: "[~ [f#3,f#4] [g3,g4] ~@6 d3 a3 g3@2 a3 d4@2, g1 g2, ~@3 [d4,d5]@5 ~@8, ~@10 b3@15 ~@7, ~@7 d3@2 ~@7]/2", // F# G D
  B: "[[f#4,f#5]@3 ~@8 d3 b2 [d3,d4] [g3,g4]@2, g2@6 ~ d3@2 ~@7, ~@6 [d4,d5]@9 ~ g2@16, ~@10 b3@14 b3 ~@7]/2", // F# D G D
  C: "[[f#4,f#5]@3 ~@5 b2@3 ~ d3 [b2,b3,b4]@2 ~, b2@6 ~ f#3@2 ~@2 b2@2 ~@3, ~@6 [d4,d5]@9 ~@17, ~@10 b3@15 ~@7]/2", // F# B D
  D: "[[e5,g5,b5]@3 ~@6 b2 g3@2 f#3 g3 a3@2, e3@6 ~ b3@3 ~@2 a3@2 ~@2, ~@3 [b4,e5,g5]@5 e2@8, ~@5 b2@4 ~@7, ~@2 e4 d4]/2", // Em
  E: "[b3@5 ~@4 d3 ~@4 d4@2, g4, d4@10 d4 g3 a3@4, [g2,a3]@7 d3 g2@8, ~@5 b3@11]/2", // Gsus2
  F: "[g3@5 ~@7 d4@4, g4@11 b3@5, d4@5 e3@3, b3@7 b2 e2@8, e2@5 g3@11]/2", G: "b2@5 ~@2 a3, [d4,f#4], a3@7 ~, ~@5 b2@3",
  H: "[c3,g3,c4,e4]@4 f#3 g3 a3@2, ~ [d3,d4], ~@2 a3 ~", // C D
  I: "[g3@5 g3@2 d4@4 ~@3 [b3,d4]@2, [e2,b3,d4,g4]@7 [e2,g4]@9, ~@7 b3@7 ~@2, ~@7 g3@5 g3@4, ~@11 e3@5]/2", // Bm Em7 Em
  J: "[b2@5 ~@9 b3@2, f#4, a3@7 d3@5 f#3@4, d4@3 d4@5, ~@5 b2@6 b2@5]/2",
  K: "[c4@5 ~@2 g2 ~@3 g3@2 [d3,f#3,a3,d4]@3, g3@10 e4@3 ~@3, e4@9 e3@4 ~@3, [c3,d4]@7 ~ c3@5 ~@3, ~@5 c4@11]/2", // D Csus2
  L: "b3@12 b3@3 [g3,a3], [g3,d4,e4], e3@7 ~", M: "g3@3 g3, [g2,b3,d4,g4]", N: "[g3,c4,d4,e4]@3 [g3,c4,d4,e4], c3",
  O: "d4!2, [d3,g3,a3]", P: "b2@5 ~@2 b3, [d4,f#4], a3@7 ~, ~@5 b2@3", Q: "[d3,a3,d4,g4]",
  R: "[~@9 d3 ~@4 d4@2, [b3,g4], g3@11 g3 a3@4, d4@5 d4@2 ~, g2@7 d3 g2@8]/2", // Em
  S: "[g3@5 ~@11 [a3,d4]@6 [f#3,a3,d4]@2, [e2,b3,d4,g4] [e2,g3,d4,g4] [b2,f#4], ~@5 g3@3 b3@6 b3@5 ~@5, ~@7 b2@2 ~@4 e3@6 ~@5]/3", // D5 D Em7 B5
  T: "[d3,g3,a3,c4]@4 f#3 g3 a3@2, ~ [d3,d4], ~@2 a3 ~", U: "[b3,d4]@3 [g3,b3,d4], [g2,g4]", V: "[e2,g3,b3,d4]",
  W: "~@3 [f#3,b3,d4], b2, [f#3,b3,d4]@3 ~, ~@5 d3@2 ~", X: "[d3,g3,a3,d4]",
  Y: "[~ [f#3,f#4] [g3,g4] ~@2 b3 ~@3 d3 a3 ~@3 a3@2, g2@6 ~ d3@2 ~@2 g3@3 ~@2, b3@5 ~@3 g2@8, d4@3 [d4,d5]@5 ~@5 d4@3]/2", // F# G D
  Z: "[[f#4,f#5]@3 ~@10 d4 [g3,g4]@2, [e3,g3]@6 ~ d3@9, b3@8 ~@2 b3@14 b3@7 ~, ~@6 [d4,d5]@9 ~ e3@16, ~@4 g3@3 ~]/2", // F# G Em D
  AA: "[[b3,b4]@3 ~@4 g3 g3 e3 g3@2 f#3 g3 a3@2, [c3,e3,g3]@3 ~ [c3,e4]@2 a3 ~, ~@3 [d4,d5]@5 ~@4 d4@4, ~@10 b3@15 ~@7]/2", // B C D
  AB: "[g3@5 ~@6 b3@3 [b3,d4]@2, g4, d4@5 e3@3, b3@7 b2 e2@8, e2@5 g3@11]/2", // Bm
  AC: "[b2@5 ~@9 b3@2, [a3,d4,f#4]@7 [d4,f#4]@9, ~@5 b2@6 b2@5, ~@7 d3@6 ~@3, ~@3 f#3]/2", // D
  AD: "[b3,d4,e4]@3 [b3,d4,e4], g3, e3@7 ~", AE: "g3@3 g3, [d3,b3,d4,g4]", AF: "a3@5 [a3,d4,g4]@3, [d3,g3], d4 ~",
  AG: "[~@9 d3 ~ g3@2 [a2,a3,e4]@3, [b3,g4], g3@11 ~@5, d4@10 d4@3 ~@3, g2@7 d3 g2@5 ~@3]/2", // A5 Em
  AH: "[f3@5 ~@9 a#3@2 [a#3,d4]@6 [g3,a#3,d4]@2, [a#2,a#3,d4,f4] [a#2,f3,d4,f4] [g2,f4], ~@5 f3@3 a#3@6 ~@10, ~@7 d3@2 ~@4 d3@6 ~@5]/3", // A# Gm A# G7
  AI: "[g2,g3,a#3,d4]@5 [f3,a3,c4,f4]@3", AJ: "[a#3,d4,f4]@3 [a#3,d4,f4], a#2", AK: "[g#2,g#3,c4,f4]",
  AL: "~@3 [f#3,a#3,f4], f#2, [f#3,a#3,f4]@3 ~, ~@5 c#3@2 ~", AM: "[a#2,f3,g#3,c#4,f4]",
  AN: "~@3 [g#3,b3,e4], c#3, [g#3,b3,e4]@3 ~, ~@5 e3@2 ~", AO: "~@3 b3, [e2,e3,e4], [g#3,b3]@3 ~, ~@5 b2@3",
  AP: "[g#3,a#3]@3 [a#2,g#3,a#3], d#4, d#2@3 ~@5", AQ: "[d#3,g3,a#3,d#4]@5 [d#3,g3,a#3,d#4]@3",
  AR: "[c4@5 ~@4 d#3 ~@4 d#4@2, g#4, d#4@10 d#4 g#3 a#3@4, [g#2,a#3]@7 d#3 g#2@8, ~@5 c4@11]/2", // G#sus2
  AS: "[g#3@5 ~@7 d#4@4, g#4@11 c4@5, d#4@5 f3@3, c4@7 c3 f2@8, f2@5 g#3@11]/2",
  AT: "c3@5 ~@2 c4, [d#4,g4], a#3@7 ~, ~@5 c3@3", AU: "[d#3,g#3,a#3,d#4]",
  AV: "[~@11 g#3@2 [g#2,g#3,c4,d#4]@3, g#4, c4@13 ~@3, g#3@9 d#3 d#4@3 ~@3, [g#2,d#4]@7 d#3 g#2@5 ~@3]/2", // G# G#5
  AW: "[g#3@5 ~@11 [a#3,d#4]@6 [g3,a#3,d#4]@2, [f2,c4,d#4,g#4] [f2,g#3,d#4,g#4] [c3,g4], ~@5 g#3@3 c4@6 c4@5 ~@5, ~@7 c3@2 ~@4 f3@6 ~@5]/3", // D#5 D# Fm7 C5
  AX: "[d#3,g#3,a#3,c#4]@8 ~@2 g#3 ~ a#3@4, ~ [d#3,d#4], ~@2 [g3,a#3] ~", AY: "[c4,d#4]@3 [g#3,c4,d#4], [g#2,g#4]",
  AZ: "[f2,g#3,c4,d#4]", BA: "~@3 [g3,c4,d#4], c3, [g3,c4,d#4]@3 ~, ~@5 d#3@2 ~",
  BB: "[~ [g3,g4] [g#3,g#4] ~@2 c4 ~@3 d#3 a#3 ~@3 a#3@2, g#2@6 ~ d#3@2 ~@2 g#3@3 ~@2, c4@5 ~@3 g#2@8, d#4@3 [d#4,d#5]@5 ~@5 d#4@3]/2", // G G# D#
  BC: "[[g4,g5]@3 ~@10 d#4 [g#3,g#4]@2, [f3,g#3]@6 ~ d#3@9, c4@8 ~@2 c4@14 c4@7 ~, ~@6 [d#4,d#5]@9 ~ f3@16, ~@4 g#3@3 ~]/2", // G G# Fm D#
  BD: "[[c4,c5]@3 ~@4 g#3 g#3@2 g#3@2 ~ g#3 a#3@2, [c#3,f3,g#3]@12 ~@4 [c#3,f4]@8 [g3,a#3]@5 ~@3, ~@3 [d#4,d#5]@5 ~@4 d#4@4, ~@10 c4@15 ~@7]/2", // C C# Gm D#
  BE: "[~ [d#3,g#3,c4,d#4,c5]@37 ~@10, g#2@19 ~@5]/3", // G#
})).s("gm_piano").gain(0.44).pan(0.7)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<A ~ B ~ B ~ C D ~@16 E F ~@18 G@2 H@2 ~@16 E F ~@38 I@2 J@5>".pickRestart({
  A: "~ f#3 g3 [g3,d4]@5", B: "[d4,f#4]@6 [b3,d4]@9 ~", C: "[g4,b4]@3 [e4,g4]@5", D: "[b3,e4] d4",
  E: "~@8 a3@4 e4@2 a3 g3", F: "a3@7 ~", G: "[f#4 ~@2 [d4,a4]@13, ~ b3@15]/2",
  H: "[~@6 g4@19 ~@7, ~@2 b3@23 ~@7, ~@4 d4@21 ~@7]/2", I: "[g4 ~@2 [d#4,a#4]@13, ~ c4@15]/2",
  J: "[~@6 g#4@19 ~@8 g#4@36 ~@11, ~@2 c4@23 ~@6 g#3@38 ~@11, ~@4 d#4@21 ~@7 d#4@37 ~@11]/5",
})).s("gm_electric_guitar_jazz").gain(0.32).pan(0.2)

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

// drums · rim
const rim = s("rim").struct(`<
  A ~@2 B ~@3 B A ~@2 B ~@3 B A ~@2 B ~@3 B A ~@2 B ~@3 B ~@10 B@3 C B@19 ~@37 B@3 C B@2 ~@3
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "~@8 x ~@2 x ~@2 x ~",
})).gain(0.55)

// drums · snare
const snare = s("sd").struct(`<
  A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ A@9 ~@24 B A@19 C A@7 C A@7 ~@10
>`.pickRestart({
  A: "~ x", B: "~ x ~@3 x ~@2", C: "~ x ~@2 x ~@3",
})).gain(0.55)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@34 A B C A@2 C@2 ~ A@2 C A C D C A C A@2 C@2 A C A C A C E C A@2 F A@2 C A C A ~ G A@7 C A@5 C A C@2 A B C A B C A@2
  C@2 ~ A@2 C A C@2 ~@3
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@3 x", C: "~ x ~ x ~ x ~@2", D: "~ x ~@3 x ~ x", E: "~@3 x ~@3 x", F: "~@3 x ~@4",
  G: "~ x ~ x ~@4",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~ A ~@7 A ~@7 A ~@7 A B ~@6 C ~@31 A ~@45>".pickRestart({
  A: "~ x", B: "x", C: "~@3 x",
})).gain(0.47)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@2 A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~ A B ~@7 C ~@23 A ~@7 D ~@3 E ~@3 A ~@3 A ~@7 A ~@17
>`.pickRestart({
  A: "~@3 x ~@4", B: "~ x!2 ~@2 x ~@2", C: "~@3 x!2 ~@3", D: "~@2 x!6 ~@8", E: "~@2 x!2 ~ x!3 ~@8",
})).gain(0.31)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@26 A ~ A ~ A@2 B ~@2 B A ~@2 A@3 ~@2 A ~ C D A ~ A ~@2 A@2 ~ A ~ A ~ C E A ~@2 E ~@2 A ~ A ~ A F ~@7 G ~@5 A ~ A@2 ~
  B G ~ B A ~@2 A@3 ~@2 A ~ C A ~@3
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "~@6 x!2", D: "~@3 x ~@4", E: "~ x ~@3 x ~@2", F: "~@5 x ~@2", G: "~@7 x",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct(`<
  ~@26 A ~@6 B A ~@5 B A@2 ~@5 A ~@12 C A ~@2 C A ~@5 B C D B ~ E A ~@2 C A ~ A F A ~@6 F A ~@5 B A@2 ~@5 G ~@2
>`.pickRestart({
  A: "x", B: "~ x", C: "~@5 x ~@2", D: "x!2", E: "~@5 x ~ x", F: "~ x ~@3 x ~ x", G: "~ x ~@14",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct("<~@8 A@33 B A@13 B A@18 C@18 A@9 B A@6 D ~@2>".pickRestart({
  A: "x!2", B: "x", C: "x!4", D: "~ x ~@14",
})).gain(0.31)

// drums · bongos
const bongos = s("bongo:18").struct("<~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@79>".pickRestart({
  A: "~ x ~@6",
// … 39 more lines

More by Raf