Strudelify

Io voglio solo te

Mina

KeyD majorTempo76 bpm
0:00/0:00
// Io voglio solo te — Mina
// 76 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 87 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(76/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 · synth strings 1
const synth_strings_1 = note(`<
  ~@4 A B@2 C@2 B@2 C@2 D@2 E F G H I J ~@3 A B@2 C@2 B@2 C@2 K@2 L M N O E P Q P R S Q T U@2 ~ A B@2 C@2 B@2 C@2 K@2 L
  M N O E P Q P R V Q T E P Q P R W Q P U@2 L A ~@2
>`.pickRestart({
  A: "[a3,b3,e4]", B: "[[d4,f#4] [c#4,e4], [a3,b3]@47 ~]/2", C: "[[g3,a3]@24 [a3,b3,f#4]@23 ~, d4@47 ~]/2",
  D: "[d4@36 c#4@11 ~, [a3,e4]@47 ~]/2", E: "[g3,a3,d4]", F: "[g3,a3,d4]@12 [a3,b3,e4]@11 ~", G: "[b3,d4,e4,f#4]",
  H: "[a3,b3,c#4,e4]", I: "[g3,a3,b3,d4]", J: "[g3,a3,b3,d4] [a3,b3,c#4,e4]",
  K: "[d4@23 ~ c#4@24, [a3,b3]@47 ~, ~@23 e4@24 ~]/2", L: "[e3,g3,b3,d4]", M: "[a3,b3,c#4,e4]@23 ~", N: "[g3,c4,d4,e4]",
  O: "[a3,d4,e4,f#4]@11 ~", P: "g4@3 f#4@5, [a3,d4]", Q: "[g3,c4,d4]", R: "[b3,d4,e4,g4]",
  S: "g4@3 f#4@5, [a3,d4]@23 ~", T: "g4@8 ~ f#4@15, [a3,d4]", U: "[d4@23 ~ e4@23 ~, [a3,b3]@47 ~]/2",
  V: "g4@9 f#4@14 ~, [a3,d4]@23 ~", W: "g4@9 f#4@14 ~, [a3,d4]",
})).s("gm_synth_strings_1").gain(0.26)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note("<~ A@2 B ~@17 A@2 B ~@25 B ~@35 C@2>".pickRestart({
  A: "[d4@23 ~ e4@23 ~, [a3,b3]@47 ~]/2", B: "[e3,g3,b3,d4]", C: "[[d4,f#4,a4,b4]@11 ~]/2",
})).s("gm_synth_strings_1").gain(0.15)

