Strudelify

Chi non lavora non fa l'amore

Celentano

KeyB majorTempo124 bpm
0:00/0:00
// Chi non lavora non fa l'amore — Celentano
// 124 bpm, 2/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 synth choir (copy of ch 13 choir aahs)
// note: Full arrangement: all 181 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/2)

// 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 · piano
const piano = note(`<
  ~@39 A B ~@2 A C@2 ~@3 D E F G@2 H ~@3 I ~ J K ~@3 L M@3 N@4 O@5 P@4 M@3 N@4 Q@5 R@4 ~@2 S@3 ~@6 T U@2 ~@2 V U@2 W U@2
  I ~ J K ~ X Y Z ~ AA AB Z ~ AA AB AC AD AE ~ AE ~ AF ~ M@3 N@4 O@5 AG@4 M@3 N@4 AH@7 AI@2 AJ@6
>`.pickRestart({
  A: "~@11 [d4,b4] ~@2 [e4,b4] ~", B: "~@2 e4@3 f4@2 ~ d4@3 ~@5, ~@2 b4@9 ~@5, ~@7 e4@2 ~@7",
  C: "[~@2 e4@3 f4@2 ~ d4@3 ~ e4@3 ~@3 d4@3 ~@11, ~@2 b4@9 ~ b4@9 ~@11, ~@7 e4@2 ~@7 f4@2 ~@14, ~@17 e4@2 ~@13]/2",
  D: "~@2 [b2,b3,d4,f#4,b4] ~", E: "~ [b3,d4,f#4,b4]@4 ~@3 [b2,b3,d4,f#4,b4]@4 ~@4, b2 ~@3", F: "~@13 d6 ~@2",
  G: "[[b5,e6]@3 ~@2 [b5,f6]@6 ~@2 d6 ~ [b5,e6]@3 ~@3 [b5,f6]@6 ~@2 [b5,d6] ~@2]/2", H: "[b5,e6]@2 ~@3 [b5,f6]@4 ~@7",
  I: "~@8 [f#4,b4,d5]@3 ~@2 [f#4,b4,d5]@3", J: "~@5 [d4,d5,f#5,b5]@3 ~@8", K: "~@5 [a3,a4,e5,a5]@3 ~@8",
  L: "~@2 [b4,f#5] ~@2 [b4,f#5,b5] ~@2 [b4,f#5,b5] ~@2 [b4,f#5,b5] ~ [b4,f#5,b5] ~@2", // B5
  M: "[b2@7 ~@9 b3@4 ~ b3@3 ~@8 [b3,d#4,f#4]@16, [d#4,f#4]@19 ~@2 [d#4,f#4]@9 ~@18, b3@11 ~@37, ~@8 b2@14 ~@2 b2@23 ~]/3", // B D#m
  N: "[~@5 [b3,d#4,f#4]@9 ~@2 [d#4,f#4]@17 b3@3 ~ b3@4 ~@7 b3@10 ~@3 b3@3, b2@24 ~@17 b2@14 ~@9, ~@16 b3@14 ~@7 [d#4,f#4]@9 ~@2 f#4@16]/4", // B D#m
  O: "[~@5 b3@4 ~@15 b2@13 [d#4,f#4]@9 ~@2 [b3,d#4]@10 ~@14 b2@6 ~@2, ~@5 [d#4,f#4]@9 ~@2 [b3,d#4,f#4]@19 ~@2 b3@5 ~@19 [d#4,f#4]@17 ~@2, ~@9 b2@15 ~@23 b2@24 ~@9, ~@61 b3@14 ~@5]/5", // D#m B D#m B D#m
  P: "[[d#4,f#4]@19 ~@21 b2@13 ~@3 b2@8, b2@21 ~@3 b2@15 ~@14 b3@5 ~@6, b3@14 ~@7 [b3,d#4,f#4]@9 ~@2 [b3,d#4,f#4]@18 ~@3 [d#4,f#4]@8 ~@3]/4", // D#m B D#m
  Q: "[~@5 b3@4 ~@15 b2@13 [d#4,f#4]@9 ~@2 [b3,d#4]@10 ~@14 b2@6 ~@2, ~@5 [d#4,f#4]@9 ~@2 [b3,d#4,f#4]@19 ~@2 b3@5 ~@19 [d#4,f#4]@18 ~, ~@9 b2@15 ~@23 b2@24 ~@9, ~@61 b3@14 ~@5]/5", // D#m B D#m B D#m
  R: "[[d#4,f#4]@19 ~@21 b2@13 ~@3 b2@8, b2@21 ~@3 b2@15 ~@14 b3@5 ~@6, b3@15 ~@6 [b3,d#4,f#4]@9 ~@2 [b3,d#4,f#4]@18 ~@3 [d#4,f#4]@8 ~@3]/4", // D#m B D#m
  S: "[~@9 [e4,b4]@2 ~ [f4,b4] ~@6 f4@2 ~ d4@2 ~@3 b4@4 ~ e4@2 d4 ~@2 b4@4 ~ e4@2 d4@2 ~@2, ~@15 e4@4 ~@2 e4@2 ~@3 e4@4 ~ f4@2 ~@3 e4@4 ~ f4@2 ~@5, ~@16 b4@5 ~@27]/3", // E5 Fdim
  T: "~@3 [e4,b4]@2 f4 b4 ~ [e4,b4]@4 ~ e4@2 ~, ~@6 f4 ~", // E5
  U: "[~@2 e4@4 ~ e4 d4@2 ~ [e4,b4]@4 f4@2 [d4,e4] ~@14, ~@2 b4@7 ~@23, ~@3 f4 ~@12]/2", // E5 Dsus2
  V: "~@3 [e4,b4]@2 ~ [f4,b4] ~ [e4,b4]@4 f4 e4@2 ~", W: "~@3 [e4,b4]@2 ~ [f4,b4] ~ [e4,b4]@4 ~ e4@2 ~, ~@6 f4 ~",
  X: "~@9 d5@4 [e4,a4,c#5]@3, ~@7 b4@5 ~@4, ~@2 f#4 ~", Y: "[f#4,b4,d5]@2 ~@6 [f#4,b4,d5]@5 [e4,a4,c#5]@3",
  Z: "[f#4,b4,d5]@3 ~@13", AA: "~@8 [f#4,b4,d5]@5 [e4,a4,c#5]@3", AB: "[f#4,b4,d5]@3 ~@5 [f#4,b4,d5]@5 [e4,a4,c#5]@3",
  AC: "[f#4,b4,d5]@3 ~@5 [b2,b3,b4,d5,f#5,b5]@3 ~@5", AD: "[b2,b3,b4,d5,f#5,b5]@3 ~@5 [b2,b3,b4,d5,f#5,b5]@3 ~@5",
  AE: "[b2,b3,b4,f#5,b5]@3 ~@13, d5 ~@15", AF: "~@8 [b2,b3,b4,f#5,b5]@3 ~@5, ~@8 d5 ~@7",
  AG: "[[d#4,f#4]@19 ~@21 b2@13 ~@3 b2@7 ~, b2@21 ~@3 b2@15 ~@14 b3@5 ~@6, b3@14 ~@7 [b3,d#4,f#4]@9 ~@2 [b3,d#4,f#4]@18 ~@3 [d#4,f#4]@8 ~@3]/4", // D#m B D#m
  AH: "[~@5 b3@4 ~@15 b2@13 [d#4,f#4]@9 ~@2 [b3,d#4]@10 ~@14 b2@6 ~@2 [d#4,f#4]@19 ~@5 b2@8, ~@5 [d#4,f#4]@9 ~@2 [b3,d#4,f#4]@19 ~@2 b3@5 ~@19 [d#4,f#4]@18 ~@33, ~@9 b2@15 ~@23 b2@24 ~@8 b2@23 ~@10, ~@61 b3@14 ~@5 b3@15 ~@6 [b3,d#4,f#4]@9 ~@2]/7", // D#m B D#m B D#m B
  AI: "[~@8 b2@13 ~@3 b2@7 ~, [b3,d#4,f#4]@18 ~@3 [d#4,f#4]@8 ~@3, ~@21 b3@5 ~@6]/2", AJ: "[[b2,b3,d#4,f#4]@95 ~]/6",
})).s("gm_piano").gain(0.38)

