Strudelify

Il mio cuore fa ciock

Carboni

KeyF majorTempo100 bpm
0:00/0:00
// Il mio cuore fa ciock — Carboni
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 115 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · acoustic guitar steel · "STEEL GT"
const acoustic_guitar_steel = note(`<
  ~@31 A@2 B C D@2 E@2 F ~@31 A@2 B C D@2 E@2 G@2 B C D@2 E@2 G@2 B C D@2 E@2 G@2 B C D@2 E@2 H@2 B C D@2 E@2 I ~@3
>`.pickRestart({
  A: "[~@25 d4@5 ~@3 f4@3 bb3@6 bb3@3 ~@3, ~@23 a4@14 ~@11, ~@8 f4@3 ~ f4@4, ~@10 d4@2 d4@3 ~]/2",
  B: "c4@6 c4@3 c4@3 c4@3 c4@3 [c4,e4]@5 ~, g4 ~, e4@3 ~ [e4,g4]@2 ~@2", // C Em
  C: "bb3@2 bb3 f4 [bb3,d4] bb3 [bb3,d4,f4]@2, d4 ~, f4@3 ~ f4@2 ~@2", // Bb
  D: "[a3@2 ~ c4 ~@4 d4@2 d4@2 b3!3 [b3,g4], f4@6 ~@5 a4@7 ~@6, c4@9 ~@14 f4@13 [d4,g4]@9 ~@3, ~ a3 [a3,c4,f4]@2 ~@4]/2", // Em G5 F
  E: "[c4@2 ~@2 c4 ~ c4 d4@3 ~ bb3!3 d4@2, g4@4 g4@3 ~@3 d4@2 [d4,f4]@2 ~@2, e4@3 e4@2 e4@2 f4@5 ~@4, ~@2 c4@2 ~@3 bb3@4 ~@5]/2", // Dm
  F: "[a3,c4,f4]@2 ~@2 f4 ~@2 [a3,f4], ~ f4 c4!2, ~@3 a3@2 [a3,f4]@2 ~", // F Dm
  G: "[[a3,c4,f4]@6 ~@6 f4@3 ~@3 c4@3 [a3,f4]@2 ~@2 d4@5 ~@3 f4@3 bb3@6 bb3@3 ~@3, ~@6 f4@6 c4@6 ~@5 a4@14 ~@11, ~@3 a3@2 [a3,f4]@2 ~ f4@3 ~ f4@4, ~@10 d4@2 d4@3 ~]/2", // F Dm
  H: "[[a3,c4,f4]@6 ~@6 f4@3 ~@6 f4@2 ~@2 d4@2 ~@6 f4@3 bb3@6 bb3@3 ~@3, ~@2 f4@2 c4@2 c4@2 f4 ~ d4@2 f4@4, ~@9 a3@6 [a3,f4]@6 a3@4 ~@11 d4@9 ~@3, ~@23 a4@4 ~@21]/2", // F Dm
  I: "[a3,c4,f4]@4 ~@2 f4 ~@2 a3 ~@2 [c4,f4]@2 ~ [a3,f4] ~@2 c4@2 ~ [a3,f4]@2 ~", // F F5 Dm
})).s("gm_acoustic_guitar_steel").gain(0.34)

// chords · acoustic guitar steel · "STEEL GT" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@32 A B C ~ D E F G ~@32 A B C ~ D E F G A B C ~ D E F G A B C ~ D E F G A B C ~ D E F G A B C ~ D E F H ~@3
>`.pickRestart({
  A: "~@7 [bb3,d4]", B: "~@9 e4@3 ~@6 g4@5 ~", C: "~@3 bb3 ~ d4 ~@2", D: "~@7 d4", E: "~@5 c4 ~@2", F: "~@3 [bb3,f4]",
  G: "~ c4 ~@2, ~@2 a3 ~@5", H: "~@6 [a3,c4] ~@17",
})).s("gm_acoustic_guitar_steel").gain(0.2)

// bass · electric bass finger · "BASSO"
const bass = note(`<
  ~@16 A B C D E F G H I J K L M N O@2 P Q G R P S@2 T U V W X Y Z AA AB A B C D E F G H A B C D AC F G H I J K L M N
  O@2 P Q G R P S@2 T P Q G R P S@2 T P Q G R P S@2 T P Q G R P S@2 T P Q G R P S@2 AD@3 ~
