Strudelify
Torno venerdi cover art

Pappa Di Latte Vol. 2

Torno venerdi

Mina

KeyA majorTempo58 bpm
0:00/0:00
// Torno venerdi — Mina
// 58 bpm, 4/4, key A 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 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(58/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 · "TORNO VENE"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI M AJ AK AL Q AM AN AO AP V AQ AR AS Z
  AT AB AU AV AW AX AY AZ BA BB BC AN BD AX AY AZ BA I BE AN BF AX AY AZ BA BG@4
>`.pickRestart({
  A: "d1@8 d1@7 d1", B: "g1@11 ~@5", C: "d1@8 d1@7 a1", D: "c2@3 e2", E: "d1@14 ~ d1", F: "d1@11 ~ f#2@4",
  G: "b1@14 ~ b1", H: "b1@9 f#2@7", I: "g1@7 g1 g1@7 ~", J: "g1@7 g1 g1@6 g1@2", K: "a1@7 a1 a1@8",
  L: "b1 f#1 b0@6 d#2@8", M: "d1@6 ~ d1 d1@7 ~", N: "d1@6 ~ d1 d1@3 a1 d2@4, ~@12 b1 ~@3", O: "b1@7 b1 b1@7 ~",
  P: "b1@7 e2 b2@2 d3@2 b2@4", Q: "g1@6 ~ g1 g1@7 ~", R: "g1@8 ~ d2 g2@2 d2@4", S: "a1@6 ~ a1 a1@6 e3@2",
  T: "b2 f#2 b1@6 b2@3 b1 b2@4", U: "e1@6 ~ e1 e1@4 b1 c#2 e2@2",
  V: "c#2@6 ~ c#2 [c#3,f#3]@2 [e3,b3]@2 [c#3,g#3]@2 [b2,f#3]@2", W: "a2@7 a1 a1@8, e3", X: "f#1@6 ~ b1@9",
  Y: "e2@7 e1 e1@3 c#3@3 e3@2", Z: "c#2@7 c#2 [c#3,g#3]@2 [e3,b3]@2 [c#3,g#3]@2 [b2,f#3]@2",
  AA: "a2@7 a1 a1@4 g#2@4, e3", AB: "f#1@6 ~ b1@5 b1@4", AC: "d2@6 ~ d2 g#1@6 g#1 ~", AD: "c#2@7 b1 a#1@6 a#1@2",
  AE: "b1@3 f#2@3 b2@10", AF: "d3@6 a2@2 d3@6 d1 e1", AG: "g1@15 ~", AH: "d1@11 f1 g1@4", AI: "c2@15 ~",
  AJ: "d1@6 ~ d1!2 d2@7", AK: "b1@7 b1 b1@7 f#1", AL: "b1 f#1 b0@5 b0 b0@6 g1@2", AM: "g1@13 ~ g1 g#1",
  AN: "a1@6 ~ a1 a1@8", AO: "b1@5 g#2 a2@2 b2@2 f#2@2 b1@3 b1", AP: "e2@2 e2@5 e2 e2@4 c#3@2 e3@2",
  AQ: "a2 e2 a1@5 a1 a1@5 c#2@3, e3@15 ~", AR: "f#1@7 a1 b1 a1 b1@2 b1@2 b1 f#1", AS: "e2@7 e2 e2@3 c#3@3 e3@2",
  AT: "a2@7 a1 a1@5 a1@3, e3", AU: "d2@6 ~ d2 g#1@4 c2@4", AV: "c#2@6 b1@2 a#1@7 a#1", AW: "b1 e1 b1@2 f#1 b1@9 ~@2",
  AX: "d1@6 ~ d1 d1@8", AY: "d1!2 ~@5 d1 d1@3 d2@5", AZ: "b1@6 ~ b1 b1@8", BA: "b1!2 ~@5 b1!2 f#2 b2@2 f#2@4",
  BB: "g1@7 g1 g1@8", BC: "g1!2 ~@5 g1 g1@6 g1@2", BD: "b2@7 f#2 b2 f#2 b1@6", BE: "g1!2 ~@5 g1 g1@8",
  BF: "b2 f#2 b1@3 b2 f#2@2 b2@4 f#2@4", BG: "[g1@51 ~@13]/4",
})).s("gm_fretless_bass").gain(0.47)

// bass · slap bass 1 · "TORNO VENE"
const bass_2 = note("<~ [~@11 c3@5] ~@76>").s("gm_slap_bass_1").gain(0.4)

// other · electric guitar muted · "HARMONICS"
const electric_guitar_muted = note("<A B C@2 ~@27 D@4 ~@43>".pickRestart({
  A: "~ g4 f#4 a3@2 d4@4 g4 f#4 a3@2 d4@3", B: "~ g4 f#4 a3@2 d4@6 c4@5",
  C: "[~ g4 f#4 a3@2 d4@4 g4 f#4 a3@2 d4@6 a3@4 d4@9]/2",
  D: "[~@2 g4 f#4@2 a3@2 d4@11 g4 f#4@2 a3@2 d4@11 g4 f#4@2 a3@2 d4@12 g4@4 d5@9]/4",
})).s("gm_electric_guitar_muted").gain(0.22)

// chords · piano
const piano = note(`<
  ~@9 A ~ B C@2 D E F G H I J K L M N O P Q R S T ~@3 U V W X Y@2 Z AA AB J K L M N O P Q R S T AC@2 AD AE AF AG AH AI
  AC@2 AJ AK@2 AL AH AM AC@2 AN AO AP ~@3
