Strudelify
Respirando cover art

1999 · Lucio Battisti, la batteria, il contrabbasso, eccetera

Respirando

Battisti

KeyE minorTempo100 bpm
0:00/0:00
// Respirando — Battisti
// 100 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 2 electric bass finger (copy of ch 8 fretless bass)
// note: Full arrangement: all 120 bars on a 32-step grid, each part at one level. 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, A@4 for four bars: edit a riff to change every repeat.

// chords · pad warm
const pad_warm = note(`<
  ~@2 A@4 B@3 C A@4 B@3 ~@3 A@16 D@2 E F G F G F A@4 H@3 ~@2 I@7 J@4 K@8 L@7 M@5 N@8 O P@8 Q@7 N@8 R ~@3
>`.pickRestart({
  A: "[[c4,e4,a4,c5]@16 ~@16 e5@15 ~ [e4,a4,c5]@16, ~@16 [e4,g#4,b4]@31 ~@17]/2", // Am E
  B: "[[e4,g4,c5]@15 ~@17 d5@15 ~ [g4,c5,e5]@31 ~ [g4,b4,d5,g5]@15 ~, ~@16 [d4,g4,b4]@31 ~@49]/3", // C G
  C: "[g#4,b4,e5]@16 [a4,c5]@15 ~, e4@31 ~", D: "[[e4,g4,c5]@15 ~@17 d5@15 ~ [g4,c5,e5]@16, ~@16 [d4,g4,b4]@31 ~@17]/2",
  E: "[e4,g4,c5]@15 ~ [d4,g4,b4]@16", F: "[e4,g#4,b4,e5]@13 ~@3", G: "[f4,a4,c5,e5]@7 ~",
  H: "[[e4,g4,c5]@15 ~@16 d5@15 ~@2 e5@31 ~ [g4,b4,d5,g5]@15 ~, ~@16 [d4,g4,b4]@31 [g4,c5]@31 ~@18]/3", // C G C5
  I: "[~@32 c4@15 ~@17 e5@15 [e4,a4,c5]@16 ~ [e4,a4,c5]@16 ~@15 e5@15 ~ [e4,a4,c5]@16 ~ [e4,a4,c5]@15 ~@17 e5@15 [e4,a4,c5]@16 c5, ~@31 [e4,a4,c5]@16 e4@31 ~@17 c4@16 ~ [e4,g#4,b4]@30 ~@17 c4@16 [e4,g#4,b4]@31 ~@18, ~@48 [g#4,b4]@31 ~@145]/7", // Am E G#m
  J: "[[c4,e4,a4]@15 ~@16 e5@15 ~ [e4,a4,c5]@16 ~ c4@15 ~@17 e5@14 ~ [e4,a4,c5]@16 ~, ~@15 [e4,g#4,b4]@31 ~@17 [e4,a4,c5]@16 e4@31 ~@18, ~@80 [g#4,b4]@31 ~@17]/4", // Am E Am G#m
  K: "[[c4,e4,a4,c5]@15 ~@16 e5@14 ~@2 [e4,a4,c5]@16 ~ [e4,a4,c5]@16 ~@15 e5@15 ~ [e4,a4,c5]@16 [c4,e4,a4,c5]@16 ~@16 e5@15 ~ [e4,a4,c5]@16 [e4,g4,c5]@15 ~@17 d5@15 ~ [g4,c5,e5]@16 c5, ~@15 [e4,g#4,b4]@31 ~@17 c4@16 ~ [e4,g#4,b4]@30 ~@33 [e4,g#4,b4]@31 ~@33 [d4,g4,b4]@31 ~@18]/8", // Am C E G
  L: "[[e4,g4]@15 [d4,g4,b4]@16 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [c4,e4,a4,c5]@16 [e4,g#4,b4]@16 e5]/7", // Em G E Fmaj7 E Fmaj7 E Am …
  M: "[~@15 [e4,a4,c5]@16 [c4,e4,a4,c5]@16 ~@16 e5@15 ~ [e4,a4,c5]@16 [e4,g4,c5]@15 ~@17 d5@15 ~ [g4,c5,e5]@17, ~@47 [e4,g#4,b4]@31 ~@33 [d4,g4,b4]@31 ~@18]/5", // Am C E G
  N: "[~@15 [g4,b4,d5,g5]@15 ~ [g#4,b4,e5]@15 ~ [a4,c5]@15 ~ [c4,e4,a4,c5]@16 ~@16 e5@15 ~ [e4,a4,c5]@16 [c4,e4,a4,c5]@16 ~@16 e5@15 ~ [e4,a4,c5]@16 [e4,g4,c5]@15 ~@17 d5@15 ~ [g4,c5,e5]@17, ~@31 e4@30 ~@18 [e4,g#4,b4]@31 ~@33 [e4,g#4,b4]@31 ~@33 [d4,g4,b4]@31 ~@18]/8", // G E Am C E G
  O: "~@15 [g4,b4,d5,g5]@15 ~ [e4,g#4,b4,e5]", // G E
  P: "[~@31 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]]/8", // Fmaj7 E Fmaj7 E Fmaj7 E Fmaj7 E
  Q: "[~@31 [c4,e4,a4,c5]@16 ~@16 e5@15 ~ [e4,a4,c5]@16 [c4,e4,a4,c5]@16 ~@16 e5@15 ~ [e4,a4,c5]@16 [e4,g4,c5]@15 ~@17 d5@15 ~ [g4,c5,e5]@17, ~@47 [e4,g#4,b4]@31 ~@33 [e4,g#4,b4]@31 ~@33 [d4,g4,b4]@31 ~@18]/7", // Am C E G
  R: "~@15 [g4,b4,d5,g5]@15 ~@2", // G
})).s("gm_pad_warm").gain(0.29)