// chords · piano · soft notes
const piano_soft = note(`<
  A@4 ~@47 B@2 ~@12 C ~ D ~@2 E@2 F G ~ H ~ I ~ J ~@3 D ~@2 E@2 F G ~ H ~ I ~ J ~@13 K ~@4 K ~@2 K ~@26 D ~@2 E@2 F G ~
  H ~ I ~ J ~@3 D ~@2 E@2 F L ~ H ~ I ~ J ~@8
>`.pickRestart({
  A: "[~@17 f#4@31 ~@16, ~@14 b3@35 ~@15, ~@16 d#4@33 ~@15]/4", B: "~@13 b5 ~@2", C: "~@2 b5 ~@13", D: "~@6 b3 ~",
  E: "[~@8 b2@15 ~@5 b3@2 ~@2]/2", F: "~@8 b2@7 ~", G: "b2@3 ~@5", H: "~@8 b2@5 b3 ~@2", I: "~@13 b3 ~@2",
  J: "b3@3 ~@13", K: "~@7 d4", L: "b2@7 ~@9",
})).s("gm_piano").gain(0.19)

// bass · electric bass pick
const bass = note(`<
  ~@21 A B C D E B E D A B C D C B E F G@2 H@4 G@4 H@2 G@2 H@2 G@6 H@4 G@2 I A B C D E J E F A B C D E J E F A B C D E J
  E F A B C D E B E F G@2 H@2 G@2 H@2 G@2 H@2 G@6 H@2 G@8 H@2 G@6 H@2 K L ~ M ~ N ~ A B C D C B E F A B C D E J E F A B
  C D E B E D A B C D C J E F O@5 ~
>`.pickRestart({
  A: "b1@10 ~@3 b1@3", B: "f#1@3 ~@2 f#1 ~@2 f#1@5 a1@2 ~", C: "b1@11 ~@2 b1@3", D: "f#1@3 ~@2 f#1@8 a1@2 ~",
  E: "b1@12 ~ b1@3", F: "f#1@3 ~@2 f#1@8 ~ a1@2", G: "[b1@8 f#2@3 ~@2 a2@8 b2@2 ~ a2@5 f#2@2 ~]/2",
  H: "[b1@8 f#2@3 ~@2 a2@8 b2@3 a2@5 f#2@2 ~]/2", I: "b1@5 ~@3 b1@5 ~@3", J: "f#1@2 ~@3 f#1 ~@2 f#1@5 a1@2 ~",
  K: "b1 ~ b1 ~", L: "b1 ~@3", M: "b1@3 ~@13", N: "~@2 b1 ~", O: "[b1@79 ~]/5",
})).s("gm_electric_bass_pick").gain(0.56)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@21 A B A B C D A B A B A B C D A B E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 G H B A B C D A B A B A B
  C D A B A B A B C D A B A B A B C D A B E@2 I@2 E@2 F@2 E@2 F@2 E@2 I@2 E@2 I@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 F@2 E@2 J
  K ~ K ~ L ~ H B A B C D A B H B A B C D A B A B A B C D A B H B A B C D A B M@5 ~