>`.pickRestart({
  A: "[d4,f#4,a4] [d4,g4,b4]", B: "~ [d#3,f#3,b3]", C: "[c#4,e4]@7 ~ [d4,f#4]@7 ~, a3@15 ~",
  D: "[c#4,e4]@8 ~@5 b5@2 ~, a3, ~@8 [d4,f#4]@7 ~, ~@11 f#5@4 ~", // C#m D
  E: "[c#4,e4,a4]@7 ~@6 c#6@2 ~, ~@8 [d4,f#4,b4]@7 ~, ~@11 d6@4 ~", F: "[d4,f#4,a4,e5]@8 [d4,g4,b4]@7 ~",
  G: "[e4,a4,c#5]@7 ~ [d4,g4,b4]@7 ~", H: "[e4,a4,d5]@8 [e4,a4,c#5]@7 ~", I: "[g#4,b4,e5]@7 ~ [b4,d#5,f#5]@7 ~",
  J: "[e4,b4,d#5,f#5]@8 [e4,b4,e5,g#5]@7 ~", K: "[c#4,b4,d#5,f#5]@8 [c#4,b4,e5,g#5]@7 ~", L: "[a3,c#4,e4,a4]@15 ~",
  M: "~@4 g#5@3 ~@5 f#5@3 ~, [b3,a4,c#5,e5]@7 ~ [b3,a4,c#5,e5]@7 ~", N: "~@3 e5@12 e5, [e3,e4,g#4,b4]@15 ~",
  O: "[c#4,f#4,b4,d#5]@3 [c#4,g#4,c#5,e5]@12 ~", P: "e5@7 ~ b5@7 ~, [a3,a4,c#5,c#6]@15 ~, ~@7 e5@8 ~",
  Q: "[a3,g#4,b4,e5]@8 [a3,g#4,b4,e5]@4 [b3,b4,d#5,f#5]@3 ~", // E B
  R: "[d4,f#4,a4,d5]@6 [f#4,a4,d5] ~ [g#3,d#4,g#4,c5]@6 [g#3,d#4,g#4,c5] ~, ~@3 d4 ~@4", // D G#
  S: "[c#4,e4,g#4,c#5]@6 c#5 g#5 [a#4,c#5,f#5]@3 [a#4,c#5,f#5]@4 ~", // C#m F#
  T: "c#5@5 ~@2 a5 b5@7 ~, [b3,e4,a4] ~, ~@5 c#5@2 ~@9, ~@3 e5 ~@4", U: "~@13 e5@2 ~, ~@9 d6@6 ~, ~@11 c#6@4 ~",
  V: "[c#4,e4,c#6]@6 e5 ~@3 a4@2 a4@3 ~, a3@15 ~, ~@7 e5@8 ~, ~@8 [d4,f#4]@7 ~, ~@9 f#5@6 ~", // C#m D
  W: "[c#4,e4,a5]@6 e5 ~@3 a4@2 a4@3 ~, a3@15 ~, ~@7 e5@8 ~, ~@8 [d4,f#4]@7 ~, ~@9 f#5@6 ~", // A D
  X: "[a3,c#4,e4,a5]@8 [b4,d5,f#5]@7 ~", // A Bm
  Y: "[[a4,c#5,e5]@7 ~@6 a4@2 ~@2 b4@6 ~ g5@3 g5@4 ~, ~@8 [b4,d5]@7 a4@8 ~ [d4,g4,b4]@7 ~, ~@8 f#5@3 f#5@4 ~ [d5,f#5,a5]@8 ~@8, ~@9 g5@6 ~@17]/2", // A Bm G D
  Z: "[e4,a4,c#5]@7 ~ g5@3 g5@4 ~, ~@8 [d4,g4,b4]@7 ~", AA: "[e4,a4,d5]@7 d5 e4@5 e4@2 ~, ~@8 [a4,c#5]@7 ~",
  AB: "[a3,c#4,e4]@7 ~ [f#3,b3,d#4]@7 ~", AC: "a5@6 e5 ~@3 a4@2 a4@3 ~, ~@7 e5@8 ~, ~@9 f#5@6 ~",
  AD: "[c#4,e4,a4]@8 [f#4,a4,d5]@7 b4", AE: "~@3 b4@4 ~@6 a5@2 ~, ~@7 f#4@8 ~, ~@9 d5@6 ~, ~@11 e5@4 ~",
  AF: "~@5 d6@2 ~@4 g5@4 ~, b5@7 ~ f#5@7 ~", AG: "[b4,d5,f#5]@7 ~ g5@3 g5@2 g5@2 ~, ~@8 [b4,d5]@7 ~",
  AH: "[a3,d4,f#4]@6 [d4,f#4] ~ [a3,c#4]@2 ~@3 a3@2 ~, ~@6 a3@2 e4@7 ~, ~@10 a3@3 ~@3, ~@11 c#4@4 ~", // D A
  AI: "[a3,c#4,e4]@5 [a3,c#4,e4]@2 ~ b3@3 b3@4 ~, ~@8 [d#4,f#4]@7 ~", // A D#m
  AJ: "~ d5 ~@4 e5 ~@5 b4@3 ~, b4@7 e5@8 ~, ~@2 d5@6 ~ f#5@6 ~, ~@10 a4@5 ~",
  AK: "[c#5@7 d5 ~@5 a3@2 ~@2 b3@5 f#5 g5 ~@3 g5@4 ~, ~@9 e4@6 ~@17, ~@11 d4@4 a3@8 ~@9]/2",
  AL: "b4@6 f#5 g5@4 g5@3 b3!2", AM: "[a3,c#4,e4]@5 [a3,c#4,e4]@2 ~ f#4@5 [f#4,b4,d#5]@2 ~, ~@8 [b3,d#4]@7 ~",
  AN: "[c#4,e4,a4]@8 ~@4 e5@2 e5 ~", AO: "~@5 a4@2 ~@7 a4@2, e5@7 b4@8 ~, ~@13 f#4@2 ~", AP: "f#4 ~",
})).s("gm_piano").gain(0.35).pan(0.6)

// other · electric guitar clean · "GUITAR 1"
const electric_guitar_clean = note("<~@4 A@4 B@2 C D A@4 B@2 C ~@16 A@4 B@2 C ~@36>".pickRestart({
  A: "[~@15 d4@2 c#4 a3 d4@2 c#4 a3 d4@2 c#4 a3 d4@2 ~@3]/2", B: "[~@15 d4@2 a3 g3 d4@2 a3 g3 d4@2 a3 g3 d4@2 ~@3]/2",
  C: "~@3 d4@2 a3 f#3 d4 c#4 a3 e3 d4 c#4 a3 e3 d4", D: "c#4 a3 e3 ~ c#4 ~@11",
})).s("gm_electric_guitar_clean").gain(0.19).pan(0.2)

// other · electric guitar clean · "GUITAR 1" · soft notes
const electric_guitar_clean_2 = note("<~@5 A ~ A ~ B ~ C ~ A ~ A ~ B ~@18 A ~ A ~ B ~@37>".pickRestart({
  A: "~@13 c#4 a3 ~", B: "~@13 a3 g3 ~", C: "~@3 d4 ~ a3 e3 ~@9",
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.2)

// chords · distortion guitar · "GUITAR 1"
const distortion_guitar = note("<~@27 A B C D ~@19 A B C D E F@3 G H I@2 E F@3 G H I@2 E F@3 J@4>".pickRestart({
  A: "~@3 d#3", B: "d3 g#2", C: "c#3@3 b2 a#2@3 f#2", D: "b2",
  E: "~@7 c#4 ~@7 d4, c#4 e3@2 e3 ~ f#3@2 f#3, ~ a3@4 a3@3 ~ a3@4 a3@3, ~@3 c#4@4 ~ d4@3 d4@4 ~",
  F: "~@7 c#4 ~@6 f#3@2, c#4 e3@2 e3 ~ f#3@2 ~, ~ a3@4 a3@3 ~ a3@4 a3@3, ~@3 c#4@4 ~ d4@3 d4@5",
  G: "~@7 b3, f#4 a3@2 a3@2 b3@2 ~, ~ d4@4 d4@4 d4@4 d4@3, ~@3 f#4@4 g4@4 g4@5",
  H: "~@7 f#4 ~@6 b3@2, f#4 a3@2 a3 ~ b3@2 ~, ~ d4@4 d4@3 ~ d4@4 d4@3, ~@3 f#4@4 ~ g4@3 g4@5",
  I: "[~@7 d4 ~@11 c#4@5 [f#3,b3,d#4]@8, d4 f#3@2 f#3 ~ e3@2 e3@2 e3@3 ~@4, ~ a3@4 a3@3 ~ a3@4 a3@4 a3@6 ~@9, ~@3 d4@4 ~ c#4@3 c#4@5 c#4@3 ~@13]/2", // B
  J: "[~@6 a3@2 f#4 ~@2 b3@2 g4 ~@4 a3 ~ [f#3,a3,d4]@30 ~@14, f#4@2 a3@4 ~@11 c#4@3 ~@44, ~ d4@4 d4@3 ~@2 d4@4 ~ e4@4 d3@31 ~@14, ~@3 f#4@4 ~@2 g4@4 ~ a4@6 ~@44]/4", // D
})).s("gm_distortion_guitar").gain(0.19).pan(0.2)

// chords · acoustic guitar steel · "GUITAR 2"
const acoustic_guitar_steel = note("<~@4 A B@3 C D E@2 A B@3 C D F@2 ~@15 A B@3 C D F@2 ~@35>".pickRestart({
  A: "~@7 c#4 ~@7 d4, c#4 e3@2 e3 ~ f#3@2 f#3, ~ a3@4 a3@3 ~ a3@4 a3@3, ~@3 c#4@4 ~ d4@3 d4@4 ~",
  B: "~@7 c#4 ~@6 f#3@2, c#4 e3@2 e3 ~ f#3@2 ~, ~ a3@4 a3@3 ~ a3@4 a3@3, ~@3 c#4@4 ~ d4@3 d4@5",
  C: "~@7 b3, f#4 a3@2 a3@2 b3@2 ~, ~ d4@4 d4@4 d4@4 d4@3, ~@3 f#4@4 g4@4 g4@5",
  D: "~@7 f#4 ~@6 b3@2, f#4 a3@2 a3 ~ b3@2 ~, ~ d4@4 d4@3 ~ d4@4 d4@3, ~@3 f#4@4 ~ g4@3 g4@5",
  E: "[~@7 d4 ~@11 c#4@5 [f#3,b3,d#4]@8, d4 f#3@2 f#3 ~ e3@2 e3@2 e3@3 ~@4, ~ a3@4 a3@3 ~ a3@4 a3@4 a3@6 ~@9, ~@3 d4@4 ~ c#4@3 c#4@5 c#4@3 ~@13]/2", // B
  F: "[~@7 d4 ~@6 e3@4 ~@14, d4 f#3@2 f#3 ~ e3@2 ~@9, ~ a3@4 a3@3 ~ a3@4 a3@4 ~@15, ~@3 d4@4 ~ c#4@3 c#4@5 ~@16]/2",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.7)

// chords · distortion guitar · "GUITAR 2"
const distortion_guitar_2 = note("<~@20 A B C D E F G H I J K ~@12 A B C D E F G H I J K ~@24>".pickRestart({
  A: "~@9 b3@7, ~ b3@4 b3@4 ~@7, ~@3 e4@13, ~@7 e3@9", B: "~@9 c#4@7, ~ b3@4 b3@11, ~@3 f#4@13, ~@7 f#3@9",
  C: "~@13 b3@3, e3!2, ~@2 b3@3 b3@8 ~@3, ~@3 e4@8 e4@5",
  D: "~@5 b3@3 ~@3 f#4@5, e3!2, ~@2 b3@3 ~@5 b3@6, ~@3 e4@5 ~@8", E: "~@5 b3@3, e3@7 e3@9, ~ b3@2 b3@2 ~@3, ~@3 e4@13",
  F: "~@3 f#4@5 ~@3 g#4@5, e3 f#3, ~ b3@3 ~ b3@3", G: "~@7 e4, e3@7 e3@9, ~ b3@2 b3@3 b3@2, ~@3 e4@11 ~@2",
  H: "~@6 e4@2 ~@3 f#4@5, e3!2, ~@3 b3@5 ~@2 b3@6", I: "~@3 e4@5 ~@3 d#4@5, a3 g#3, ~ a4@3 ~ g#4@3",
  J: "~@5 e4@3 ~@4 c#5@4, c#3 ~, ~@2 g#3@6 ~ f#3@7, ~@3 d#4@5 ~@2 f#4@6", K: "c#4 [b3,d#4,f#4]",
})).s("gm_distortion_guitar").gain(0.15).pan(0.6)

// other · alto sax · "SAX"
const alto_sax = note("<A@4 ~@8 B@2 C@2 D@2 ~@9 E F@2 ~ G H I@2 B@2 C@2 D@2 ~@9 E F@2 ~@25>".pickRestart({
  A: "[~@15 a4@10 ~ d4 d4@3 e4 e4@2 f#4@9 g4 f#4 d4@3 d4@3 e4 d4@2 a3 a3@5 ~@5, ~@33 f4 ~@30]/4",
  B: "[~@11 a4 ~ a4 d4 e4@7 ~@10]/2", C: "[~@10 a4 ~ a4@2 d4 e4@6 ~@11]/2", D: "[~@9 b4@3 b4@2 d4 e4@7 ~@10]/2",
  E: "~@12 [d4,e4] [f#4,a4] [b4,d5] [e5,f#5]", F: "[a5@6 b5@4 c6 c6@3 e5 d#5@2 g#4@9 ~@6]/2",
  G: "~@7 f#4 e4 e4@2 g4 f#4 f#4@2 a4", H: "a4 g4 g4@6 ~ b4 d5@2 e5 d5 [e5,f#5] g5, ~@10 a4 ~@5",
  I: "[a5@3 ~ d5@3 e5@4 a4@4 d5@6 ~ e4@4 a3@3 a3@3, f#5 ~@31]/2",
})).s("gm_alto_sax").gain(0.28).pan(0.4)

// chords · pad warm · "PAD"
const pad_warm = note("<A@4 B@2 C@6 B@2 C@6 D@8 E@3 A@4 B@2 C@6 D@8 E@3 B@2 C@6 B@2 C@6 B@2 F@5 ~>".pickRestart({
  A: "[f#4 g4, d4]/2", B: "[[c#4,e4] [d4,f#4] [c#4,e4] [d4,f#4], a3]/2",
  C: "[[c#4,e4] [d4,f#4] [c#4,e4] d4 a3 [b3,g4] [a3,f#4] [b3,g4] ~@3 d#4, a3@4 d4@5 c#4@2 ~, ~@3 f#4@2 ~@3 [a3,e4]@2 [f#3,b3]@2]/6", // C#m D C#m Em D Em A5 B5
  D: "[b3@2 ~@2 a4@2 a3 d#4 ~@4 a4@2 a3 [b3,d#4], e4@3 f#4 e4@3 f#4, g#4 ~ g#4 ~, ~@2 c#4@5 b3@3 c#4@5 ~]/8", // B
  E: "[[a3,d4]@4 [c4,d#4]@4 e4@4 a#3@4 ~@3 b3@5, ~ g#4@2 f#4@3, ~@8 c#4@11 ~@5, ~@2 d#4]/3", // D5 Cm
  F: "[[c#4,e4]@8 [d4,f#4]@8 [c#4,e4]@8 d4@8 a3@9 [b3,g4]@11 [a3,f#4]@23 ~@5, a3@32 d4@43 ~@5, ~@24 f#4@17 ~@39]/5", // C#m D C#m Em D
})).s("gm_pad_warm").gain(0.12)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@4 A@3 B@2 C A@3 B@2 ~ B A@2 ~ B@2 C A B A ~ A@3 ~@5 A B@2 ~ B@2 A ~ B@2 C A B A@5 ~ A@3 B@2 C A ~ A B@2 ~ B@2 A ~
  A@3 B ~@4
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@7 x ~@7 x", C: "~@15 x",
})).gain(0.27)

// drums · rim
const rim = s("rim").struct("<~@4 A B A@5 C A@7 ~@16 A@7 ~@12 A B A@5 D A@7 ~ A B A@2 ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@4 x ~", C: "~@2 x ~@4 x", D: "~ x ~@2",
})).gain(0.53)

// drums · snare
const snare = s("sd").struct("<~@19 A B@3 C B C B D B@2 ~@12 A B@3 C B C B D B@2 ~@25>".pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x!2 ~@2", D: "~@4 x ~@7 x!3 ~",
})).gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@19 [~@7 x] ~@22 [~@7 x] ~@35>").gain(0.6)

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

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

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

// drums · open hat
const open_hat = s("oh").struct("<~@10 A B ~@6 A ~@4 C ~@17 A ~@4 C ~@13 A ~@7 A ~@9>".pickRestart({
  A: "~@7 x", B: "~ x", C: "~@3 x",
})).gain(0.53)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@12 A ~ A ~ A ~ A ~ A@10 ~@5 A ~ A ~ A ~ A ~ A@10 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5
>`.pickRestart({
  A: "~@3 x",
// … 30 more lines

More by Mina