// chords · pad sweep
const pad_sweep = note("<~@39 A B A B A ~@28 C@6 ~@14 D@7 E@3 ~@18>".pickRestart({
  A: "[e4,g#4,b4,e5]@13 ~@3", B: "[f4,a4,c5,e5]@7 ~",
  C: "[~@31 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@7]/6", // E Fmaj7 E Fmaj7 E
  D: "[~@31 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@6 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]]/7", // E Fmaj7 E Fmaj7 E Fmaj7 E
  E: "[~@31 [f4,a4,c5,e5]@28 ~@4 [e4,g#4,b4,e5]@26 ~@7]/3", // Fmaj7 E
})).s("gm_pad_sweep").gain(0.42)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@2 A B A C D@2 E F A G A B D@2 E H I J ~@8 A K A B ~@12 A L A M N@3 O P J ~@8 Q@2 R@2 ~@11 S@8 T@8 ~@8 U@8 V@8 W X@2
>`.pickRestart({
  A: "a4@11 ~ [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~", // C E E7
  B: "[g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4@2, e4@4 ~@14 e4@5 ~@9", // G#dim E7 E C
  C: "[g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@2 ~@2 [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4@2, e4@2 ~@16 e4@5 ~@9", // G#dim E7 E C
  D: "[[c5,e5,a5]@2 ~@2 [c5,g5]@2 [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@12 [b4,f5]@2 [g4,b4,f5] ~ [g4,b4,f5] ~ [g4,b4,f5]@2 ~@2 [g4,g5]@2 ~@2 [g4,e5]@2 ~@2 d5@2 c5@3 ~@9, ~@30 g4@4 ~@16 g4@5 ~@9]/2", // Am C5 Am C5 Bm7 G Bdim G7 …
  E: "[c5,e5]@2 [c5,g5] [c5,e5,a5] ~ [c5,g5] ~ [b4,d5,a5] ~ [b4,d5,g5] ~@6, a5 ~@15", // C C5 Am C5 Bm7 G
  F: "[e4,e5] ~ [e4,e5] ~ [e4,e5] ~ [e4,e5]@2 ~@2 [d4,d5]@2 ~@2 [c4,c5]@2 ~@2 [b3,b4] ~ [a3,a4]@3 ~@9", // E D C B A
  G: "[g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4 ~, e4@2 ~@16 e4@5 ~@9", // G#dim E7 E C
  H: "[e4,e5] ~ [e4,e5]@2 ~@2 [e4,e5]@2 ~@2 [e4,e5]@2 ~@2 [e4,e5] ~@3 [e4,e5] ~@3 [e4,e5] ~ [e4,e5]@3 ~ [e4,e5]@2 ~@2", // E
  I: "[e4,e5] ~ [e4,e5]@2 ~@2 [e4,e5] ~@3 [e4,e5] ~@3 [e4,e5] ~ [e4,e5]@2 [f4,f5]@2 [d4,d5]@2 [e4,e5]@2 [c4,c5]@2 [d4,d5]@2 [b3,b4]@2 [c4,c5]@2", // E F D E C D B C
  J: "[a3,a4]@2 ~@2 [a3,a4]@3 ~@5 [a3,a4]@2 ~@2 [a3,a4] ~ [a3,a4]@2 ~@12", // A
  K: "[g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4 ~, e4@4 ~@14 e4@5 ~@9", // G#dim E7 E C
  L: "[g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@2 ~@2 [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4 ~, e4@2 ~@16 e4@5 ~@9", // G#dim E7 E C
  M: "[g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@7 e4 ~@2, e4@4 ~@14 e4@5 ~@9", // G#dim E7 E C
  N: "[[c5,e5,a5]@2 ~@2 [c5,g5]@2 [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@12 [b4,f5] ~ f5 [g4,b4,f5] ~@2 [g4,b4,f5]@2 ~@2 [g4,g5]@2 ~ [g4,e5]@2 ~@4 c5@3 ~@10 [c5,e5]@3 [c5,g5]@2 ~ [c5,e5,a5]@2 ~ [c5,g5]@2 ~@3 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@11 [e4,e5], ~@30 g4@3 [g4,b4]@2 ~@15 g4@5 ~@41, ~@50 d5@2 ~@11 a5@2 ~@31]/3", // Am C5 Am C5 Bm7 G Bdim G7 …
  O: "~ [e4,e5]@2 ~@2 [e4,e5]@2 ~@2 [e4,e5]@2 ~@2 [e4,e5] ~@3 [e4,e5] ~@3 e4 e5 ~ [e4,e5]@3 [e4,e5]@2 ~@2 e4", // E
  P: "e5 ~ [e4,e5]@2 ~ e4 e5 ~@2 [e4,e5] ~@3 [e4,e5] ~ [e4,e5]@2 ~ [f4,f5]@2 ~ [e4,e5]@2 [c4,c5]@2 [d4,d5]@2 ~ [b3,b4]@2 [c4,c5]@2, ~@20 [d4,d5]@3 ~@9", // E F E C D B C D
  Q: "[a4@11 [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ g#4 [b4,d5] ~ [g#4,b4,d5] [e4,g#4,b4] d5 [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@3 ~@7 e4 ~@2, ~@31 e4@4 ~@14 e4@5 ~@10]/2", // C E E7 Bm G#dim E E7 E …
  R: "[a4@11 [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@2 ~@2 [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4 ~@2, ~@31 e4@4 ~@14 e4@5 ~@10]/2", // C E E7 G#dim E7 E C
  S: "[~@31 a4@11 ~ [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4 ~ a4@11 ~ [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4@2 [c5,e5,a5]@3 ~ [c5,g5] ~ [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@10 g4@2 [b4,f5]@2 [g4,b4,f5] ~ [g4,b4,f5] ~ [g4,b4,f5]@2 ~@2 [g4,g5]@2 ~@2 [g4,e5]@2 ~@2 d5@2 c5@3 ~@9 [c5,e5]@4 [c5,g5]@2 [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@12 [e4,e5], ~@63 e4@4 ~@14 e4@5 ~@41 e4@4 ~@14 e4@5 ~@59 g4@5 ~@9 a5@2 ~@31]/8", // C E E7 G#dim E7 E C E …
  T: "[~ [e4,e5] ~ [e4,e5] ~ [e4,e5]@2 ~@2 [d4,d5]@2 ~@2 [c4,c5]@2 ~@2 [b3,b4] ~ [a3,a4]@3 ~@9 a4@11 ~ [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4]@4 [e4,e5]@2 ~@2 [e4,c5]@3 ~ b4 ~ a4@2 ~@8 e4@2 a4@12 [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4@2 [c5,e5,a5]@2 ~@2 [c5,g5] ~ [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@10 g4@2 [b4,f5]@2 [g4,b4,f5] ~ [g4,b4,f5] ~ [g4,b4,f5]@2 ~@2 [g4,g5]@2 ~@2 [g4,e5]@2 ~@2 d5@2 c5@3 ~@9 [c5,e5]@4 [c5,g5]@2 [c5,e5,a5]@3 ~ [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@13, ~@63 e4@4 ~@2 d5@2 ~@10 e4@5 ~@41 e4@4 ~@14 e4@5 ~@59 g4@5 ~@9 a5@2 ~@31]/8", // E D C B A C E E7 …
  U: "[~@31 a4@11 ~ [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4]@4 [e4,e5]@2 ~@2 [e4,c5]@3 ~ b4 ~ a4@2 ~@8 e4@2 a4@12 [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4 ~ [c5,e5,a5]@2 ~@2 [c5,g5] ~ [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@10 g4@2 [b4,f5]@2 [g4,b4,f5] ~ [g4,b4,f5] ~ [g4,b4,f5]@2 ~@2 [g4,g5]@2 ~@2 [g4,e5]@2 ~@2 d5@2 c5@3 ~@9 [c5,e5]@4 [c5,g5]@2 [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@12 [e4,e5], ~@63 e4@4 ~@2 d5@2 ~@10 e4@5 ~@41 e4@4 ~@14 e4@5 ~@59 g4@5 ~@9 a5@2 ~@31]/8", // C E E7 G#dim E7 E C E …
  V: "[~ [e4,e5] ~ [e4,e5] ~ [e4,e5]@2 ~@2 [d4,d5]@2 ~@2 [c4,c5]@2 ~@2 [b3,b4] ~ [a3,a4]@3 ~@9 a4@11 ~ [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4]@4 [e4,e5]@2 ~@2 [e4,c5]@3 ~ b4 ~ a4@2 ~@8 e4@2 a4@12 [e4,c5]@2 [e4,e5]@2 ~@2 [e4,g#4,b4,d5]@2 ~@10 e4 ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5]@4 [e4,e5]@3 ~ [e4,c5]@2 ~@2 b4 ~ a4@2 ~@8 e4 ~ [c5,e5,a5]@2 ~@2 [c5,g5] ~ [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@10 g4@2 [b4,f5]@2 [g4,b4,f5] ~ [g4,b4,f5] ~ [g4,b4,f5]@2 ~@2 [g4,g5]@2 ~@2 [g4,e5]@2 ~@2 d5@2 c5@3 ~@9 [c5,e5]@4 [c5,g5]@2 [c5,e5,a5]@2 ~@2 [c5,g5]@2 ~@2 [b4,d5,a5]@2 ~@2 [b4,d5,g5]@2 ~@12 [e4,e5], ~@63 e4@4 ~@2 d5@2 ~@10 e4@5 ~@41 e4@4 ~@14 e4@5 ~@59 g4@5 ~@9 a5@2 ~@31]/8", // E D C B A C E E7 …
  W: "~ [e4,e5]@2 ~@2 [e4,e5]@2 ~@2 [e4,e5]@2 ~@2 [e4,e5] ~@3 [e4,e5] ~@3 [e4,e5] ~ [e4,e5]@3 ~ [e4,e5]@2 ~@2 [e4,e5]", // E
  X: "[~ [e4,e5]@2 ~@2 [e4,e5] ~@3 [e4,e5] ~@3 [e4,e5] ~ [e4,e5]@2 [f4,f5]@2 [d4,d5]@2 [e4,e5]@2 [c4,c5]@2 [d4,d5]@2 [b3,b4]@2 [c4,c5]@2 [a3,a4]@2 ~@31]/2", // E F D E C D B C …
})).s("gm_acoustic_guitar_nylon").gain(0.52)

// bass · fretless bass
const bass = note(`<
  ~@2 A B C B D E F G C B C B D E F H I J C B C B C B C B C B C B C B C B D E D K L K L K C B C B D E M N I J C B O P C
  B Q P R S Q P Q T@2 U@2 V W@7 T@2 U@2 X@4 T@2 U@2 Y Z@7 AA@4 T@2 U@2 X@4 T@2 U@2 AB@2 AC AD@2
