Strudelify
Bambolina e barracuda cover art

Ligabue

Bambolina e barracuda

LIGABUE

KeyC majorTempo118 bpm
0:00/0:00
// Bambolina e barracuda — LIGABUE
// 118 bpm, 4/4, key C 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 157 bars on a 16-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 B C D E F G H I ~@2 J@3 K L ~@3 M@2 ~@2 N O ~ P@2 ~@2 Q R ~@2 S@2 ~@2 T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ
  AK@2 AL AM AN AO@2 ~ AP ~@3 AQ ~@3 AR V W X Y Z AA AB AC AD AE AF AG AH AI AJ AS AT AU AV AW AX AY AZ BA BB BC BD BE
  BF BG BH BI BJ@6 ~@2 BK BL BM BN BO BP BQ BR BK BL BM BN BO BP BQ BR BS BL BT BN BU AA AB AC AD AE AF AG Z AA AB AC AD
  AE AF AG Z AA BV@3 ~@3
>`.pickRestart({
  A: "[g3,d4,g4,c5]@3 ~@3 [d4,g4,b4]@9 ~, ~@3 [d4,g4,c5]@3 ~@10, ~ g3@3", // Gsus4 G Csus2
  B: "[d4,g4,c5]@3 [d4,g4,c5]@3 [d4,g4,b4]@3 [d4,g4]@3 ~@2 c3@2, c3@7 ~, ~@9 b4@7, ~@3 [d4,g4,c5]", // Csus2 G G5 Csus2
  C: "[d4,g4,c5]@2 ~ [d4,g4,c5]@3 [d4,g4,b4]@10, e3", // Csus2 G
  D: "[d4,g4,c5]@2 ~ [d4,g4]@3 [d4,g4,b4]@3 [d4,g4]@3 ~@2 c3@2, c3@7 ~, ~@3 c5@9 [d4,g4,c5]@4, ~@9 b4@7", // Csus2 G5 G G5 Csus2
  E: "[d4,g4,c5]@2 ~ [d4,g4,c5]@3 [d4,g4,b4]@10, g3", // Csus2 G
  F: "[d4,g4,c5]@3 [d4,g4,c5]@3 [d4,g4,b4]@3 [d4,g4]@3 ~@3 d4, c3@7 c3, ~@9 b4@6 ~, ~@3 [d4,g4,c5]", // Csus2 G G5 Csus2
  G: "[d4,g4,c5]@2 ~ [d4,g4,c5]@3 [d4,g4,b4]@9 ~, e3@15 ~", // Csus2 G
  H: "[g4,c5]@3 [d4,g4,c5]@3 [d4,g4,b4]@2 [d4,g4,b4]@3 [d4,g4,c5]@2 ~ [g4,d5]@2, c3@12 ~ c3@3", I: "[g3,a4,d5,g5]",
  J: "[~@7 d5@16 ~, ~@4 d6@19 ~, ~@11 g5@35 ~@2]/3", K: "~@14 g4 ~", L: "[g4,d5]@3 [g4,c5]@2 ~ [g4,b4]@3 g4@6 ~",
  M: "[~@6 c6@4 b5@3 g5 d5@5 ~@13]/2", N: "~@3 d6@5, [c5,d5,g5]", O: "[g4,a4,d5]@13 ~@3",
  P: "[~@22 g4@9 ~, ~@4 d6@27 ~, ~@10 g5@21 ~, ~ d5]/2", Q: "~@2 c6 b5 g5 d5 c5 b4 g4@2 ~ e4@3 g4@2",
  R: "e5@3 d5@3 c5@8 ~@2, [c3,g4]@15 ~, d5 ~@15", S: "[~@16 e5@3 d5@9 ~@4, ~@15 g4@13 ~@4, ~@4 c4@3 ~, ~@16 d5 ~@15]/2",
  T: "~@4 [d4,g4,d5]@3 ~", U: "[g4,c5]@3 [g4,b4]@2 ~ [c4,g4]@9 ~, c4@5 ~@11", V: "[a#2,c4,f4,a4]@3 [a#2,g3,c4,f4]@5",
  W: "[c4,f4,a4]@3 [g3,c4,f4]@5, a#2", X: "[c4,f4,c5]@3 [c4,d4,a4]@5, c3",
  Y: "[c3,c4,f4,c5]@6 f5 g5 c6 g5 f5 c5 g5 f5 c5 g4", // F5
  Z: "[d4,g4,c5]@3 [d4,g4,c5]@3 d4@4 d4@2 ~@3 d4, g3@7 g3, ~@3 [g4,b4]@3 [d4,g4,b4]@2", // Csus2 G
  AA: "[d4,g4,c5]@3 [d4,g4,c5]@2 ~ [d4,g4,b4]@3 [d4,g4,b4]@3 ~@3 d4, c3@7 c3, ~@3 [d4,g4,b4]", // Csus2 G
  AB: "[d4,g4,c5]@3 [d4,g4,c5]@3 [d4,g4,b4]@6 ~@3 [d4,g4], e3@7 e3, ~@3 [d4,g4,b4]", // Csus2 G G5 G
  AC: "[d4,g4,c5]@3 [d4,g4]@3 [d4,g4]@3 g4@3 ~@3 [d4,g4], c3@7 c3, ~@3 c5@13, ~@3 b4@3 [g4,b4]@2, ~@9 d4@6 ~", // Csus2 G5 G
  AD: "[d4,g4,c5]@3 [d4,g4,c5]@2 ~ [d4,g4,b4]@6 ~@3 d4, g3@7 g3, ~@3 [d4,g4,b4]", // Csus2 G
  AE: "[d4,g4,c5]@2 ~ [d4,g4,c5]@2 ~ d4@2 ~ d4@3 ~@3 [d4,g4], c3@7 c3, ~@3 [g4,b4]@3 [d4,g4,b4]@2", // Csus2 G5 G
  AF: "[d4,g4,c5]@2 ~ [d4,g4,c5]@3 d4@8 [e3,d4]@2, e3@7 ~, ~@3 [g4,b4]@5", // Csus2 E7 G
  AG: "[d4,g4,c5]@2 ~ [d4,g4,c5]@2 ~ [d4,g4,b4]@2 ~ d4@2 ~ [d4,g4,b4]@2 c3 ~, c3@13 ~@3, ~@9 g4 ~@6", // Csus2 G
  AH: "[d4,g4,c5]@3 [d4,g4,c5]@3 [d4,g4,b4]@6 ~@3 d4, g3@7 g3, ~@3 [d4,g4,b4]", // Csus2 G
  AI: "[c3,c5]@3 ~@3 d4@2 ~ d4@3 ~@3 [d4,g4], [d4,g4]@2 ~ [d4,g4,c5]@3 [g4,b4]@6 [d4,g4,b4]@4, ~@2 c3@2 c3@3 c3", // C G5 Csus2 G
  AJ: "[d4,g4,c5]@3 [g4,c5]@3 ~@8 e3@2, e3@5 e3@2 ~, ~@3 [d4,g4,b4]@3 [d4,g4,b4]@2", // Csus2 C5 G
  AK: "[[c3,d4,g4,c5]@3 ~@3 [d4,g4,b4]@2 ~ d4@3 ~@4 [g3,a4,d5]@16, ~@3 c5@5 ~@7 g4@17, ~@3 [d4,g4]@3 ~@6 [d4,g4,b4]@4 ~@16, ~@2 c3@2 c3@3 c3 ~@8]/2", // Csus2 G Gsus2 G5 G
  AL: "~@14 c6 b5", AM: "g5 ~ c5 b4 g4 d4 c4 b3 g3 ~@7, ~ d5@2 ~@13", AN: "~@10 d4@2 g4@2 c5 ~",
  AO: "[c5@3 ~@3 d5@4 ~@14 g6@7 ~, ~@12 g5@19 ~, ~@18 d6@13 ~]/2", AP: "[c5,g5]@2 ~ [b4,g5]@2 ~ [g4,g5]@7 ~@3",
  AQ: "[g5,d6]@5 ~ [e5,d6]@5 ~ [d5,d6]@4", AR: "[d4,c5]@5 ~ [d4,b4]@5 ~ [d4,g4]@4",
  AS: "[c3,d4,g4,c5]@3 ~@3 [d4,g4,b4]@2 ~ d4@3 ~@2 c3@2, ~@3 c5@5 ~@8, ~@3 [d4,g4]@3 ~@6 [d4,g4,b4]@4, ~@2 c3@2 c3@3 ~", // Csus2 G G5 G
  AT: "[d4,g4,d5]@3 [d4,g4,c5]@2 ~ [d4,g4,b4] ~ d4@4 g3@2 d4 ~, g3@11 ~@5, ~@8 [g4,b4]@7 ~", // G5 Csus2 G
  AU: "[d4,g4,d5]@2 ~ [d4,g4,c5]@3 [d4,g4,b4] ~ [d4,g4,b4]@3 ~ [d4,g4,c5]@3 ~, c3@15 ~", // G5 Csus2 G Csus2
  AV: "[d4,g4,d5]@3 [d4,g4,c5]@3 [d4,g4,b4] ~ d4@4 e3@2 d4 ~, e3@11 ~@5, ~@4 [g4,b4]@3 ~", // G5 Csus2 G
  AW: "[d4,g4,d5]@2 ~ [d4,g4,c5]@2 ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ d4@2 c3 d4, c3@3 [g4,c5]", // G5 Csus2 G C5
  AX: "[d4,g4,d5]@2 ~ [d4,g4,c5]@2 ~ [d4,g4,b4] ~ d4@4 ~@2 d4 ~, g3@11 ~ g3@4, ~@4 [g4,b4]@3 ~", // G5 Csus2 G
  AY: "[d4,g4,d5]@2 ~ [d4,g4,c5]@2 ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,c5]@2 ~ [d4,g4], c3@13 ~ c3@2", // G5 Csus2 G Csus2 G5
  AZ: "[d4,g4,d5]@2 ~ [d4,g4,c5]@2 ~ [d4,g4,b4] ~ d4@4 d3@2 d4 ~, d3@11 ~@5, ~@8 [g4,b4]@7 ~", // G5 Csus2 G
  BA: "[d4,g4,d5]@2 ~ [d4,g4,c5]@2 ~ [d4,g4,b4]@2 ~ [d4,g4,c5]@2 ~ [d4,g4,b4] ~ [d4,g4] ~, c3, ~@7 c5", // G5 Csus2 G Csus2 G G5
  BB: "[c4,f4,a4] ~ [c4,f4,a4]@2 ~@2 c4@5 ~ c4@2 f3 ~, f3@4 f3@9 ~@3, ~@6 [f4,g4]@9 ~", // F Fsus2
  BC: "[d4,g4,b4] ~ [d4,g4,b4]@2 ~@2 [d4,g4,a4]@3 ~ d4@2 g3@2 d4 ~, g3@2 ~@2 g3@6 [g4,b4]@5 ~", // G Dsus4 G
  BD: "[c4,f4,a4] ~ [c4,f4,a4]@2 ~@2 c4@6 f3@2 c4 ~, f3@2 ~@2 f3@7 ~@5, ~@6 [f4,g4]@9 ~", // F Fsus2
  BE: "[c4,e4,a4]@4 ~@2 [e4,g4,c5]@5 ~ [e4,a4,c5]@3 ~, a2@3 ~ a2@11 ~", // Am C Am
  BF: "[f3,c4]@4 ~@2 c4@5 ~ [c4,f4,a4]@2 f3 ~, [f4,a4]@11 ~@5, ~@4 f3@9 ~@3", // F5 F
  BG: "[d4,g4,b4]@4 ~@2 [g4,b4] ~ g4 ~ d4@2 g3@2 d4@2, g3@3 ~ g3@7 ~@5, ~@3 d4 ~ [g4,b4]@3", // G
  BH: "[d3,d4,g4,a4]@4 ~@2 d4@4 ~@2 d4 ~ d3 ~, ~@4 d3@9 ~@3, ~@3 [f#4,a4]@4 ~", // Dsus4 F#m
  BI: "[d5,a5,d6]@2 ~ [d5,a5,d6]@2 d3 ~ d3, d3@3 ~ d3@5 ~@3 [d5,a5,d6]@4", BJ: "[[g2,g3]@15 ~]/6",
  BK: "[g3,d4,g4]@3 ~@3 [d4,g4]@2 ~ g4@3 ~@2 d4@2, c5@3 c5@5, ~@3 b4@6 b4@7, ~@3 [d4,g4]@3 ~@3 d4@5 ~@2, ~ g3!2 [g3,g4]", // G5 G
  BL: "[c3,d4,g4]@3 ~@3 [d4,g4]@2 ~ g4@3 ~@2 d4@2, c5@3 c5@5, ~@3 b4@6 b4@7, ~@3 [d4,g4]@3 ~@3 d4@5 ~@2, ~ c3!2 [c3,g4]", // Csus2 G5 C5
  BM: "[e3,d4,g4]@3 ~@3 [d4,g4]@2 ~@2 e3@2 d4@2 d4@2, c5@3 c5@3 ~@2, ~@3 b4@6 ~@7, ~@3 [d4,g4]@3 ~@3 [d4,g4,b4]@3 ~@4, ~@2 e3@2 e3 ~ [e3,g4]@2", // Em7 G5 G Em
  BN: "[c3,d4,g4]@3 ~@3 [d4,g4]@2 ~ [d4,g4]@3 d4@2 d4@2, c5@2 ~ b4@6 b4@7, ~@3 [d4,g4]@3 c5@10, ~ c3!2 [c3,g4]", // Csus2 G5 C5
  BO: "[g3,g4]@3 ~@3 [d4,g4]@2 ~@4 d4@2 d4@2, [d4,c5]@2 ~ b4@6 [d4,g4,b4]@3 g4@4, ~@3 [d4,g4]@3 c5@6 ~@4, ~@2 g3@2 g3 g3@3", // G G5 D7 G G5
  BP: "[c3,d4,g4]@3 ~@3 [d4,g4]@2 ~ [d4,g4,b4]@2 ~@3 d4@2, c5@6 c5@5 ~@5, ~@3 b4@6 ~@7, ~@3 [d4,g4]@3 ~@10, ~ c3!2 [c3,g4]", // Csus2 G5 G G5 C5
  BQ: "[e3,g4]@3 ~@3 [d4,g4]@2 ~ [d4,g4,b4]@3 d4 ~ d4@2, [d4,c5]@2 ~ b4@6 ~@7, ~@3 [d4,g4]@3 c5@6 ~@4, ~ e3!2 [e3,g4]", // Em G5 G D7 G5 Em
  BR: "[d4,g4,c5]@2 ~@4 [d4,g4]@2 ~ g4@3 ~@2 d4@2, c3@3 b4@6 [d4,b4]@6 ~, ~@3 [d4,g4]@3 c5@9 ~, ~ c3!2 [c3,g4]", // Csus2 G5 G G5 C5
  BS: "[g3,d4,g4]@3 ~@3 [d4,g4,c5]@10, c5@3 ~@5, ~@3 b4@13, ~@3 [d4,g4]@3 ~@10, ~ g3@3", // G5 Csus2 G5
  BT: "[e3,d4,g4]@3 ~@3 [d4,g4,c5]@6 ~@4, c5@3 ~@5, ~@3 b4@9 ~@4, ~@3 [d4,g4]@3 ~@10, ~ e3@2 ~", // Em7 Csus2 G5
  BU: "[d4,g4,c5]@3 [d4,g4,c5]@3 d4@4 d4@2 ~@3 d4, g3@3 [g4,b4]@3 [d4,g4,b4]@2, ~@7 g3", // Csus2 G
  BV: "[[d4,g4,c5]@3 [d4,g4,c5]@3 [d4,g4,b4]@6 ~@3 [d4,g4] ~@8 g4@2 ~ g4@2 c5@2 g4@2 c4@2 ~@8 c4@5, e3@14 e3@2 [g4,c5]@6 g4@2 ~@11 g4@4 g4@9, ~@12 [d4,g4,b4]@3 [c3,c4]@4 c3@29, ~@21 c4@5 c4@6 ~@16, ~@23 c5@6 ~@8 c5@11]/3", // Csus2 G G5 C5 G C
})).s("gm_piano").gain(0.41).pan(0.6)

// bass · electric bass finger
const bass = note(`<
  A B C D E B C D F G H I J K L I J K L I J K L I J K L I J K L I J M N O N M N O N P Q R S B C D E B C D T B C D F K L
  I J K L I J M N O N M N O N P Q R S B C D E B C D T B C D F B C D E B C D U V W X Y Z AA AB@2 AC ~@15 AD AE AF AG AH
  AE AF AI AJ AG AK AI B C D E B C D T B C D F B C D E B C AL AM@2 ~@3