// bass · electric bass finger
const bass = note(`<
  ~ A B C D E F G H E F G I J K L M N K L O A B C D E F G I E F G I P Q R S T U V W X Y Z AA AB AC AD AE C AF E F G I E
  F G I P Q R S T U V W X AG AH AI AB AC V AJ X Y AH AI X AC AD AE C AK AL@2
>`.pickRestart({
  A: "a1@2 b1 ~@5 f#1 a1@2 b1 ~@11 f#1", B: "a1@2 b1@2 ~@7 b1 e1@2 ~ e1@6 ~@2 f#1", C: "a1 ~ b1 ~@5 f#1 a1@2 b1 ~@12",
  D: "a1@2 b1 ~@11 b1 f#2@2 ~ d2@3 b1@2 ~", E: "a1@2 b1 ~@5 f#1 a1@2 b1 ~@11 e1",
  F: "a1@2 b1 ~@11 b1 e1@3 f#1@3 d1@2 f#1", G: "a1@2 b1@2 ~@4 f#1 a1@2 b1 ~@11 e1",
  H: "a1@2 b1 ~@8 b1 ~@2 b1 a1@3 f#1@3 a1@3", I: "a1@2 b1 ~@8 b1 ~@2 b1 a1@3 f#1@3 a1@2 ~", J: "d1@17 ~ b1@6",
  K: "a1@23 ~", L: "g1@23 ~", M: "a1@17 ~ e2@3 d2@3", N: "b1@23 ~", O: "a1@11 ~ a1@12",
  P: "g1@9 d1@2 g1 ~@2 d1 g1@5 d1 g1@3", Q: "a1@8 e1@3 a1@3 e1 a1@5 ~ a1@3", R: "e1@10 ~ e1 ~@2 e1 e1@6 e1@2 ~",
  S: "a1@9 e1@2 a1 ~@2 e1 a1@5 e1 a1@2 b1", T: "c2@9 g1@2 c2@2 ~ c1 c2@5 c1 c2@3",
  U: "d2@9 a1@2 d1 ~@2 d1 d1@5 d2 d1@3", V: "g1@9 a1@3 g1 ~ g1 g1@5 ~ g1@3", W: "d1@6 d2@5 d1@2 ~ d1 d1@3 d2@3 a1@3",
  X: "c2@8 g1 a1@2 c2 ~@2 c2 c1@4 ~ c1 g1@3", Y: "d1@6 d2@3 d1@2 a1 ~@2 a1 d1@3 d2@3 a1@3",
  Z: "e1@6 e2@3 e1@2 b1@2 ~ b1 e1@3 e2@3 e1@3", AA: "d2@5 ~ a1@3 d1@2 d2@2 ~ d2 a1@2 d1 a1@2 d2 a1@2 ~",
  AB: "c2@2 c2 ~ c2 ~ c2@3 c2@2 c1@2 ~ c1 c2@3 g1@3 c1@3", AC: "d1@3 a1@2 d2@3 a1 d1@3 a1@2 d2 a1@3 d1@2 a1@4",
  AD: "a1@2 b1 ~@5 f#1 a1@2 b1 ~@8 f#1 a1@2 f#1", AE: "a1@2 b1@2 ~@7 b1 d2@2 b1 d2@3 b1@4 ~ f#1",
  AF: "a1@2 b1 ~@8 e1 f#1 ~ f#1 e1@4 ~ d1@3 ~", AG: "d1@6 d2@3 d1@2 a1 ~@2 a1 d1@3 d2@3 a1@2 ~",
  AH: "e1@6 e2@3 e1@2 b1@2 ~ b1 e1@3 e2@3 e1@2 ~", AI: "d2@5 ~ a1@3 d1@2 d2@2 ~ d2 a1@2 d1 a1@2 d2 a1@3",
  AJ: "d1@6 d2@5 d1@3 d1 d1@3 d2@3 a1@3", AK: "a1@2 b1 ~@8 e1 f#1 ~ f#1 e1@4 ~ d1@4", AL: "[b0@15 ~]/2",
})).s("gm_electric_bass_finger").gain(0.55)