>`.pickRestart({
  A: "d1@5 e1 f1 a1", B: "g1@23 ~", C: "d1", D: "g1@17 ~ g1@6", E: "c2 bb1", F: "a1@3 ~", G: "bb1", H: "g1@6 f1 g1",
  I: "a1@23 ~", J: "bb1@20 ~ bb1@3", K: "a1@20 ~ a1@3", L: "d2 d1", M: "eb1@20 ~ eb1@3", N: "eb2@12 eb1@6 eb2@5 ~",
  O: "[d1@21 c1@23 ~@4]/2", P: "d1 g1", Q: "c2@20 ~ f1@3", R: "f1@20 ~ f1@3", S: "[c2@6 ~ bb1@9]/2", T: "f1",
  U: "d1@3 a1", V: "bb1@8 ~ bb1@2 ~ bb1@8 ~ c2@3", W: "d2@3 d1@3 a1@2", X: "g1@8 ~ g1@2 ~ g1@5 ~ g1@6",
  Y: "c1@3 c2@3 bb1@2", Z: "a1@8 ~ a1@2 ~ a1@5 ~ a1@6", AA: "bb1@14 ~ bb1@5 a1@4", AB: "g1@5 ~", AC: "c2",
  AD: "[f1@20 ~ f1@51]/3",
})).s("gm_electric_bass_finger").gain(0.53)

// chords · string ensemble 2 · "ARCHI"
const string_ensemble_2 = note("<~@24 A@3 B C@8 D@4 E@2 F@6 ~@15 G@4 B H@8 I@8 J@8 K@8 L@8 M@6 ~>".pickRestart({
  A: "[[a3,c4,e4]@23 [bb3,d4,f4]@24 [a3,c4,e4,g4]@24 [a3,c4,e4]]/3", B: "~@11 [a3,d4,f4]@12 [bb3,eb4,g4]",
  C: "[~@11 [bb3,f4,a4]@12 [bb3,eb4,g4,bb4]@24 [d4,f4,a4]@21 [c4,e4,g4]@24 ~@3 a3@12 ~ bb3@11 [c4,e4]@24 d4@24 [a3,c4]@23 ~ [a3,d4,f4], ~@95 d4@24 ~@24 bb3@23 ~@26, ~@95 f4@20 ~@4 g4@20 ~@4 f4@47 ~@2]/8", // Bbmaj7 Eb Dm C Am Dm
  D: "[~@11 b3@12 [c4,e4]@21 ~ bb4@25 ~ a4@24 ~, ~@11 g3@32 ~@2 [f4,c5]@51]/4", E: "[a3@24 bb3@23 ~, [d4,f4]]/2",
  F: "[[c4,e4]@8 f4@15 bb3@24 ~@24 a3@24 f4@24 ~ g3@24, a3@23 g3@48 ~@73, ~@8 d4@39 [c4,e4]@47 ~ [bb3,d4]@48 ~]/6", // C Bb
  G: "[~@23 [a3,c4,e4]@24 [bb3,d4,f4]@24 [a3,c4,e4,g4]@24 [a3,c4,e4]]/4", // Am Bb Am7 Am
  H: "[~@11 [bb3,f4,a4]@12 [bb3,eb4,g4,bb4]@24 [d4,f4,a4]@21 [c4,e4,g4]@24 ~@3 a3@12 ~ bb3@11 [c4,e4]@24 d4@24 [a3,c4]@22 ~@2 [a3,d4,f4], ~@95 d4@24 ~@24 bb3@23 ~@26, ~@95 f4@20 ~@4 g4@20 ~@4 f4@47 ~@2]/8", // Bbmaj7 Eb Dm C Am Dm
  I: "[~@11 b3@12 [c4,e4]@21 ~ bb4@26 a4@24 a3@12 ~ bb3@11 [c4,e4]@24 d4@24 [a3,c4]@22 ~@2 [a3,d4,f4], ~@11 g3@32 ~@2 c5@50 f4@20 ~@4 g4@20 ~@4 f4@47 ~@2, ~@45 f4@49 ~ d4@24 ~@24 bb3@23 ~@26]/8", // C Am Dm
  J: "[~@11 b3@12 [c4,e4]@21 ~ bb4@25 ~ a4@24 a3@12 ~ bb3@11 [c4,e4]@24 d4@24 [a3,c4]@22 ~@2 [a3,d4,f4], ~@11 g3@32 ~@2 c5@50 f4@20 ~@4 g4@20 ~@4 f4@47 ~@2, ~@45 f4@49 ~ d4@24 ~@24 bb3@23 ~@26]/8", // C Am Dm
  K: "[~@11 b3@11 ~ [c4,e4]@21 ~ bb4@25 ~ a4@24 a3@12 ~ bb3@11 [c4,e4]@24 d4@24 [a3,c4]@22 ~@2 [a3,d4,f4], ~@11 g3@32 ~@2 c5@50 f4@20 ~@4 g4@20 ~@4 f4@47 ~@2, ~@45 f4@48 ~@2 d4@24 ~@24 bb3@23 ~@26]/8", // C Am Dm
  L: "[~@11 b3@12 [c4,e4]@21 ~ bb4@24 ~@2 a4@24 a3@12 ~ bb3@11 [c4,e4]@24 d4@24 [a3,c4]@21 ~@3 [a3,d4,f4], ~@11 g3@32 ~@2 c5@50 f4@20 ~@4 g4@20 ~@4 f4@47 ~@2, ~@45 f4@49 ~ d4@24 ~@24 bb3@23 ~@26]/8", // C Am Dm
  M: "[~@11 b3@12 [c4,e4]@21 bb4@24 ~@3 a4@21 ~ [c4,a4,f5]@51, ~@11 g3@32 ~ [f4,c5]@47 ~@53]/6", // C F F5
})).s("gm_string_ensemble_2").gain(0.34).pan(0.6)

// chords · pad warm · "TAPPETO"
const pad_warm = note("<A@5 B@8 C@2 D@8 E@4 F@5 G@4 H@6 I@5 J@6 K@8 L@6 M@5 N@8 O@8 N@16 P@8 ~@3>".pickRestart({
  A: "[a3@23 bb3@24 a3@24 bb3@24 [c4,e4]@24 a3, d4@4 ~, f3@71 g3@48 ~]/5", // C
  B: "[~@23 f3@24 g3@24 a3@24 bb3@24 a3@24 bb3@24 [c4,e4]@24 a3, ~@23 d4@144 ~@25, ~@23 bb3@48 f3@72 g3@48 ~]/8", // C
  C: "[~@23 [f3,bb3,d4]@24 g3]/2", // Bb
  D: "[~@23 [f3,a3]@24 [g3,bb3]@24 [f3,a3]@24 bb3@24 ~@24 a3@24 [f3,bb3,d4]@24 g3, ~@23 d4@96 [c4,e4]@48 ~@25, ~@95 g3@48 ~@49]/8", // F Gm F Bb C
  E: "[~@23 [a3,c4,e4]@24 [bb3,d4,f4]@24 [a3,c4,e4]@24 g3]/4", // Am Bb Am
  F: "[~@11 [a3,d4,f4]@12 [eb4,g4]@12 [f4,a4]@12 [g4,bb4]@24 [d4,f4,a4]@18 ~@3 [c4,e4,g4,a4]@20 ~@7 [a3,d4,f4], ~@23 bb3@48 ~@49]/5", // Dm Eb F Gm Dm Am7 Dm
  G: "[~@11 bb3@12 [c4,e4]@24 [bb3,d4]@24 [a3,c4]@24 [d4,f4], ~@11 g3@36 f3@48 ~]/4", // C Bb Am Dm
  H: "[~@11 b3@12 [c4,e4]@21 [bb3,d4]@27 [a3,c4]@24 a3@24 [bb3,g4]@24 [a3,c4,e4], ~@11 g3@33 f3@51 [d4,f4]@47 ~@2]/6", // C Bb Am Eb Am Dm
  I: "[~@8 f4@15 bb3@24 ~@24 a3@23 ~ [bb3,d4,f4]@24 g3, ~@8 d4@39 [c4,e4]@48 ~@25, ~@23 g3@48 ~@49]/5", // Bb C
  J: "[~@23 [f3,a3]@24 [g3,bb3]@24 [f3,a3]@24 bb3@24 [c4,e4]@24 a3, ~@23 d4@96 ~@25, ~@95 g3@48 ~]/6", // F Gm F C
  K: "[~@23 f3@24 g3@24 [f3,a3]@24 [g3,bb3]@24 [f3,a3]@24 bb3@24 [c4,e4]@24 a3, ~@23 d4@144 ~@25, ~@23 bb3@48 ~@72 g3@48 ~]/8", // F Gm F C
  L: "[~@23 f3@24 g3@24 [a3,c4,e4]@24 [bb3,d4,f4]@24 [a3,c4,e4]@24 g3, ~@23 [bb3,d4]@48 ~@73]/6", // Am Bb Am Bb
  M: "[~@11 [a3,d4,f4]@12 [eb4,g4]@11 [f4,a4]@13 [g4,bb4]@23 ~ [d4,f4,a4]@18 ~@3 [c4,e4,g4,a4]@20 ~@7 [a3,d4,f4], ~@23 bb3@47 ~@50]/5", // Dm Eb F Gm Dm Am7 Dm
  N: "[~@11 bb3@12 [c4,e4]@24 [bb3,d4]@24 c4@24 f4@12 b3@12 [c4,e4]@21 [bb3,d4]@27 [a3,c4]@24 [d4,f4], ~@11 g3@36 f3@48 d4@24 ~@73, ~@71 a3@36 g3@33 f3@51 ~]/8", // C Bb C Bb Am Dm
  O: "[~@11 bb3@12 [c4,e4]@24 [bb3,d4]@24 c4@24 f4@12 b3@12 [c4,e4]@21 [bb3,d4]@27 [a3,c4]@24 [d4,f4], ~@11 g3@36 f3@48 d4@24 ~@73, ~@71 a3@36 g3@33 f3@50 ~@2]/8", // C Bb C Bb Am Dm
  P: "[~@11 bb3@12 [c4,e4]@24 [bb3,d4]@24 c4@24 f4@12 b3@12 [c4,e4]@21 [bb3,d4]@27 [a3,c4]@21 ~@4, ~@11 g3@36 f3@48 d4@24 ~@73, ~@71 a3@36 g3@33 f3@48 ~@4]/8", // C Bb C Bb Am
})).s("gm_pad_warm").gain(0.25)

// chords · distortion guitar · "DISTORTIO"
const distortion_guitar = note(`<
  ~@30 A@2 B C D E B F@2 E ~@30 A@2 G H D E B I@2 E G H D E B I@2 E G H D E B I@2 E G H D E B I@2 E G H D E B I@2 J@3 ~
