Strudelify

Ragazzo mio

Berte

KeyA majorTempo107 bpm
0:00/0:00
// Ragazzo mio — Berte
// 107 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(107/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 · rock organ
const rock_organ = note(`<
  A@8 B C D@4 E@2 F G H@2 I J@3 F G H@2 I G K@4 B C D@4 E@2 F G H@2 I J@3 F G H@2 I G L@3 M N@2 O@2 P@2 Q@2 R S T@2 U
  V@3 W S T@2 U S X@2 W S T@2 U S Y@6 Z@14 AA@2
>`.pickRestart({
  A: "[~@4 a5@24 b5@2 a5@26 ~ f5 d5@2 e5@2 d5@2 f#5@2 [d5,a5]@18 b4@2 d5@6 e5!2 ~@8 g#5 ~@6 a#5 b5@8 a5@10, ~@2 d6@26 ~@2 a5@3 ~@13 f5 d5@17, ~@4 g#5 ~@23 a#5 ~@27 [e5,a5]@3 ~@5 f5 ~@19 a#4 ~@17 a5@8 ~@18, ~@106 d6@21 ~]/8", // D5 A5
  B: "[d4,a4]", C: "[d4,g4] [e4,a4]", D: "[[d4,a4]@2 [d4,g4] [e4,a4], a5]/2", E: "[[d4,a4,a5] [d4,a4,a5], d6]/2",
  F: "[g3,b4,a5]", G: "[a3,e5,a5]", H: "[[d3,d5]@3 [c#3,c#5] [b2,d5]@4, a5]/2", I: "[g3,d5,b5]",
  J: "[[a3,e5] d5 c5, a5, ~ d3@2]/3", K: "[~@2 a5@12 b5 a5@17, ~ d6@15, ~@4 g#5 ~@23 a#5 ~@35]/4",
  L: "[a5@12 b5@2 b5 a5@9, d6, ~@24 a#5 ~@23]/3", M: "[g5,d6] [f#5,d6], f#5 ~@15",
  N: "[[e4,e5]@2 [e4,a4,b5] [f#4,b4,c#6], e6, d#6 ~@31]/2", O: "[[e4,b4]@2 [e4,a4] [f#4,b4,a5], e6, b5@3 ~]/2",
  P: "[[e4,b4]@2 [e4,a4] [f#4,b4], [b5,e6]]/2", Q: "[[e4,b4,b5]@16 b5@7 ~ b5@8, e6, ~ [e4,b4]]/2", R: "[a4,e5,b5]",
  S: "[b3,f#5,b5]", T: "[[e3,e5]@3 [d#3,d#5] [c#3,e5]@4, b5]/2", U: "[a3,e5,c#6]", V: "[[b3,f#5] e5 d5, b5, ~ e3@2]/3",
  W: "[a3,c#5,b5]", X: "[[e4,b4,b5]@2 b5!2, e6, ~ [e4,b4]]/2", Y: "[b5@12 c#6@2 c#6 b5, e6, ~@24 c6 ~@7]/2",
  Z: "[b5@24 c#6@4 c#6@2 b5 ~, e6, ~@24 c6 ~@7]/2", AA: "[[b5,e6]@12 c#6@2 c#6 ~, ~@24 c6 ~@7]/2",
})).s("gm_rock_organ").gain(0.43)