>`.pickRestart({
  A: "a2@10 a1@2 d2@2 d#2 ~ e2@3 ~ e2@4 ~@6 b1@2", B: "e2 ~ b1 ~ e2@8 b1 ~ a#1 ~ a1@3 ~ a1@5 ~ e2 ~ e2@4",
  C: "a2@10 a1@2 d2@2 d#2 ~ e2@2 ~@2 e2@4 ~@6 b1@2, a1 ~@3", D: "c2@8 ~@2 c2@2 a1 ~ g#1 ~ g1@2 ~@2 g1@9 ~ d2 ~",
  E: "g2 ~ d2 ~ g2@6 d2@2 g1@2 b1 ~ c2@5 ~ c2@2 ~@2 g1@2 a1 ~ c2 ~",
  F: "c2@9 ~ c2 ~ f2 ~ f#2@2 g2@2 ~@2 g2@8 d2@2 d#2 ~",
  G: "e2@4 ~@2 e2@3 ~ e2 ~ g2@2 a2@2 ~@2 a2@2 ~@2 a2@2 e2@2 ~@2 e2@3 ~",
  H: "e2 ~ e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~@3 e2 ~@3 e2 ~ e2@3 ~ e2@2 ~@2",
  I: "e2 ~ e2@2 ~@2 e2 ~@3 e2 ~@3 e2 ~ e2@2 f2@2 d2@2 e2@2 c2@2 d2@2 b1@2 c2@2",
  J: "a2@2 ~@2 a2@3 ~@5 a2 ~@3 a2 ~ a2 ~@3 e2 ~ e2@8", K: "e2@19 ~@13", L: "f2@13 ~@3",
  M: "c2@9 ~ c2@2 f2 ~ f#2 ~ g2@2 ~ g2@8 d2@2 d#2 ~ e2",
  N: "~@2 e2@2 ~@2 e2@2 ~ e2@2 ~@3 e2 ~@3 e2 ~@3 e2 ~ e2@3 ~ e2@2 ~@2",
  O: "a2@9 a1@2 d2@2 d#2 ~@2 e2@2 ~ e2@4 ~@6 b1@2 e2, a1 ~@3", P: "~ b1 ~ e2@8 b1 ~ a#1 ~ a1@3 ~ a1@5 ~ e2 ~ e2@4 ~",
  Q: "a2@9 a1@2 d2@2 d#2 ~ e2@3 ~ e2@4 ~@6 b1@2 e2, a1 ~@3",
  R: "a1@8 ~ a1@2 d2@2 ~ d#2 ~ e2@3 ~ e2@4 ~@5 b1@2 ~, a2@3 ~@5",
  S: "e2 b1 ~ e2@8 b1 ~ a#1 ~ a1@3 ~ a1@5 ~ e2 ~ e2@4 ~",
  T: "[~ b1 ~ e2@8 b1 ~ a#1 ~ a1@3 ~ a1@5 ~ e2 ~ e2@4 a2@10 a1@2 d2@2 d#2 ~ e2@3 ~ e2@4 ~@6 b1@2 e2, ~@31 a1@8 ~@25]/2",
  U: "[~ b1 ~ e2@8 b1 ~ a#1 ~ a1@3 ~ a1@5 ~ e2 ~ e2@4 c2@8 ~@2 c2@2 a1 ~ g#1 ~ g1@2 ~@2 g1@9 ~ d2 ~ g2]/2",
  V: "~ d2 ~ g2@6 d2@2 g1@2 b1 ~ c2@5 ~ c2@2 ~@2 g1@2 a1 ~ c2 ~@2",
  W: "[c2@8 ~ c2@2 a1 ~ g#1 ~ g1@2 ~@2 g1@9 ~ d2 ~ e2@20 ~@12 f2@26 ~@6 e2@19 ~@13 f2@26 ~@6 e2@19 ~@13 a2@10 a1@2 d2@2 d#2 ~ e2@3 ~ e2@4 ~@6 b1@2 e2, ~@191 a1@8 ~@25]/7",
  X: "[~ d2 ~ g2@6 d2@2 g1@2 b1 ~ c2@5 ~ c2@2 ~@2 g1@2 a1 ~ c2 ~ c2@8 ~@2 c2 ~ f2 ~ f#2 ~ g2@2 ~@2 g2@8 d2@2 d#2 ~ e2@4 ~@2 e2@3 ~ e2 ~ g2@2 a2@2 ~@2 a2@2 ~@2 a2@2 e2@2 ~@2 e2@3 ~ a2@10 a1@2 d2@2 d#2 ~ e2@3 ~ e2@4 ~@6 b1@2 e2, ~@95 a1@8 ~@25]/4",
  Y: "~ d2 ~ g2@6 d2@2 g1@2 b1 ~ c2@5 ~ c2@2 ~@2 g1@2 a1 ~ c2 ~ c2",
  Z: "[~@9 c2@2 f2 ~ f#2@2 g2@2 ~@2 g2@8 d2@2 d#2 ~ e2@19 ~@13 f2@26 ~@6 e2@19 ~@13 f2@26 ~@6 e2@19 ~@13 f2@26 ~@6 e2]/7",
  AA: "[~@31 f2@26 ~@6 e2@19 ~@13 a2@10 a1@2 d2@2 d#2 ~ e2@3 ~ e2@4 ~@6 b1@2 e2, ~@95 a1@8 ~@25]/4",
  AB: "[~ d2 ~ g2@6 d2@2 g1@2 b1 ~ c2@5 ~ c2@2 ~@2 g1@2 a1 ~ c2 ~ c2@8 ~@2 c2@2 f2 ~ f#2 ~ g2@2 ~@2 g2@8 d2@2 d#2 ~ e2]/2",
  AC: "~ e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~@3 e2 ~@3 e2 ~ e2@3 ~ e2@2 ~@2 e2",
  AD: "[~ e2@2 ~@2 e2 ~@3 e2 ~@3 e2 ~ e2@2 f2@2 d2@2 e2@2 c2@2 d2@2 b1@2 c2@2 a2@2 ~@31]/2",
})).s("gm_fretless_bass").gain(0.34)

// drums · kick
const kick = s("bd").struct(`<
  A@2 B@15 A@2 C B@19 A@5 B@6 D E F C D G@2 H D H D H I D G@9 E@5 G@15 E@9 G@15 E@2 ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", B: "x ~@5 x!2 ~@8", C: "x ~ x ~@3 x ~ x!2 ~ x!2 ~@3", D: "x ~@10 x ~ x ~@17 x",
  E: "~@5 x ~ x ~@7 x ~@5 x ~ x ~@7 x", F: "~@5 x ~ x ~@7 x ~@5 x ~ x ~@8", G: "~@11 x ~ x ~@17 x",
  H: "~@11 x ~ x ~@18", I: "x ~@11 x!2 ~@18",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<~ A B@15 ~@2 C B@15 D@4 ~@5 D@7 ~@2 C D@19 ~@5 D@15 ~@9 D@15 ~ E ~>".pickRestart({
  A: "~@13 x ~@2", B: "~ x ~ x", C: "x ~ x ~@3 x ~ x!2 ~@6", D: "~@7 x ~@15 x ~@8", E: "~@31 x",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@19 [~@11 x ~@4] ~@33 [~@11 x ~@4] ~@66>").gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A@15 ~@3 B A@18 ~@5 A@5 C D ~@3 D E F D E D E D G@2 E D E F@5 D ~@4 H F@14 D ~@8 H F@14 D ~@3
>`.pickRestart({
  A: "x!16", B: "~ x!15", C: "x ~ x ~ x ~ x ~ x!2 ~@2 x!2 ~@2 x!2 ~ x ~ x ~ x ~ x ~@2 x!2 ~ x",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
  E: "x!2 ~ x ~ x ~@2 x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  G: "x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2", H: "~@31 x",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 [~@12 x!2 ~@2] ~@33 [~@12 x!2 ~@2] ~@66>").gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~@19 [~@7 x] ~@33 [~@7 x] ~@66>").gain(0.51)

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  A@2 B@15 A@2 ~ B@19 C A C A C B@7 C@2 ~ B@2 D E D E D E B F D E D G@5 E C@4 H G@14 E C@8 H G@14 E C@2 ~
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "x!2", C: "~@11 x ~@15 x ~@4", D: "x ~@14 x ~@15 x", E: "~@15 x ~@16", F: "x ~@14 x ~@16",
  G: "~@15 x ~@15 x", H: "~@11 x ~@15 x ~@3 x",
})).gain(0.25)

stack(
  pad_warm, pad_sweep, acoustic_guitar_nylon, bass, kick, snare, low_tom, hihat, mid_tom, high_tom, crash, tambourine
)

More by Battisti