>`.pickRestart({
  A: "~@6 g2 d2", B: "g1@2 g1!2 g1@2 g1@2 g1!2 g1@2 g1@2 b1@2", C: "c2@2 c2!2 c2@2 c2@2 c2!2 c2@2 c2@2 c2@2",
  D: "e1@2 e1!2 e1@2 e1@2 e1!2 e1@2 e1@2 e1@2", E: "c2@2 c2!2 c2@2 c2@2 c2!2 c2@2 c2@2 e1@2",
  F: "c2@2 c2!2 c2@2 c2@2 c2!2 c2@2 c2@2 a1@2", G: "g1@2 ~@4 g1@9 ~", H: "c2@2 ~@4 c2@9 ~", I: "e1@2 ~@4 e1@9 ~",
  J: "c2@2 ~@4 c2@8 e1 ~", K: "g1@3 ~@3 g1@9 ~", L: "c2@3 ~@3 c2@9 ~", M: "g1 ~@2 g1 ~@2 g1 ~@9",
  N: "c2 ~@2 c2 ~@2 c2@9 ~", O: "e1 ~@2 e1 ~@2 e1 ~@9", P: "a#1 ~@2 a#1 ~@2 a#1@8 f1 g1",
  Q: "a#1 ~@2 a#1 ~@2 a#1@7 ~ c2@2", R: "f1@2 ~ f1 ~@2 f1@9 ~", S: "f1@2 ~ f1@2 ~ f1@3 ~ f1 ~ f1 ~ f1@2",
  T: "c2@2 c2!2 c2@2 c2@2 c2!2 c2@2 e1@2 f#1@2", U: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 a1 ~",
  V: "f1 ~ f1@3 ~ f1 ~ f1@5 ~ f1@2", W: "g1 ~ g1@2 ~@2 g1 ~ g1@5 ~ g1@2", X: "f1 ~ f1@3 ~ f1 ~ f1@3 ~ f1@2 g1@2",
  Y: "a1 ~ a1@2 ~@2 a1 ~ a1@5 ~ a1 ~", Z: "f1 ~ f1@2 e1@2 f1 ~ f1 ~ f1@2 e1@2 f1@2", AA: "g1 ~ g1@2 ~@2 g1 ~ g1@6 g1 ~",
  AB: "d1@2 d1@2 d1@2 d1 d1@2 d1 d1@2 d1@2 d1@2", AC: "g1", AD: "g2@2 g2!2 g2@2 g2!2 g2@2 g2!2 g2@2 d2@2",
  AE: "c2@2 c2!2 c2@2 c2!2 c2@2 c2!2 c2@2 d2@2", AF: "e2@2 e2!2 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2",
  AG: "c2@2 c2!2 c2@2 c2!2 c2@2 c2!2 c2@2 c2@2", AH: "g2@2 g2!2 g2@2 g2!2 g2@2 g2!2 g2@2 g2@2",
  AI: "c2@2 c2!2 c2@2 c2!2 c2@2 c2!2 c2@2 a1@2", AJ: "g1@2 g1!2 g1@2 g1!2 g1@2 g1!2 g1@2 g1@2",
  AK: "e1@2 e1!2 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2", AL: "e1@2 e1!2 e1@2 e1@4 e1@2 e1@2 e1@2", AM: "c2/2",
})).s("gm_electric_bass_finger").gain(0.56)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A B C B A B C B D B C B D B C B D B C B D B C B D B C B D B C B D B C B D B C B E@2 F@2 ~@12 D B C B D B C B D B C B
  D B C B ~@84
>`.pickRestart({
  A: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ b2 ~", B: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
  C: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", D: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  E: "a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~", F: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~",
})).s("gm_electric_guitar_muted").gain(0.24)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@17 A B C D A B C D ~@15 E@3 F@2 G H@2 I G H@2 I G H@2 I ~@15 E@3 F@2 G I J I G I J I G I J K G H@2 I G H@2 I L M N O
  P@2 Q@2 ~@28 G H@2 I G H@2 I G H@2 I G H@2 I G H@2 I ~@4