>`.pickRestart({
  A: "[[d3,a3]@4 ~@3 [c3,g3]@8 ~]/2", B: "[d3,a3] [g2,d3]", C: "[c3,g3]", D: "[bb2,f3]", E: "[f2,c3]",
  F: "[[c3,g3]@20 ~ [bb2,f3]@27]/2", G: "d3 [g2,d3], a3@7 ~@5", H: "g3@23 ~, c3@7 ~", I: "[[c3,g3]@6 ~ [bb2,f3]@9]/2",
  J: "[[f2,c3]@20 ~ [c3,f3]@51]/3", // F5
})).s("gm_distortion_guitar").gain(0.32).pan(0.4)

// other · electric guitar clean · "CLEAN GT"
const electric_guitar_clean = note(`<
  ~@33 A@2 B@2 ~@11 C@2 D@3 E ~@2 C@2 F@4 ~ G H@2 I@2 ~@5 A@2 B@2 ~@4 A@2 B@2 ~@4 A@2 B@2 ~@4 A@2 B@2 ~@4 A@2 B@2 ~@2
  J@3 ~
>`.pickRestart({
  A: "[f4 g4 c5 f4 g4 c5 g4 f4@5 ~@4]/2", B: "[e4 f4 c5 e4 f4 c5 e4 f4@3 ~@6]/2",
  C: "[a2@3 ~@3 d3 ~@5 d3@2 ~@4 c3 ~@2 d3@6 c3 ~@20]/2",
  D: "[a2@3 ~@3 d3 ~@5 d3 ~@5 c3 ~@2 d3@6 c3 ~@2 g3@3 f3 ~ d3 ~@12 e4@21 ~@3, ~@46 g3@23 ~@3, ~@47 c4@22 ~@3]/3",
  E: "~@12 a2 ~@2 c3 ~@2 d3 ~@2 d3 ~@2",
  F: "[a2@3 ~@3 d3 ~@5 d3 ~@5 c3 ~@2 d3@6 c3 ~@2 g3@3 f3 ~ d3 ~@12 e4@19 ~@5 e4@22 ~@2, ~@46 g3@20 ~@4 a3@25 ~, ~@47 c4@18 ~@6 c4@24 ~]/4",
  G: "~@12 d3@3 c3 ~@8", H: "[~@12 [f4,a4]@11 ~, ~@11 [c4,d4]@12 ~]/2", I: "[~@24 e4@8 ~ [d4,f4]@15, ~@23 c4@9 ~@16]/2",
  J: "[~@7 c4@17, ~@18 f2@53 ~, ~@19 f3@52 ~, ~@20 g3@51 ~]/3",
})).s("gm_electric_guitar_clean").gain(0.31).pan(0.7)

// other · electric guitar clean · "CLEAN GT" · soft notes
const electric_guitar_clean_2 = note("<~@48 A ~ B ~@5 A ~ B ~@4 C ~@2 D@2 ~@47>".pickRestart({
  A: "~ c3 ~@6", B: "~@3 c3@3 ~@3 a2 ~@14", C: "~@3 a2 ~@2 c3 ~@2 a2 ~@14", D: "[~@23 a3@25]/2",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.7)

// other · whistle
const whistle = note("<~@40 A B C D E F G@2 ~@67>".pickRestart({
  A: "d6@3 a6", B: "g6@9 f6@14 ~", C: "e6@3 f6@3 c7@2", D: "bb6@3 a6", E: "g6@3 f6", F: "e6@3 f6", G: "[d6@3 ~]/2",
})).s("gm_whistle").gain(0.27).pan(0.6)

// other · synth drum · "SYNTHDRUM"
const synth_drum = note(`<
  ~@16 A B A B A B C D E A C E C F A ~ A@2 C A C F G E C A@2 H A F E@2 A B A B A B A B A B A B A B A B C A C E C F@2 ~
  A@4 C F I E C@2 F H C F I E A F C E A J G E A@4 C F I E C@2 F H C F I F ~@3