>`.pickRestart({
  A: "b2@11 ~@2 b2@3", B: "f#2@3 ~@2 f#2@8 a2@2 ~", C: "b2@11 ~@2 b2@2 ~", D: "f#2@2 ~@3 f#2@8 a2@2 ~",
  E: "[b2@8 f#3@3 ~@2 a3@8 b3@3 a3 b3 ~ a3@2 f#3@3]/2", F: "[b2@8 f#3@2 ~@3 a3@8 b3@3 a3 b3 ~ a3@2 f#3@2 ~]/2",
  G: "b2 ~ b2 ~", H: "b2@10 ~@3 b2@3", I: "[b2@8 f#3@2 ~@3 a3@8 b3@2 ~ a3 b3 ~ a3@2 f#3@2 ~]/2", J: "b2@3 ~@5 b2@4 ~@4",
  K: "b2 ~@3", L: "~@8 b2@5 ~@3", M: "[b2@13 ~@3]/5",
})).s("gm_electric_guitar_clean").gain(0.48)

// other · baritone sax
const baritone_sax = note(`<
  ~@37 A@4 B C B C B C B C D E B C B C B C B F B C G C B C ~@35 B C B C B C B C B C B C B C B C B C B C H ~ C I ~ J K L
  ~ J K M ~ J K N O L ~ L ~ E ~ B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C ~@6