>`.pickRestart({
  A: "g2@3 g3@3 b2@2", B: "c3@3 g3@3 c3@2", C: "b2@3 g3@3 b2@2", D: "c3@15 ~", E: "[~@16 d4@29 ~@3, ~@5 a#3@10 ~]/3",
  F: "[[f3,c4]@13 ~@3]/2", G: "[g3,d4]", H: "[[c3,g3]@15 ~ [b3,d4]@15 ~, ~@15 e3@15 ~@2]/2", I: "[c3,g3]",
  J: "[e3,b3,d4]@15 ~", K: "c3, g3 ~@15", L: "[f3,c4]", M: "[g3,d4]@15 ~", N: "[f3,c4]@15 ~", O: "[a3,e4], d4 ~@15",
  P: "[[f3,c4]@15 ~ d4@15 ~, ~@15 g3@16 ~]/2", Q: "[d3,a3]/2",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.4)

// other · distortion guitar
const distortion_guitar = note(`<
  ~ A B C D A B C D ~@24 E F E G E H E G I J K L A B C D A B C D A B C D ~@8 E F E G E H E G I J K L A B C D A B C D A B
  C D ~@8 M N O P Q R S T ~@18 U@2 ~@2 U@2 V W X Y A B C D A B C D A B C D A B C D A Z C AA@5
