Strudelify

Ciao ragazzi

Celentano

KeyF minorTempo118 bpm
0:00/0:00
// Ciao ragazzi — Celentano
// 118 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 53 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · piano
const piano = note("<~ A@4 B@5 C D E F@7 C D E G@2 H I J K L M N O@4 C D E@2 G@2 O@4 C D E P@2 Q@2>".pickRestart({
  A: "[[ab3,c4]@5 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3@2 ~@4 f3@4 ~@2 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@7 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ eb4@3 ~ [f3,c4]@2, f2@16 ~@2 f2@27 ~ f2@18 ~@2 f2@22 ~@2 [f2,ab3]@6, ~@22 f3@4 ~@20 f3@4 ~@4 [ab3,c4]@10 ~@6 f3@5 ~@21]/4", // Ab Ab5 Ab Ab5 Ab Ab5 Ab F5 …
  B: "[~@6 [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3@2 ~@4 f3@4 ~@2 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@7 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ eb4@3 ~ c4@6 ~@2 [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ eb4@3 ~ [f3,c4]@2, ~@18 f2@27 ~ f2@18 ~@2 f2@22 ~@2 f2@22 ~@2 [f2,ab3]@6, ~@22 f3@4 ~@20 f3@4 ~@4 [ab3,c4]@10 ~@6 f3@5 ~@15 ab3@12 ~@18, ~@47 f3@2 ~@11]/5", // Ab Ab5 Ab Ab5 Ab Ab5 Ab F5 …
  C: "~@6 [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~@5 [ab3,c4,f4]@3 ~ [ab3,c4,eb4]@2, ab2@5 ~@7", // Ab Fm Ab
  D: "~@6 [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@2 ~@4 ab3 ~ [ab3,c4,f4]@3 ~ c4 ~, ab2@5 ~ ab2@5 ~", // Ab Fm
  E: "~@6 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@2 ~@6 [bb3,d4,ab4]@3 ~ [bb3,d4,f4] ~, bb2@10 ~@2 bb2@11 ~", // Bb Bb7 Bb
  F: "[[ab3,c4]@5 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@7 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3@2 ~@4 f3@4 ~@2 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@7 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ eb4@3 ~ c4@6 ~@2 [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ eb4@3 ~ [f3,c4]@2, f2@16 ~@2 f2@27 ~ f2@18 ~@2 f2@27 ~ f2@18 ~@2 f2@22 ~@2 f2@22 ~@2 [f2,ab3]@6, ~@22 f3@4 ~@20 f3@4 ~@20 f3@4 ~@20 f3@4 ~@4 [ab3,c4]@10 ~@6 f3@5 ~@15 ab3@12 ~@18, ~@71 f3@2 ~@11]/7", // Ab Ab5 Ab Ab5 Ab Ab5 Ab Ab5 …
  G: "[[ab3,c4]@5 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [f3,ab3,c4]@2, f2@16 ~@2 f2@27 ~ f2 ~, ~@11 f3@2 ~@11]/2", // Ab Ab5 Ab Ab5 Fm
  H: "~@6 [c4,e4,g4,bb4]@6 ~@6 [c4,e4,g4,bb4]@5 ~", I: "~@6 [c4,f4,ab4]@5 ~@7 [c4,f4,ab4]@5 ~",
  J: "~@6 [b3,d4,f4,g4]@5 ~@7 [b3,d4,f4,g4]@6", K: "~@3 [bb3,c4,e4,g4]@2 ~@4 [bb3,c4,e4,g4]@3",
  L: "~@6 [bb3,c4,e4,g4]@5 ~@7 [bb3,c4,e4,g4]@5 ~", M: "[bb3,c4,g4]@17 ~ [bb3,c4,g4]@5 ~", N: "[f3,ab3,c4,f4] ~@5",
  O: "[~@6 [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3@2 ~@4 f3@4 ~@2 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@7 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ eb4@3 ~ [f3,c4]@2, ~@18 f2@27 ~ f2@18 ~@2 f2@22 ~@2 [f2,ab3]@6, ~@22 f3@4 ~@20 f3@4 ~@4 [ab3,c4]@10 ~@6 f3@5 ~@21]/4", // Ab Ab5 Ab Ab5 Ab Ab5 Ab F5 …
  P: "[[ab3,c4]@5 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,eb4]@3 ~ [ab3,c4]@6 f3 ~ [ab3,c4]@3 ~ [ab3,c4]@6 f3 ~@5 f2 ~, f2@16 ~@2 f2@27 ~@3, ~@11 f3@2 ~@8 [ab3,c4]@3]/2", // Ab Ab5 Ab
  Q: "[[ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5]@2 ~@10 f2@2 f1@3 ~ [f3,ab3,c4]@4 ~@22]/2", // Fm
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A ~@2 B A ~@2 B@2 C D E A ~ A ~@2 B@2 C D E A ~@6 F ~ A ~@2 B C D E@2 A ~ A ~@2 B C D E A ~@3
>`.pickRestart({
  A: "~@4 f3@5 ~ f3 ~@13", B: "~@2 f3 ~@9", C: "~@16 ab3 ~@7, ~@6 ab2@5 ~", D: "~@4 ab3@2 ~@16 ab3 ~",
  E: "~@16 bb3 ~@7", F: "e4@17 ~ e4@5 ~",
})).s("gm_piano").gain(0.2)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A@4 B@5 C@2 D E@2 B@5 C@2 F E@2 G@2 H I@3 J A@4 C@2 K@2 E@2 A@4 L@2 D E@2 M ~
>`.pickRestart({
  A: "[[ab3,c4,f4]@95 ~]/4", B: "[[ab3,c4,f4]@59 ~]/5", C: "[ab3,c4,eb4]/2", D: "[bb3,d4,f4]@23 ~",
  E: "[[ab3,c4,f4]@47 ~]/2", F: "[bb3,d4,f4]", G: "[[g3,bb3,c4,e4]@23 ~ [ab3,f4]@23 ~, ~@23 c4@24 ~]/2",
  H: "[g3,b3,d4,f4]@23 ~", I: "[g3,bb3,c4,e4]/3", J: "[f3,ab3,c4] ~@3", K: "[[bb3,d4,f4]@47 ~]/2",
  L: "[[ab3,c4,eb4]@47 ~]/2", M: "[f3,ab3,c4]@4 ~@7 [f3,ab3,c4]",
})).s("gm_synth_strings_1").gain(0.35)

// bass · electric bass finger
const bass = note("<~ A@4 B@5 C@2 D@8 C@2 E F@2 G H I@2 J K L M@4 C@2 N@2 F@2 O@4 C@2 N P@2 Q ~>".pickRestart({
  A: "[f1@4 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 c1@2]/4",
  B: "[f1@4 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 c1@2]/5",
  C: "[ab1@5 ~ ab1@4 eb1@2 f1@4 eb1@2 f1@4 ab1@6 ab1 ~ ab1@3 ~ eb1@2 f1@4 eb1@2 ab1@3 ~ eb1@2]/2",
  D: "[bb1@5 ~ bb1@4 f1@2 ab1@4 f1@2 ab1@4 f1@6 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1 ~ f1@4 c1@2 eb1@4 c1@2 eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 c1@2]/8",
  E: "bb1@3 bb1@2 f1 bb1@2 f1 ab1@2 f1",
  F: "[f1@4 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@2]/2",
  G: "c2@5 g1 e1@2 c1 e1@2 g1", H: "f1@10 ab1@2 c2@3 ~ ab1@2 f1@4 ab1@2",
  I: "[g1@10 e1@2 g1@3 ~ e1@2 g1@3 ~ c2@11 ~ c2 ~ c1@6 g1@4 bb1@2]/2", J: "c2@10 c2@5 ~ c2@5 ~ g1@2",
  K: "c2 bb1 ab1 g1", L: "f1@4 ~ f1 c1@3 c1@3",
  M: "[f1@4 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1 ~ f1@4 c1@2 eb1@4 c1@2 eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@2]/4",
  N: "bb1@5 ~ bb1@4 f1@2 bb1@4 f1@2 ab1@4 f1@2",
  O: "[f1@4 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@3 ~ f1@6 c1@2 f1@4 c1@2 eb1@4 c1@2 eb1@4 f1@2]/4",
  P: "[f1@4 c1@2 f1@4 c1@2 eb1@4 c1 ~ eb1@3 ~ f1@6 c1@2 f1@4 c1@2 f2@2 eb2@2 c2@2 bb1@2 ab1@2 eb1@2]/2",
  Q: "f2 ~ f2 ~ f2@3 ~@15 f1@2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A@2 B C A@2 B C@2 D@2 E A@4 B C@2 D@2 E A@2 F G H I J K ~ A@2 B C D@2 E@2 A@4 B C D@2 E A@2 L ~
>`.pickRestart({
  A: "[~@6 [c4,f4,ab4]@2 ~@2 [c4,f4,ab4] ~@5 [c4,f4,ab4] ~@5 [c4,f4,ab4]@4 ~@4 [c4,f4,ab4]@2 ~@8 [c4,f4,ab4] ~ [c4,f4,ab4]@3 ~ [c4,f4,ab4]@2]/2", // Fm
  B: "~@6 [c4,f4,ab4]@3 ~@9 [c4,f4,ab4]@2 ~@2 [c4,f4,ab4]@2", // Fm
  C: "~@6 [c4,f4,ab4]@3 ~ [c4,f4,ab4] ~@7 [c4,f4,ab4]@2 ~@2 [c4,f4,ab4]@2", // Fm
  D: "~@6 [c4,eb4,ab4]@3 ~ [c4,eb4,ab4] ~@7 [c4,eb4,ab4] ~@5", // Ab
  E: "~@6 [d4,f4,bb4]@3 ~ [d4,f4,bb4] ~@7 [d4,f4,bb4]@3 ~@3", // Bb
  F: "~@6 [bb3,c4,e4]@3 ~ [bb3,c4,e4] ~@7 [bb3,c4,e4]@3 ~@3", G: "~@6 [ab3,c4,f4]@3 ~ [ab3,c4,f4] ~@7 [ab3,c4,f4]@5 ~",
  H: "~@6 [d4,f4,g4]@3 ~ [d4,f4,g4] ~@7 [d4,f4,g4]@4 ~@2", I: "~@6 [bb3,c4,e4]@3 ~ [bb3,c4,e4] ~@7 [bb3,c4,e4]@2 ~@4",
  J: "~@6 [bb3,c4,e4]@3 ~ [bb3,c4,e4] ~@7 [bb3,c4,e4]@5 ~", K: "c3@5 ~ bb2@6 ab2@6 g2@5 ~",
  L: "[c4,f4] ~ [c4,f4] ~ [c4,f4]@2 ~@16 [ab3,c4,f4]@2", // F5 Fm
})).s("gm_electric_guitar_clean").gain(0.35)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@2 A B C ~ A B C@2 ~@4 A ~ A B C@2 ~@4 A ~@8 A B C ~@5 A ~ A B C ~@4 A ~@2
>`.pickRestart({
  A: "~@12 [c4,f4] ~@11", B: "~@16 [c4,f4,ab4] ~@7", C: "~@4 c4 ~@19",
})).s("gm_electric_guitar_clean").gain(0.1)

// other · brass section
const brass_section = note("<~ A@5 ~@7 B@3 ~@7 C@2 D E F G@2 H I ~@4 J@2 K@2 L M N@4 O@2 P Q R S ~>".pickRestart({
  A: "[~@4 [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@3 ~ [c3,c4] ~ [eb3,eb4]@3 ~ [f3,f4]@5 ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@2 ~@2 [c3,c4] ~ [eb3,eb4]@3 ~ [f3,f4]@5 ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@3 c3 c4 ~ [eb3,eb4]@3 ~ [f3,f4]@6 [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@3 ~ c4@2 [eb3,eb4]@3 ~ [f3,f4]@7 ~@19, ~@87 c3@2 ~@31]/5", // F C Eb F C Eb F C …
  B: "[~@4 [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@3 ~ [c3,c4] ~ [eb3,eb4]@3 ~ [f3,f4]@5 ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@3 ~ [c3,c4] ~ [eb3,eb4]@3 ~ [f3,f4]@5 ~@21]/3", // F C Eb F C Eb F
  C: "[~@4 [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@3 ~ [c3,c4] ~ [eb3,eb4]@3 ~ [f3,f4]@5 ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [f3,f4] ~ [c3,c4]@2 ~@2 [c3,c4] ~ [eb3,eb4]@3 ~ f3@2, ~@45 f4@2 ~]/2", // F C Eb F C Eb
  D: "~@6 [g3,c4,g4]@3 ~ [g3,c4,g4]@7 ~ [g3,c4,g4] ~@5", E: "~@6 [ab3,f4,ab4]@3 ~ [ab3,f4,ab4]@7 ~ [ab3,f4,ab4]@4 ~@2",
  F: "~@6 [b3,f4,b4]@3 ~ [b3,f4,b4]@7 ~ [b3,f4,b4]@5 ~", // Bdim
  G: "[~@6 [bb3,g4,c5]@3 ~ [bb3,g4,c5]@7 ~ [bb3,g4,c5]@10 ~@2 [bb3,g4,c5]@3 ~ [bb3,g4,c5]@7 ~ [bb3,g4,c5]@6]/2", // C7
  H: "[c3,c4]@3 ~ [c4,c5]@2 [bb3,bb4]@3 ~ c5@2 [ab3,ab4]@3 ~ c4@2 [g3,g4]@4 c5@2, ~@10 c4 ~@4 c5@2 ~@5 c4 ~", // C Bb Ab G
  I: "[f3,f4] ~@7", J: "[[eb4,ab4]@42 [eb4,ab4]@5 ~]/2", K: "[[f4,bb4]@41 ~ [f4,bb4]@5 ~]/2",
  L: "[f4,ab4]@10 [f4,ab4]@13 ~", M: "[f4,ab4]@23 ~",
  N: "[~@6 [f4,c5]@9 ~ [f4,c5] ~@5 [f4,c5]@12 [f4,c5] ~@5 [f4,c5] ~@5 [f4,c5]@8 ~@4 [f4,c5] ~@5 [f4,c5] ~@5 [f4,c5]@16 ~@2 [f4,c5] ~@5 [f4,c5]@2]/4", // F5
  O: "[[eb4,ab4]@7 [eb4,ab4]]/2", P: "[f4,bb4]", Q: "~@10 [f4,ab4]@13 ~",
  R: "[f4,ab4]@6 f4 [eb4,g4] [c4,ab4] [bb3,bb4] [ab3,f4,c5] [eb3,eb5], ~@22 [f4,ab4] ~", // Fm Eb Fm Bb Fm Eb Fm
  S: "[f3,f4,ab4,f5] ~ [f3,f4,ab4,f5] ~ [f3,f4,ab4,f5]@2 ~@16 [f4,ab4,f5,c6]@2", // Fm
})).s("gm_brass_section").gain(0.4)

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

// drums · clap
const clap = s("cp").struct("<~@15 [~ x ~ x]!36 ~@2>").gain(0.64)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<[x!6 ~@6] ~@3 [~@7 x ~@4] ~@25 [~ x ~ x!3 ~@6] [~@3 x] ~@21>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<[~@10 x!2] ~@49 [~@9 x ~ x] [~@16 x!2 ~@6] ~>").gain(0.56)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A B C@2 A B C@3 A B C A B A B C@3 A B C A B A B C@2 D E ~ A B C@2 A B C@2 F B A B C@2 A B C F B ~@2
>`.pickRestart({
  A: "~ x!3", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "x ~ x!2 ~ x!2 ~ x!2 ~@2", D: "x!4", E: "~@2 x!2 ~ x!2 ~ x!2 ~@2",
  F: "~@3 x ~@2 x ~@2 x ~ x",
})).gain(0.48)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
  ~ A ~@3 A ~@4 A ~@2 A ~ A ~@4 A ~@2 A ~ A ~@3 A ~@2 A ~@3 A ~@3 A ~ A ~@3 A ~@2 A ~@3
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@3",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@3 x!7 ~@2] ~@49 [~@7 x!2 ~ x ~] [~@2 x] ~>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A@3 ~ A@4 ~ A@2 ~ A ~ A@4 ~ A ~@2 A ~ A@4 ~ A ~ A@3 ~ A@2 ~@2 A ~ A@3 ~ A ~@2 B ~
>`.pickRestart({
  A: "~@11 x", B: "~ x!2 ~",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<[x!3 ~@9] ~@49 [~ x] ~@2>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@2 B A ~@4 A ~@2 A ~ A ~@4 A ~@2 C ~ A ~@4 A@3 ~@3 A ~@3 A ~ A ~@3 A ~@2 A ~ C ~
>`.pickRestart({
  A: "x", B: "~@11 x", C: "x ~@10 x",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct("<~ A B@2 C A B@7 A B A B@7 A B@7 ~ A B@7 A B A B@6 A D ~@2>".pickRestart({
  A: "~@2 x!2 ~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x", C: "x ~ x!2 ~ x!2 ~ x!2 ~@2", D: "x ~ x!2 ~ x ~@6",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@13 [~@3 x ~ x ~@3 x ~@2]!17 ~@2 [~@3 x ~ x ~@3 x ~@2]!19 ~@2>").gain(0.56)

stack(
  piano, piano_soft, synth_strings_1, bass, electric_guitar_clean, electric_guitar_clean_2, brass_section, kick, clap,
  snare, snare_soft, low_tom, pedal_hat, pedal_hat_soft, mid_tom, open_hat, high_tom, crash, ride, tambourine
)

More by Celentano