>`.pickRestart({
  A: "[b2@59 ~@5]/4", B: "~@13 b2@2 ~", C: "~@5 b2@2 ~@9", D: "~@8 b2@2 ~@3 b2@2 ~", E: "~@4 b2 ~@3",
  F: "~@5 b2@2 ~ b2@4 ~ b2@2 ~", G: "~@5 a2@2 ~@6 b2@2 ~", H: "~@8 b2@4 ~ b2@2 ~", I: "~@5 a2@2 ~@9",
  J: "~@8 b2@5 a2@3", K: "b2@3 ~@5 b2@5 a2@3", L: "b2 ~@7", M: "b2@3 ~@13", N: "b2@3 ~@5 b2@2 ~@6",
  O: "b2@2 ~@6 b2@3 ~@5",
})).s("gm_baritone_sax").gain(0.48).pan(0.9)

// other · baritone sax · soft notes
const baritone_sax_soft = note("<~@41 A@24 ~@35 A@20 ~@23 A@32 ~@6>".pickRestart({
  A: "[~@15 b2@4 ~@13]/2",
})).s("gm_baritone_sax").gain(0.24).pan(0.9)

// other · trumpet
const trumpet = note("<~@37 A@4 ~@55 B C D ~@6 E@2 F ~@3 G H ~@12 I J K ~ I J K ~ I L M N O ~ O ~ P ~@39>".pickRestart({
  A: "[[f#4,b4]@55 ~@9]/4", B: "~@11 [b4,d#5,g#5] ~@2 [b4,d#5,g#5] ~",
  C: "[d#5,g#5] ~@2 [b4,d#5,g#5] ~@2 [b4,d#5,g#5] ~ [b4,d#5,g#5] ~@2 [b4,d#5,g#5] ~ [b4,d#5,g#5] ~@2, b4 ~@7", // G#5 G#m
  D: "[b4,d#5,g#5] ~@3", E: "[~@15 d5@6 ~@3 b4@3 ~@2 g#4@2 ~]/2", F: "b4@2 b4@2 ~ g#4@3 ~@8",
  G: "~@3 d5@2 b4@2 ~ f#5@2 ~ f#5@3 ~@2", H: "~@3 d5@2 b4@2 ~ f#5@2 ~ f#5@2 ~@3", I: "~@8 b4@5 a4@2 ~",
  J: "b4@3 ~@5 b4@5 a4@3", K: "b4@3 ~@13", L: "b4@3 ~@5 b4@5 a4@2 ~", M: "b4@3 ~@5 f#5@3 ~@5", N: "f#5@3 ~@5 f#5@3 ~@5",
  O: "f#5@3 ~@13", P: "~@8 f#5@3 ~@5",
})).s("gm_trumpet").gain(0.42)

// chords · bagpipe
const bagpipe = note(`<
  ~@37 A@4 B@2 C@2 D@2 C@2 E F C@2 B@2 C@2 G@2 H@2 I@2 C@2 ~@31 J K L ~ B@2 C@2 B@2 C@2 B@2 M@2 D@2 C@2 B@2 C@2 N ~ O P
  ~ Q R S ~ Q R S ~ Q R T@2 U ~ U ~ V ~ W@2 X@2 W@2 X@2 W@2 X@2 W@2 X@2 W@2 Y@2 W@2 X@2 W@2 X@2 W@2 X@2 ~@6