>`.pickRestart({
  A: "g2 ~@20 g2 ~@2", B: "g2 ~@14 g2 ~@8", C: "g2 ~@23", D: "g2 ~@8 g2 ~@5 g2 ~@8", E: "g2 ~@8 g2 ~@14",
  F: "g2 ~@8 g2 ~@11 g2 ~@2", G: "~@3 g2 ~@2 g2 ~@17", H: "g2 ~@5 g2 ~@17", I: "~@3 g2 ~@2 g2 ~@14 g2 ~@2",
  J: "g2 ~@8 g2 ~@5 g2 ~@5 g2 ~@2",
})).s("gm_synth_drum").gain(0.29).pan(0.4)

// chords · piano
const piano = note("<~@25 A@2 ~@9 B@3 C ~@13 D@2 ~@4 E@2 ~@4 F@2 ~@9 B@3 C ~@4 B@3 C ~@4 B@3 C ~@19>".pickRestart({
  A: "[~@6 f5@3 e5@6 f5@3 c5@17 ~@13]/2",
  B: "[~@42 c5@17 ~@13, ~@21 g5@38 ~@13, ~@24 d5@12 d5@23 ~@13, ~@9 c5@5 ~@10, ~@30 g4@29 ~@13]/3",
  C: "~ f5 c6 ~ f5 ~ e5 ~, e5@6 ~@3 e5@5 ~ c6@9", D: "[~@7 a4@8 ~, ~@6 c5@9 ~]/2", E: "[~@18 [c4,a4]@3 e4@16 ~@11]/2",
  F: "[~@6 f6@3 e6@6 f6@3 c6@17 ~@13]/2",
})).s("gm_piano").gain(0.3).pan(0.6)

// chords · piano · soft notes
const piano_soft = note("<~@39 A ~@39 A ~@7 A ~@7 A ~@19>".pickRestart({
  A: "~@7 f5",
})).s("gm_piano").gain(0.12).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@17 A ~ A ~ A ~ A ~ A ~ A ~@87>".pickRestart({
  A: "~ x",
})).gain(0.58)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@24 A@2 B C ~@5 D E ~@14 F B D E@2 ~@3 F G H ~@12 I ~@2 I ~@8 H E ~@10 I ~@2 I ~@8 H E ~@5
>`.pickRestart({
  A: "~ x!3 ~ x ~ x", B: "~@3 x ~ x ~ x", C: "~ x!2 ~@5", D: "~ x ~ x ~@4", E: "~@3 x ~@4", F: "~@3 x ~ x ~@2",
  G: "~ x ~@5 x", H: "~ x ~@6", I: "~@5 x ~@2",
})).gain(0.19)

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

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4
>`.pickRestart({
  A: "~ x",
})).gain(0.58)

// … 24 more lines

More by Carboni