// bass · electric bass finger
const bass = note(`<
  A B A C A B A D A E A C A B F G H I J K L M N O L M J K P Q A B A C A B A C A B F G H R J K L S N O H I J K P Q A B F
  T U V W X W Y U Z I AA AB AC M AA AD AE I AF AB AG AH AI U Z I AF AJ AG AH AI AK AL AM AL AM AN AM AL AM AL AO AL AM
  AL AM AL AM AL AM AL AP AN
>`.pickRestart({
  A: "~@10 a2@3 c3 ~@2, d2", B: "g2@2 a1 d2", C: "g2@8 a1 ~ a1 ~ d2@4", D: "g2@8 g4@2 a4@2 b4@3 d2",
  E: "g2@8 a1@3 ~ d2@4", F: "~@10 a2@3 c3 ~@2, d2@15 ~", G: "d2!3 b1 a1!2 b1 d2", H: "g1@5 ~ g1 ~ g1@7 ~",
  I: "a1@5 ~ a1 ~ a1@7 ~", J: "d2@5 ~ d2 ~ d2@2 a1@2 c#2@4", K: "b1@5 ~ b1 ~ b1@4 a1@4", L: "g1@5 ~ g1 ~ g1@8",
  M: "a1@5 ~ a1 ~ a1@8", N: "d2@5 ~ d2 ~ d2@6 a1@2", O: "d2!7 a1", P: "g1@5 ~ g1 ~ g1@5 ~ g1@2",
  Q: "a1@5 ~ a1 ~ a1@3 ~ a1@2 b1@2", R: "a1@4 ~@2 a1 ~ a1@7 ~", S: "a1@4 ~@2 a1 ~ a1@8",
  T: "d2 b1 e2@2 d2@2 b1@2 a1@2 b1@2 d2@2 b1@2", U: "~@10 b2@3 d3 ~@2, e1", V: "a1@2 b1 e2",
  W: "~@10 b2@3 d3 ~@2, e1@15 ~", X: "a1@8 b1 ~ b1 ~ e2@4", Y: "a1@7 ~ b1@4 e2@4", Z: "e2!3 c#2 b1!2 c#2 e2",
  AA: "b1@5 ~ b1 ~ b1@8", AB: "e2@5 ~ e2 ~ e2@2 b1@2 d#2@4", AC: "c#2@4 ~@2 c#2 ~ c#2@4 b1@4",
  AD: "e2@5 ~ e2 ~ e2@6 b1@2", AE: "e2 ~ e2@2 e2@2 e2@2 e2@2 e2@2 e2@2 b1@2", AF: "b1@5 ~ b1 ~ b1@7 ~",
  AG: "c#2@5 ~ c#2 ~ c#2@4 b1@4", AH: "a1@5 ~ a1 ~ a1@4 ~@2 a1@2", AI: "b1@5 ~ b1 ~ b1@3 ~ b1@2 c#2@2",
  AJ: "e2@6 e2 ~ e2@2 b1@2 d#2@4", AK: "e1@2 e1 ~ e1 ~ e1@2 ~@2 b2@3 d3 ~ a1, ~@8 e1@7 ~", AL: "a1!4 b1!4",
  AM: "e1@2 e1@2 e1@2 e1@2 ~@2 b2@3 d3 ~ a1, ~@8 e1@7 ~", AN: "a1@2 a1@2 a1@2 a1@2 b1@2 b1 ~ b1@2 b1@2",
  AO: "e1@2 e1 ~ e1@2 e1@2 ~@2 b2@3 d3 ~ a1, ~@8 e1@7 ~", AP: "e1@2 e1@2 e1@2 e1 ~@3 b2@3 d3 ~ a1, ~@8 e1@7 ~",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B@2 C@6 D E@2 ~ E ~ F G H I J K L M N G H O J K L P Q@2 R@2 D E@2 ~ E ~ F G H O J K L M S@2 H O J K L T@3 U@2 V W@2
  ~ W ~ X H Y Z AA AB AC AD AE@2 Y Z AA AB AF ~ X H Y Z AA AB AC AG@2 AH AI@2 AJ@2 AK@6 AL@2 AM@2 AN@2 AO@2 AP
>`.pickRestart({
  A: "~@3 a3, d3, ~ a3@2 a3@3 ~@2, ~@4 d4@4 d4@7 ~",
  B: "[~@3 a2 ~@2 d4 ~@7 a3@2, g2@3 ~ a2@4 d3@8, ~ a3@4 a3@3 ~@2 d4@2 d4@3 ~, ~@2 d4@3 ~@2 e4@4 a3@3 ~@2]/2",
  C: "[~@3 a2 ~@2 d4 ~@7 a3@2 ~@3 a2 ~@2 d4 ~@7 a3@2 ~@3 a2 ~@2 d4 ~ [a3,d4]@8, g2@3 ~ a2@4 d3@8 g2@3 ~ a2@4 d3@8 g2@3 ~ a2@4 ~@8, ~@2 a3@8 a3@6 ~@6 a3@6 ~@6 a3@8 a3@6 ~@6 a3@6 ~@6 a3@7 ~ a3@5 d3@16 ~, ~@4 d4@8 ~@2 e4@6 d4@4 d4@11 ~ d4@6 ~@4 e4@6 d4@4 d4@11 ~ d4@6 ~@4 e4@18]/6", // D5
  D: "~@4 [g3,d4,e4]@3 ~@9", E: "~@2 [d3,a3,d4] ~@2 [d3,a3,d4] ~@2", F: "~@2 [d3,a3,d4] ~@2 [d3,a3,d4]@3",
  G: "~@2 [g3,a3,d4] ~@2 [g3,a3,d4]!2 ~", H: "~@2 [a3,b3,e4] ~@2 [a3,b3,e4]!2 ~",
  I: "~@4 [d3,a3,d4]@2 ~@4 [d3,a3,d4]@2 [c#3,c#4]@3 ~", J: "~@2 [b2,d4,a4] ~@2 [b2,d4,a4]!2 ~",
  K: "~@2 [g2,a3,d4] ~@2 [g2,a3,d4]!2 ~", L: "~@2 [a2,a3,e4] ~@2 [a2,a3,e4]!2 ~",
  M: "~@2 [d3,a3,d4] ~@2 [d3,a3,d4]!2 ~", N: "~@7 a3, c4 d3 a3 c4, ~@2 a3@4 c4@4 d3@5 ~",
  O: "~@2 [d3,a3,d4] ~@2 [d3,a3,d4] [c#3,c#4]@2", P: "~@12 a3@3 ~, d3@3 ~@5, ~ a3@2 a3@3 ~@2, ~@4 d4@4 d4@7 ~",
  Q: "[~@3 a2 ~@2 d4 ~@7 a3@2, g2@3 ~ a2@4 d3@5 ~@3, ~@2 a3@8 a3@5 ~@5 d4@4 d4@7 ~, ~@4 d4@6 ~@4 e4@7 ~ a3@6 ~@4]/2",
  R: "[~@3 a2 ~@2 d4 ~ [a3,d4]@8, g2@3 ~ a2@4 ~@8, ~@2 a3@8 a3@4 ~ d3@16 ~, ~@2 d4@3 ~@2 e4@9]/2", // D5
  S: "[~@7 a3@2 ~ [g3,a3,d4] ~@2 [g3,a3,d4]!2 ~, c4@4 d3@4 a3@4 c4@5 ~@15, ~@2 a3@4 c4@4 d3@5 ~@17]/2", // Gsus2
  T: "[~@2 d4 ~@8 a2 ~@2 d4 ~@7 a3@2, d3@6 ~@2 d4@8 g2@6 ~@2 a2@8 d3@7 ~@9, ~@2 a3@4 a3@6 a3@6 a3@5 ~@3 a3@6 ~@4 d4@4 d4@8, ~@20 d4@6 ~@4 e4@7 ~ a3@6 ~@4]/3",
  U: "[~@3 a2 ~@2 d4 ~ [b3,e4]@8, g2@3 ~ a2@4 ~@8, ~@2 a3@8 a3@5 e3@16 ~, ~@2 d4@4 ~ f#4@9]/2", // E5
  V: "~@4 [a3,e4,f#4]@3 ~@9", W: "~@2 [e3,b3,e4] ~@2 [e3,b3,e4] ~@2", X: "~@2 [e3,b3,e4] ~@2 [e3,b3,e4]@3",
  Y: "~@2 [b3,c#4,f#4] ~@2 [b3,c#4,f#4]!2 ~", Z: "~@2 [e3,b3,e4] ~@2 [e3,b3,e4] [d#3,d#4]@2",
  AA: "~@2 [c#3,e4,b4] ~@2 [c#3,e4,b4]!2 ~", AB: "~@2 [a2,b3,e4] ~@2 [a2,b3,e4]!2 ~",
  AC: "~@2 [b2,b3,f#4] ~@2 [b2,b3,f#4]!2 ~", AD: "~@2 [e3,b3,e4] ~@2 [e3,b3,e4]!2 ~",
  AE: "[~@7 b3@2 ~ [a3,b3,e4] ~@2 [a3,b3,e4]!2 ~, d4@4 e3@4 b3@4 d4@5 ~@15, ~@2 b3@4 d4@4 e3@5 ~@17]/2", // Asus2
  AF: "~@2 [b2,b3,f#4] ~@2 [b2,b3,f#4] [b2,b3,f#4]@2", // B5
  AG: "[~@11 b2 ~@2 e4@2, e3@2 e4@2 e4@3 ~ a2@3 ~ b2@4, ~@2 b3@4 b3@6 b3@6 b3@5 ~@3 b3@6, ~@5 e4@2 ~]/2",
  AH: "~@3 b3, e3 ~, ~ b3@2 b3@3 ~@2, ~@4 e4@4 e4@7 ~",
  AI: "[~@3 b2 ~@2 e4 ~@7 b3@2, a2@3 ~ b2@3 ~ e3@4 ~@4, ~@2 b3@5 ~@3 b3@6 ~@2 b3@4 b3@6 ~@4, ~@4 e4@8 ~@2 f#4@6 e4@4 e4@7 ~]/2",
  AJ: "[~@3 b2 ~@2 e4 ~@7 b3@2, a2@6 ~@2 b2@8 e3@9 ~@7, ~ b3@4 b3@3 ~ b3@2 b3@3 ~@2, ~@4 e4@8 ~@2 f#4@6 e4@4 e4@7 ~]/2",
  AK: "[~@3 b2 ~@2 e4 ~@12 b2 ~@2 e4 ~@12 b2 ~@2 e4 ~@7 b3@2, a2@6 ~@2 b2@8 e3@9 ~@7 a2@6 ~@2 b2@8 e3@10 ~@6 a2@6 ~@2 b2@8 e3@9 ~@7, ~ b3@4 b3@3 ~ b3@2 b3@3 b3@3 b3@4 b3@3 ~ b3@2 b3@3 b3@3 b3@4 b3@3 ~ b3@2 b3@3 ~@2, ~@4 e4@8 ~@2 f#4@6 e4@4 e4@7 ~@5 e4@8 ~@2 f#4@8 ~@24 f#4@9 ~@9, ~@52 e4@4 e4@8 ~@4 e4@8 ~@8 e4@4 e4@7 ~]/6",
  AL: "[~@6 b2@2 ~@4 e4@2 ~@14 b3@3 ~, a2@6 ~@2 b2@8 e3@11 ~@5, ~ b3@4 b3@3 ~ b3@2 b3@3 ~@2, ~@4 e4@8 ~@2 f#4@6 e4@4 e4@7 ~]/2",
  AM: "[~@6 b2@2 ~@4 e4@2 ~@14 b3@3 ~, a2@3 ~ b2@4 e3@5 ~@3, ~@2 b3@8 b3@5 ~@3 b3@4 b3@6 ~@4, ~@4 e4@8 ~@2 f#4@9 ~@9, ~@5 e4 e4@2]/2",
  AN: "[~@6 b2@2 ~@4 e4@2 ~@14 b3@3 ~, a2@6 ~@2 b2@8 e3@11 ~@5, ~ b3@4 b3@3 ~ b3@2 b3@3 ~@2, ~@2 e4@4 ~ f#4@5 ~@4, ~@5 e4 e4@2]/2",
  AO: "[~@3 b2 ~@2 e4 ~@7 b3@2, a2@3 ~ b2@4 e3@4 ~@4, ~ b3@4 b3@3 ~ b3@2 b3@3 ~@2, ~@4 e4@8 ~@2 f#4@4 ~@2 e4@4 e4@7 ~]/2",
  AP: "~@3 b2 ~ b3 ~@2, a2@3 ~ b2@2 ~@2, ~ b3@3 ~@4, ~@2 e4@3 ~@3",
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.2)

// chords · distortion guitar
const distortion_guitar = note(`<
  A B A B C B C B ~@7 D ~@14 C B E B F G F H F I F D J K L M J N O P Q N R S T U C V@3 W X W Y W Z W AA AB AC AD AE AB S
  AF AG N S AH AI AJ AK AL@2 N S AH AI AJ AM ~@2 AN AO AP@2 AQ AR AS AT@5 ~@8
>`.pickRestart({
  A: "[d3,a3]@7 ~", B: "[g2,d3,a3] [a2,e3,a3]", C: "[d3,a3]", D: "~@4 e6@2 d6 ~@3 e6@2 d6@2 ~@2", E: "[d3,a3]@15 ~",
  F: "[d3,a3] ~@2 [d3,a3] ~@4", G: "[g2,d3] ~@2 [a2,e3] ~@4", H: "[g2,d3]@3 ~@3 [a2,e3]@3 ~@7",
  I: "[g2,d3]@2 ~@4 [a2,e3]@3 ~@7", J: "[g2,d3]@3 ~@3 [g2,d3]@5 ~@5", K: "[a2,e3]@2 ~@4 [a2,e3]@5 ~@5",
  L: "[d3,a3] ~@2 [d3,a3]@2 ~ [c#3,a3]@2", M: "[b2,f#3] ~@2 [b2,f#3]@3 ~@2", N: "[a2,e3]@3 ~@3 [a2,e3]@4 ~@6",
  O: "[d3,a3]@2 ~@4 [d3,a3]@5 ~@5", P: "[d3,a3] ~@2 [d3,a3]@3 ~@2", Q: "[g2,d3]@3 ~@3 [g2,d3]@4 ~@6",
  R: "[d3,a3]@3 ~@3 [d3,a3]@6 [c#3,a3]@4", S: "[b2,f#3]@3 ~@3 [b2,f#3]@4 ~@6", T: "[g2,d3] ~@2 [g2,d3]@2 ~@3",
  U: "[a2,e3]@3 ~@3 [a2,e3]@7 ~@3", V: "[[g2,d3,a3]@8 ~@8 [d3,a3]@31 ~, ~@8 [a2,e3,a3]@7 d4@32 ~, ~@14 e4@33 ~]/3",
  W: "[e3,b3] ~@2 [e3,b3] ~@4", X: "[a2,e3] ~@2 [b2,f#3] ~@4", Y: "[a2,e3]@3 ~@3 [b2,f#3]@3 ~@7",
  Z: "[a2,e3]@2 ~@4 [b2,f#3]@3 ~@7", AA: "~@4 f#6@2 e6 ~@3 f#6@2 e6@2 ~@2", AB: "[a2,e3]@3 ~@3 [a2,e3]@5 ~@5",
  AC: "[b2,f#3]@2 ~@4 [b2,f#3]@5 ~@5", AD: "[e3,b3] ~@2 [e3,b3]@2 ~ [d#3,b3]@2", AE: "[c#3,g#3] ~@2 [c#3,g#3]@3 ~@2",
  AF: "[e3,b3]@2 ~@4 [e3,b3]@5 ~@5", AG: "[e3,b3] ~@2 [e3,b3]@3 ~@2", AH: "[e3,b3]@3 ~@3 [e3,b3]@6 [d#3,b3]@4",
  AI: "[c#3,g#3]@3 ~@3 [c#3,g#3]@4 ~@6", AJ: "[a2,e3] ~@2 [a2,e3]@2 ~@3", AK: "[b2,f#3]@3 ~@3 [b2,f#3]@10",
  AL: "[[e3,b3]@2 ~@18 f#6@2 e6 ~@3 f#6@2 e6@2 ~@2, ~@3 [e3,b3]@13]/2", AM: "[b2,f#3]@3 ~@3 [b2,f#3]@7 ~@3",
  AN: "b4@2 a4 g#4 a4 g#4 f#4 e4 f#4@2 g#4 e4@3 b3 c#4", AO: "b3@8 c#4@2 e4@2 f#4@2 e4 ~",
  AP: "[g#4@9 ~ a4@2 b4@2 b4@4 c#5@2 e5@7 ~ f#5@3 ~]/2", AQ: "g#5@7 ~ f#5@3 e5@5",
  AR: "b4@2 c#5@2 e5@2 c#5@4 b4@4 c#5 b4", AS: "f#5@4 e5@2 g#5@7 a5 ~ a#5",
  AT: "[b5@5 c#6 b5@2 e6@4 c#6@2 b5@6 g#5@2 b5@2 f#5@4 e5@6 b4@2 c#5@2 e5@2 f#5@4 e5 c#5 e5@28 ~@6]/5",
})).s("gm_distortion_guitar").gain(0.35).pan(0.6)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@8 A B A B A B A@2 C D E F C D A G C D E F C D ~@4 A B A B A B A@2 C D E F C D A G C D E F C D ~@4 H I H I H I H@2 D
  J K L D J H M D J K L D J H@2 D J K L D J H N H N H N H N H N H N H N H N H N H N H N
>`.pickRestart({
  A: "[d3,a3]!8", B: "[g2,d3,a3]!4 [a2,e3,a3]!4", C: "[g2,d3]!8", D: "[a2,e3]!8",
  E: "[d3,a3]!3 [d3,a3]@2 [d3,a3] [c#3,a3]@2", F: "[b2,f#3]!3 [b2,f#3]@2 [b2,f#3] [a2,f#3]@2", G: "[c3,a3]!8",
  H: "[e3,b3]!8", I: "[a2,e3,b3]!4 [b2,f#3,b3]!4", J: "[b2,f#3]!8", K: "[e3,b3]!3 [e3,b3]@2 [e3,b3] [d#3,b3]@2",
  L: "[c#3,g#3]!3 [c#3,g#3]@2 [c#3,g#3] [b2,g#3]@2", M: "[d3,b3]!8", N: "[a2,e3]!4 [b2,f#3]!4",
})).s("gm_electric_guitar_muted").gain(0.4)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@23 A ~@5 B ~@19 A ~@5 B ~@3 C ~@15 A ~@5 B ~@7 B ~@22>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~@10 x!2 ~@4",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C B C ~ A B C B C B C ~ A B D B D B D ~ A D B D B@2 A B C ~ A B C B C B C ~ A B D B D B D ~ A D B D B@2 A B A
  ~ A B C B C B C ~ A B D B D B D ~ A D B D B@2 E ~ A D B D B@2 A B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!2", B: "x!7 ~", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x!8",
  E: "~@2 x ~ x ~@3 x ~ x ~ x ~ x!2",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ C ~@2 A ~ A@2 ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ C ~@2 A ~ A@2 ~ A ~
  B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ C ~@2 A ~ A@2 ~ B ~@2 A ~ A@2 ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@7 x", B: "x!7 ~", C: "x!2 ~ x!2 ~ x ~",
})).gain(0.44)

// drums · crash
const crash = s("cr").struct(`<
  A ~@6 B A ~@7 A ~@6 C A ~@5 A ~@2 B A ~@7 A ~@6 C A ~@5 A B A B A ~@7 A ~@6 C A ~@5 D ~ A ~@5 A B A E A E A B A B A ~
  A ~ A ~ A B A ~ A ~
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~ x ~@2", D: "x ~@5 x ~@6 x ~@2", E: "~@7 x",
})).gain(0.38)

// drums · tambourine
const tambourine = s("tb").struct("<~@56 A@11 B A@7 C A@5 D A C A@5 C A@22>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x ~@3 x ~ x!2", C: "~ x!3", D: "~@2 x ~@2 x!2 ~",
})).gain(0.57)

stack(
  rock_organ, bass, electric_guitar_clean, distortion_guitar, electric_guitar_muted, kick, snare, low_tom, hihat,
  open_hat, crash, tambourine
)

More by Berte