>`.pickRestart({
  A: "c5@3 b4@3 g4@2", B: "[c4,e4]", C: "d4@3 g4@3 d4@2", D: "[g3,e4]", E: "g4 ~ g4!2 a4 ~ a4!2 c5 ~ c5!2 b4 ~ b4!2",
  F: "g4 ~ g4!2 a4 ~ a4!2 c5 ~ c5!2 b4 ~ b4 [a4,b4]", G: "g4@7 ~", H: "g4!4 a4!4 c5!4 b4!4", I: "a4@3 g4@5",
  J: "f4@3 e4@5", K: "g4@3 f4@5", L: "e4@6 d4@9 ~", M: "f4@3 c4", N: "b3", O: "[f3,b3,d4]@3 [e3,a3,c4]@3 [g3,b3,d4]@2",
  P: "[a3,c4,e4]@15 ~", Q: "f3@3 f4@3 c4@2", R: "[g3,d4]@3 [f3,c4]@3 [g3,d4]@2",
  S: "~@3 f#4@3 [a3,d4]@2, g4@7 ~@9, ~ d4@11 ~@4", T: "g4@3 f#4@3 [a3,d4]@2, d4@3 ~", U: "[d4,g4]/2", V: "[g3,d4] ~",
  W: "[g3,c4]@15 ~", X: "[g3,d4]@7 ~@9", Y: "[g3,c4]", Z: "[c4,e4]@15 ~", AA: "[[c3,g3,c4]@33 ~@7]/5",
})).s("gm_distortion_guitar").gain(0.29).pan(0.3)

// other · distortion guitar
const distortion_guitar_2 = note("<~@88 A B@2 C@2 B@2 D@2 ~@60>".pickRestart({
  A: "~@5 d4 g4 c5", B: "b4@3 g4@2 ~ g4@4 d4@2 g4@2 c5@2", C: "[b4@3 g4@2 ~ g4@6 g4@2 a4@12 d4@2 g4@2 c5@2]/2",
  D: "[b4@3 g4@3 g4@6 c5@2 d5@18]/2",
})).s("gm_distortion_guitar").gain(0.35).pan(0.7)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B D@2 E@2 A B C B A B C B A B C B A B
  C B A B C B A B C B A B C B D@2 E@2 A B C B A B C B A B C B A B C B A B C F G H G I G J K@2 ~@28 A B C B A B C B A B C
  B A B C B A B C ~@5
>`.pickRestart({
  A: "[g2,g3,a3,d4]", B: "[c3,g3,c4,e4]", C: "[e3,b3,e4,g4]", D: "[[a#2,a#3,f4], c4 ~@31]/2", E: "[f2,g3,c4]/2",
  F: "[c3,g3,e4], c4 ~@15", G: "[f2,f3,a3,c4]", H: "[g2,g3,b3,d4]@15 ~", I: "[a2,a3,c4,e4]", J: "[g2,g3,b3,d4]",
  K: "[f#4@8 g4@3 f#4@5, [d3,a3,d4]]/2", // D5
})).s("gm_synth_strings_1").gain(0.27)