>`.pickRestart({
  A: "[[d5,b5]@15 ~]/4", B: "[~@14 d6@6 ~ [f#5,d6]@2 ~@9, ~@13 f#5@6 ~@13]/2",
  C: "[~@13 [f#5,d6]@6 ~@2 d6@2 ~@9, ~@10 f#5 ~@5]/2", D: "[~@13 [f#5,d6]@6 ~@2 [f#5,d6]@2 ~@9]/2",
  E: "~@4 [f#5,d6,f#6] ~@3", F: "[f#5,d6,f#6] ~@3 [f#5,d6,f#6] ~@3",
  G: "[~@14 d6@6 ~ [f#5,d6]@2 ~ [b5,f#6]@4 ~ [b5,f#6]@3, ~@13 f#5@6 ~@13]/2", // D B5
  H: "[~@13 [f#5,d6]@6 ~@2 [d6,f#6,b6]@2 ~@9, ~@10 f#5 ~@5]/2", // D Bm
  I: "[~@5 [a5,e6,a6]@2 ~@7 d6@6 ~ [f#5,d6]@2 ~@9, ~@13 f#5@6 ~@13]/2", J: "~@11 [b5,d#6,g#6] ~@2 [b5,d#6,g#6] ~",
  K: "[d#6,g#6] ~@2 [b5,d#6,g#6] ~@2 [b5,d#6,g#6] ~ [b5,d#6,g#6] ~@2 [b5,d#6,g#6] ~ [b5,d#6,g#6] ~@2, b5 ~@7", // G#5 G#m
  L: "[b5,d#6,g#6] ~@3", M: "[~@13 [f#5,d6]@6 ~ [f#5,d6]@2 ~@10]/2", N: "~@8 [b5,f#6]@4 ~ [b5,f#6]@3",
  O: "~@5 [f#5,d6,f#6,b6]@2 ~@9", P: "~@5 [a5,e6,a6]@2 ~@9", Q: "~@8 [f#5,d6]@5 [e5,c#6]@3",
  R: "[f#5,d6]@3 ~@5 [f#5,d6]@5 [e5,c#6]@3", S: "[f#5,d6]@3 ~@13", T: "[f#5,d6]@3 ~@5 [f#5,d6]@3 ~@5",
  U: "[f#5,d6,b6]@3 ~@13", V: "~@8 [f#5,d6,b6]@3 ~@5", W: "[~@14 d#6@6 ~ [f#5,d#6]@2 ~@9, ~@13 f#5@6 ~@13]/2",
  X: "[~@13 [f#5,d#6]@6 ~@2 d#6@2 ~@9, ~@10 f#5 ~@5]/2", Y: "[~@13 [f#5,d#6]@6 ~ [f#5,d#6]@2 ~@10]/2",
})).s("gm_bagpipe").gain(0.46)

// chords · tenor sax
const tenor_sax = note(`<
  ~@41 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@35 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2
  B@2 A@2 B@2 ~@7 C@2 D@2 E@2 D@2 E@2 F@2 E@2 D@2 E@2 D@2 E@2 D@2 C@2 D@2 E@2 D@2 ~@6