// chords · epiano1
const epiano1 = note(`<
  ~ A B C D@2 E F D@2 E F D G H I J K L M N A B C D@2 E F D@2 E F D I O P Q R S T U V W X Y Z AA A B C D@2 E F D@2 E F D
  I O P Q R S T U V W X Y Z AA T U V W X Y Z AA A B C AB@3
>`.pickRestart({
  A: "[a3,b3,d4,f#4]", B: "[a3,b3,d4,e4]@23 ~", C: "[e3,g3,b3,d4]", D: "[a3,b3,d4,f#4]@23 ~", E: "[a3,b3,c#4]",
  F: "[g3,a3,b3,d4]", G: "[d3,a3,d4,e4,f#4]@23 ~", H: "[a2,d4]@6 [a2,c#4]@5 ~, [a3,b3,e4]", I: "[g2,g3,a3,b3,d4]@23 ~",
  J: "[g3,a3,b3,d4]@11 ~ [a3,b3,c#4,e4]@11 ~, a2@11 ~", K: "[b2,b3,e4]@23 ~, [d4,f#4]@7 ~",
  L: "[a2,a3,b3,e4]@11 ~, c#4@5 ~@3", M: "[g2,g3,a3,b3,d4]@11 ~",
  N: "[a2,g3,a3,b3,d4]@11 ~ [a2,c#4,e4]@11 ~, ~@4 [a3,b3]@3 ~", O: "[a2,a3,b3,c#4,e4]", P: "[e2,g3,b3,d4,e4]",
  Q: "[a2,a3,b3,c#4,e4]@23 ~", R: "[c4,d4,e4,g4]@5 ~",
  S: "d4@15 ~@3 [d4,e4,f#4]@5 ~, [e4,f#4]@17 ~@7, a3@13 ~@2 a3@7 ~@2", T: "[g3,a3,d4]",
  U: "[a3,d4,g4]@8 ~ [a3,d4]@5 ~ d4@3 [a3,d4,f#4]@5 ~, ~@3 f#4@3 ~@2, ~@7 a3@2 ~@3", // Dsus4 D5 D
  V: "[c4,d4]@7 ~@2 d4@3, g3@13 ~ g3@10, ~@5 c4@3", // Csus2
  W: "[a3,d4,g4]@8 ~ [a3,d4]@5 ~ d4@3 [a3,d4,f#4]@5 ~, ~@9 f#4@8 ~@7, ~@14 a3@3 ~@7", // Dsus4 D5 D
  X: "[b3,d4,e4,g4]@7 ~@2 b3@3, ~@5 [d4,e4,g4]@3", Y: "g4@3 ~@2 d4 [a3,d4,f#4]@2, [a3,d4]@7 a3@2 ~@3, ~@3 f#4@3 ~@2",
  Z: "[g3,c4,d4]@6 ~ g3, ~@3 [c4,d4]", AA: "g4@8 ~@10 d4@3 ~@3, d4@17 ~@7, a3@13 ~@2 a3@6 ~@3, ~@9 f#4@14 ~",
  AB: "[[a3,b3,d4,f#4]@23 ~ [d4,f#4]@42 ~@6, ~@23 [a3,b3]@43 ~@6]/3", // Bm7 D Asus2
})).s("gm_epiano1").gain(0.45).pan(0.7)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@21 A@2 B C ~@12 D E F G H I J K L M N ~@15 D E F G H I J K L M F G H I J K L M N ~@5
>`.pickRestart({
  A: "[~@2 [f#3,d4,f#4]@11 d4 d4@2, ~@13 [f#3,a3]@3]/2", // D F#m
  B: "[e3,b3]@2 b3 ~@3 b3@5 b3@2 ~@2 e3@3 [e3,b3]@6, ~@3 e3@4 b3@2 ~@3", // E5
  C: "[b3,e4]@2 e4 [b3,e4]@2 e4 [b3,e4]@2 e4 [b3,e4]@2 e4 [b3,e4]@2 d4 [b3,d4]@3 [d4,f#4]@6", D: "[c3,g3]",
  E: "[d3,a3]@3 [d3,a3]", F: "[g2,d3]@5 [g2,d3]@2 [g2,d3]", G: "[d3,a3]@11 d3@7 ~@3 a3@3, ~@11 a3@10 ~@3, ~@3 d3",
  H: "[c3,g3]@11 c3@4 c3@3 [c3,g3]@6, ~@11 g3@7 ~@6", I: "g3@3 ~@2 d3 [d3,a3]@2, d3@5 ~@3, ~@3 a3@3 ~@2",
  J: "[e2,b2]@5 e2@2 e2, ~@5 b2@3", K: "g3@3 ~@3 d3@2, d3@3 ~, ~@3 a3@5", L: "c3@11 c3@4 c3@3 c3@6, g3@5 g3@3",
  M: "[d3,g3]@3 d3@2 d3 [d3,a3]@2, ~@3 a3@3 ~@2", N: "[b2,f#3,b3]@23 ~",
})).s("gm_distortion_guitar").gain(0.38).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@4 A ~@27 B@7 C D E F G H I J ~@3 A ~@7 B@7 C D E F G H I J C D E F G H E J ~@3 A ~@2
>`.pickRestart({
  A: "~@6 [a4,d5]@2 [e4,b4,e5] ~@15", // D5 E5
  B: "[~@25 g4@8 d4@2 d4@3 d4@6 ~@4 [c#4,e4]@6 ~@12 a4@4 ~@3 b2@22 ~ [c#4,e4]@6 c#4@3 ~@2 e4@3 [c#4,e4] [c#4,e4]@7 ~@3 e4@21 ~@3 e4@19 e4!2 ~ d4, ~@23 g3@9 ~@15 a3@24 ~ g3@24 ~@24 [e3,g3,d4]@22 ~ d3@21 ~@4, ~@24 [b3,d4]@9 ~@2 g4@9 ~@4 a4@10 ~ a4@7 ~@102, ~@62 e4@8 ~@2 e3@22 ~ e3@23 ~ c3@24 ~@25, ~@63 c#4@8 [d4,e4]@24 a3@6 ~@4 c#4@5 ~@34 [a3,d4]@20 ~@2 [d4,e4]@2]/7", // C#m Em7 Bm Dsus2 D5 Dsus2
  C: "[b3,d4,g4]@3 [b3,d4,g4]@3 g4@3 g4 ~ [b3,g4]@3 [b3,d4] d4@2 ~ [b3,d4,g4]@2 [b3,d4] d4@2 ~, ~@6 [b3,d4]@5 ~@3 g4@4 ~@2 g4@3 ~", // G Em Bm G Bm
  D: "[a3,d4,g4]@3 [a3,d4,g4]@3 [a3,d4]@3 [d4,g4]@2 [d4,f#4]@3 d4 d4@3 [d4,f#4]@2 f#4 f#4@3, ~@3 a3@3 a3@2, ~@7 f#4@2 ~ d4@2", // Dsus4 D5 G5 D
  E: "[g3,d4,e4]@3 [g3,d4,e4]@3 [g3,d4,e4]@3 [d4,e4]@2 [d4,e4]@3 d4 [g3,d4]@3 [d4,e4]@2 [d4,e4]@4, ~@9 g3@5 e4@4 g3@5 ~", // Em7 Dsus2 G5 Dsus2
  F: "[d4,g4]@3 [d4,g4]@3 [a3,d4,g4]@3 [a3,d4,g4]@2 [a3,d4,f#4]@3 d4 d4@3 [d4,f#4]@2 [d4,f#4]@3 ~, a3@6 ~@8 [a3,f#4]@4 a3@5 ~", // G5 Dsus4 D
  G: "[d4,e4]@3 d4@2 ~ [d4,e4]@3 [d4,e4]@2 [d4,e4]@3 [d4,e4]@4 [d4,e4]@2 d4 [g3,d4]@3, g3@5 ~ g3@14 e4@4", // Dsus2 G5
  H: "[d4,g4]@3 [d4,g4]@3 [a3,d4,g4]@3 [d4,g4]@2 [d4,f#4]@3 [d4,f#4] [d4,f#4]@3 [a3,d4,f#4]@2 [a3,d4,f#4]@3 ~, a3@6 ~@5 a3@7 ~@6", // G5 Dsus4 G5 D
  I: "[g3,d4,e4]@2 [g3,d4,e4] ~ [g3,d4,e4] ~ [g3,d4,e4]@2 ~ [d4,e4]@2 [d4,e4]@3 d4 d4@2 e4 e4@3 [d4,e4]@3, ~@11 g3@13, ~@14 e4@3 d4@4 ~@3", // Em7 Dsus2
  J: "g4@3 g4@3 [d4,g4]@3 [d4,g4]@2 [d4,f#4]@3 f#4 f#4@3 [d4,f#4]@2 [d4,f#4]@3 f#4, [a3,d4]@6 a3@17 ~, ~@7 d4@2 ~@3", // G5 D D5
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@33 A B ~ C ~ D E F ~@2 G H ~@14 A B ~ C ~ D E F ~@2 G H ~@2 E F ~@2 G H ~@8
>`.pickRestart({
  A: "~@9 [g3,b3]@6 g3@7 ~@2, ~@9 g4 ~@5 b3@5 ~@4", B: "~@6 [c#4,e4]@2 ~ e4@2 e4@3 ~@10, ~@3 c#4@2 ~@3",
  C: "~@6 [a3,e4]@3 a3@6 a3@7 ~@2, ~@9 e4 ~@14", D: "~@20 [a3,d4] ~ a3@2", E: "~@11 d4@3 ~ b3@2 ~@4 b3@2 ~",
  F: "~@2 g4 ~@5", G: "~@3 e4@2 ~@19", H: "~@9 a3@2 ~@13",
})).s("gm_acoustic_guitar_steel").gain(0.23)

// other · clavinet
const clavinet = note(`<
  A B C D E F G H I F G J K ~@8 B C D L F G H I F G J K ~@14 M N O E F G H I F G J K ~@22 M N O E ~@2
>`.pickRestart({
  A: "~@9 [b1,b2]@2 ~ [d2,d3]@2 ~ [e2,e3]@2 ~ [e2,e3] [f2,e3,f3] [d2,e2,d3] b2@2 ~, ~@21 b1 ~@2", // B D E Fmaj7 Dsus2
  B: "[a1,a2]@2 b1@2 ~@4 [f#1,f#2] a1@2 [b1,b2] ~@5 [b1,b2] [d2,a2,d3]@2 [e2,b2,e3] ~@2 [f#1,f#2], ~@2 b2 ~@6 a2 ~@14", // A F# B D5 E5 F#
  C: "a2@2 [b1,b2] ~@11 [b1,b2] d2@2 ~ [e2,e3] ~@4 [f#1,f#2], a1 ~@14 d3 ~@8", // B E F#
  D: "[a1,a2]@2 [b1,b2] ~@6 a2@2 [b1,b2] ~@5 b2 e3 f3 e3 d3@2 [f#1,f#2], ~@9 a1 ~@14", // A B F#
  E: "[a1,a2]@2 [b1,b2] ~@9 [a3,d4]@2 d3 [b3,e4] ~ [b3,e4] ~@2 d3 [a3,d4]@2 ~", // A B D5 E5 D5
  F: "[a1,a2]@2 [b1,b2]@2 ~@4 [f#1,f#2] [a1,a2]@2 [b1,b2] ~@5 f#2 [b2,d3] ~ e3 ~@2 [e1,e2]", // A B F# A B Bm E
  G: "[a1,a2]@2 [b1,b2] ~@20 [g1,g2]", H: "[a1,a2]@2 [b1,b2] ~@5 [f#1,f#2] a1@2 [b1,b2] ~@11 [f#1,f#2], ~@9 a2 ~@14",
  I: "[a1,a2] ~ [b1,b2] ~@21", J: "[a1,a2]@2 [b1,b2] ~@6 a1@2 [b1,b2] ~@11 [f#1,f#2], ~@9 a2 ~@14",
  K: "[a1,a2] ~ [b1,b2] ~@8 d3 [a3,d4]@2 d3 [b3,e4] ~ [b3,e4]@3 d3 [a3,d4]@2 ~", L: "[a1,a2]@2 [b1,b2] ~@21",
  M: "[a1,a2]@2 b1@2 ~@4 [f#1,f#2] a1@2 [b1,b2] ~@11 [f#1,f#2], ~@2 b2 ~@6 a2 ~@14", // A F# B F#
  N: "a2@2 [b1,b2] ~@12 d2@2 ~ [b1,b2] ~@4 [f#1,f#2], a1 ~@14 d3 ~@8", // B F#
  O: "[a1,a2]@2 [b1,b2] ~@6 a2@2 [b1,b2] ~@11 [f#1,f#2], ~@9 a1 ~@14", // A B F#
})).s("gm_clavinet").gain(0.35).pan(0.6)

// other · pad bowed
const pad_bowed = note("<~@13 A B@2 C D E F G ~@18 H@7 I ~@18 H@7 I H@7 I ~@4 J@2>".pickRestart({
  A: "~ d4 a4 d4 a3 d4 a4 d4, a3 ~@3", B: "a3 d4 a4 d4 a3 d4 a4 d4", C: "a3@3 d4@3 a4@3 d4@3 a3@3 d4@3 a4@3 d4@2 ~",
  D: "~ d4 ~ d4 ~ d4 a4 d4, b3@2 a4@2 b3@3 ~", E: "~ e4 a4 e4 ~ e4 a4 e4, a3@9 ~@3 a3@10 ~@2",
  F: "~ d4 a4 d4 ~ d4 a4 d4, a3@9 ~@3 a3@10 ~@2", G: "~@3 d4@3 a4@3 d4@3 ~@3 d4@3 ~@3 d4@2 ~, a3@11 ~ a3@9 ~@3, ~@3 a4",
  H: "d4 g4 d5 g4 d4 g4 a4 g4", I: "d4 g4 d5 g4 d4 g4 a4 ~", J: "[[a3,b3,d4]@7 ~]/2",
})).s("gm_pad_bowed").gain(0.4).pan(0.7)

// other · pad bowed · soft notes
const pad_bowed_soft = note("<~ A B C D ~@16 A B C D ~@21 E ~@25 E ~@7 E ~@4 F@2>".pickRestart({
  A: "~@5 d6 b5 f#5, ~@11 f#6@7 ~@6", B: "d5@3 f#5 b5 f#5 d5 b4", C: "d5@3 f#5@2 b4@3", D: "~@9 f#5@13 ~@2, ~ b5@6 ~",
  E: "~@7 g4", F: "[f#4@7 ~]/2",
})).s("gm_pad_bowed").gain(0.23).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@5 A B C D A B C E F G H I J K L M ~@4 A B C D A B C D ~@18 A B C D A B C D ~@28
>`.pickRestart({
  A: "~@3 [b3,d4]@2 [b3,d4] ~@8 [b3,d4] ~@9", // Bm
  B: "[c#4,e4] ~@2 [a3,c#4]@3 ~@11 [c#4,e4] ~@2 e4 [c#4,e4] ~ e4, a3@3 e4 ~@20", // C#m A C#m
  C: "b3 ~ b3 ~@2 d4 ~@3 [b3,d4]@6 ~@9, [g3,d4] ~@5", // Bm G5
  D: "[b3,d4]@2 f#4 b3 ~@5 d4 ~ d4@3 ~ d4 ~@4 [b3,d4] ~@3, ~@3 b3@2 ~@3", // Bm
  E: "[b3,d4]@2 f#4 b3 ~@5 d4 ~ d4@3 d4 ~@5 [b3,d4] ~@3, ~@3 b3@2 ~@3", F: "d3@11 ~@4 a3@9, a3@5 ~@3, ~@12 d3@11 ~",
  G: "[e3,a3]@8 ~ [e3,a3]@8 ~ [e3,a3]@3 ~@3", H: "[d3,g3]@14 ~ [d3,g3]@8 ~", I: "[d3,g3]@4 [e3,a3]@3 ~",
  J: "b2@9 f#3@5 ~ f#3@3 [b2,f#3]@3 ~@3, f#3@7 ~@2 b2@9 ~@6", K: "[e3,a3]@8 ~ [e3,a3]@14 ~",
  L: "d3@6 [d3,g3]@2 ~ [d3,g3]@6 d3@3 ~@2 g3@4, g3@2 ~@7 d3@3", // G5
  M: "[d3,g3]@6 ~ g#3 ~@6 [c#4,e4,a4]@3 [e4,a4] [c#4,e4,a4]@3 [c#4,e4,a4] ~ [c#4,e4,a4]", // G5 A A5 A
})).s("gm_electric_guitar_clean").gain(0.21).pan(0.3)

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

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!20 ~@66>").gain(0.75)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@38 [~@23 x] ~@25 [~@23 x] ~@22>").gain(0.53)

// drums · mid tom
const mid_tom = s("mt").struct("<~@38 A ~@3 B ~@3 B ~@17 A ~@3 B ~@3 B ~@3 B ~@3 B ~@6>".pickRestart({
  A: "~@21 x!2 ~", B: "~@20 x ~ x!2",
})).gain(0.6)

// drums · open hat
const open_hat = s("oh").struct("<[~@7 x] ~@49 [~@23 x] ~@36>").gain(0.68)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~@3 A ~ B ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~@3 A ~ B ~ A
  ~@3 A ~@3 A ~@3 A ~
>`.pickRestart({
  A: "x", B: "x!4 ~@8",
})).gain(0.45)
// … 32 more lines

More by Mina