// drums · kick
const kick = s("bd").struct(`<
  A B@8 C@24 D@11 E B@10 F G C@16 D@3 E B@10 F G B@7 ~ H@5 I B@2 E@26 J G B@10 F G B@6 K L ~@4
>`.pickRestart({
  A: "~@7 x", B: "x ~@2 x ~@2 x ~@3 x ~@5", C: "x ~@2 x ~@4", D: "x ~@2 x ~@2 x ~@9", E: "x!4",
  F: "x ~@2 x ~@2 x ~@3 x ~@3 x ~", G: "~@2 x ~@2 x ~@2", H: "x!2 ~ x ~@4", I: "x!2 ~ x ~ x ~@2", J: "x ~ x ~ x ~ x!2",
  K: "x ~@2 x ~ x ~@2", L: "x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C ~@7 D ~@15 D ~@3 D ~@3 A D@3 E B@3 F B@3 G B F B H ~@7 D ~@7 A D@3 E B@3 F B@3 G B F B H B F B C B F B I B@5 G
  B J ~@15 K ~@3 K ~@3 L M@3 H B@3 F B@3 G B F B H B F B N B O B ~@5
>`.pickRestart({
  A: "~@12 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x!4", D: "~@3 x", E: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x!2",
  F: "~@4 x ~@7 x ~ x!2", G: "~@4 x ~@3 x!2 ~@2 x ~ x!2", H: "x!4 ~@2 x!4 ~@2 x!4", I: "x ~ x!6",
  J: "~@4 x ~@3 x!2 ~@6", K: "~@11 x!2 ~@3", L: "~@11 x ~@4", M: "~@4 x ~@6 x!2 ~@3", N: "~@4 x ~@7 x!3 ~",
  O: "~@4 x ~@7 x!2 ~@2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A B@2 C A B@3 A B@3 A B@2 D A B@2 C A B@3 E B@3 E B@3 E B@2 D F G H I F G H I F G J K A B@2 C A B@2 L A B@3 A B@2
  M E B@2 ~ F G H I F G H I F G J K F G F N F G F ~@7 F O P Q P Q P Q P Q R Q P Q R Q P ~ S T U ~ V W X ~ V W Y ~ F G H
  I F G H I F G J K F G Z I F G AA ~@5
>`.pickRestart({
  A: "x!6 ~@2 x!4 ~@2 x!2", B: "~@2 x!4 ~@2 x!4 ~@2 x!2", C: "~@2 x!4 ~@2 x!8", D: "~@2 x!4 ~@2 x!4 ~@4",
  E: "~ x!5 ~@2 x!4 ~@2 x!2", F: "~ x!13 ~@2", G: "x!14 ~@2", H: "x!16", I: "x!10 ~@4 x!2", J: "x!12 ~@4",
  K: "x!2 ~ x!2 ~@3", L: "~@2 x!4 ~@2 x!2 ~@4 x!2", M: "~@2 x!4 ~@2 x!2 ~@6", N: "x!8 ~@2 x!2 ~@4",
  O: "x!8 ~@2 x ~ x ~@3", P: "x!8", Q: "x!7 ~", R: "~ x!7", S: "~@3 x!2 ~ x ~ x ~ x ~ x ~ x ~",
  T: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3", U: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", V: "~@2 x!3 ~ x ~ x ~ x!3 ~ x ~",
  W: "x ~ x!3 ~ x ~ x ~ x!3 ~@3", X: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~", Y: "x ~ x!3 ~ x ~ x ~ x!2 ~@4", Z: "~ x!15",
  AA: "~ x!5 ~@10",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@52 A ~@31 A ~@3 B ~@7 C ~@7 D ~@23 E ~@11 A ~@3 B ~@5 D ~@6>".pickRestart({
  A: "~@11 x ~@4", B: "~@10 x!2 ~@4", C: "~@2 x!6", D: "~@14 x!2", E: "~@3 x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@11 B ~@19 A ~@11 B ~@19 C ~@35 B ~@16>".pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~@10 x!4 ~@2",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B@2 C A B@2 D E F@2 G E F@3 E F@3 E F@2 H E F@2 G E F@3 E F@3 E F@3 E F@3 I@2 ~ J I@2 ~ J I@2 K L E F@2 G E F@2 M
// … 27 more lines

More by LIGABUE