>`.pickRestart({
  A: "[~@13 d4@6 ~@2 [f#3,b3,d4]@2 ~@9, ~@13 b3@2 ~@17, ~@13 f#3 ~@18]/2", // Bm
  B: "[~@13 d4@7 ~ [f#3,b3,d4]@2 ~@9, ~@13 b3@2 ~@17, ~@13 f#3 ~@18]/2", // Bm
  C: "[~@13 d#4@6 ~@2 [b3,d#4]@2 ~@9, ~@13 b3@2 ~@17, ~@13 f#3 ~@7 f#3 ~@10]/2", // B
  D: "[~@13 d#4@7 ~ [f#3,b3,d#4]@2 ~@9, ~@13 b3@2 ~@17, ~@13 f#3 ~@18]/2", // B
  E: "[~@13 d#4@6 ~@2 [f#3,b3,d#4]@2 ~@9, ~@13 b3@2 ~@17, ~@13 f#3 ~@18]/2", // B
  F: "[~@13 d#4@7 ~ [b3,d#4]@2 ~@9, ~@13 b3@2 ~@17, ~@13 f#3 ~@7 f#3 ~@10]/2", // B
})).s("gm_tenor_sax").gain(0.36).pan(0.3)

// chords · tenor sax · soft notes
const tenor_sax_soft = note(`<
  ~@42 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@36 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@6
>`.pickRestart({
  A: "[f#3,b3] ~@3", // B5
})).s("gm_tenor_sax").gain(0.18).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@65 A@32 ~@45 A@8 B@8 C@8 B@8 D@6 ~>".pickRestart({
  A: "[~@15 [f#3,b3,d#4]@63 ~ [f#3,b3,d#4]@49]/8", // B
  B: "[~@16 d#6@15 c#6@9 b5@7 c#6@5 ~ b5@24 ~@2 b5@16 g#5@8 b5@8 g#5@8 f#5@9, ~@15 [b4,d#5]@62 ~@2 [b4,d#5]@49]/8", // B
  C: "[~@32 c#6@8 b5@7 c#6@5 ~ b5@25 ~@2 b5@15 g#5@8 ~ f#5@8 g#5@2 f#5@3 d#5@11, ~@15 f#4@113, ~@15 d#6@17 ~@96, ~ b4@7]/8",
  D: "[~@15 [f#3,b3,d#4]@79 ~@2]/6", // B
})).s("gm_string_ensemble_1").gain(0.28)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@21 A ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@4 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~
  A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~@2 A@2 ~ A ~@3 A@3 ~ A@3 ~@8 A ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~@2 A ~@6
>`.pickRestart({
  A: "~@13 x ~@2",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  ~@21 A@29 B A@7 C A D@2 A@3 ~ A@54 C A D@2 A@11 E B F ~ F ~ A ~ A@30 D F ~@6
>`.pickRestart({
  A: "~ x", B: "x!2", C: "~@8 x ~@4 x ~@2", D: "~@5 x ~@10", E: "x ~@2 x ~ x ~@2 x ~@7", F: "x",
})).gain(0.72)

// drums · clap
const clap = s("cp").struct("<A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@160>".pickRestart({
  A: "~ x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@65 [~@13 x ~@2] ~@108 [~ x] ~@6>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@22 A@28 ~ A@15 ~ A@15 ~ A@53 ~@8 A@15 ~ A@15 ~@6>".pickRestart({
  A: "x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@65 [~@11 x ~@4] ~@108 [~@5 x ~@10] ~@6>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@21 A@28 ~@2 A@7 ~ A@6 ~ A@54 ~ A ~@2 A@11 ~@8 A@32 ~@6>".pickRestart({
  A: "~ x",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A ~@27 B C ~@7 D ~ E@2 ~@4 A ~@15 A ~@37 D ~ E@2 ~@11 B C A ~ A ~ B ~ A ~@15 A ~@15 A ~@5
>`.pickRestart({
  A: "x", B: "~ x", C: "x!2", D: "~@8 x ~@4 x ~@2", E: "~@5 x ~@10",
// … 9 more lines

More by Celentano