Strudelify

Attraverso me

Celentano

KeyE minorTempo118 bpm
0:00/0:00
// Attraverso me — Celentano
// 118 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
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.

// bass · fretless bass
const bass = note(`<
  ~@11 A B A C A B A C A B A C A B D E A B A B A C A B D E A B A C F@2 G H F I G H J K L M N O P A B A C A B A C A B A C
  A B D E A B A B A C A B D E A B A C F@2 G H F I G H J K L M N O Q A B A C A B A C A B A C A B D E A B A C A B A C D E
  A B A C A B D R
>`.pickRestart({
  A: "e2@3 d2 c2@3 b1", B: "a1@4 a1 b1 a1 g1", C: "a1@7 ~ a1@2 b1@2 a1@2 g1@2", D: "c2@11 ~ c2@4", E: "b1@11 ~ b1@4",
  F: "e2!8", G: "a1!8", H: "d#2!8", I: "e1!8", J: "a1!4 g1!4", K: "f#1!4 d#2!4", L: "e2!4 f#2!4", M: "g2!8",
  N: "f1!4 a1!4", O: "b1!8", P: "b1 f#1 b1 ~@5", Q: "b2@2 b2@2 b2 ~ b1@2 a2@2 b2@2 a2@2 g2@2", R: "b1@11 ~@5",
})).s("gm_fretless_bass").gain(0.3)

// other · trumpet
const trumpet = note(`<
  ~@38 A B ~@8 C@3 D@2 ~@15 E@2 F@2 ~@6 G@2 H I@2 J B ~@8 K@3 L@2 ~@15 M@2 N O@2 ~@17
>`.pickRestart({
  A: "~@3 b2 a3 b3 a3 g3", B: "e3 ~", C: "[~@5 f#4 g4 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 f#4@2 ~]/3",
  D: "[g4@2 e4@4 f#4@4 f#4@3 ~ g4@9 ~@9]/2", E: "[~@2 e4@2 b4@2 b4@2 b4@3 b4@3 b4@4 b4@4 b4@4 a4@5 ~]/2",
  F: "[g4@3 ~ g4@2 g4@2 g4@4 g4@2 b4@4 g4@4 ~@10]/2", G: "[~@2 e4@2 b4@2 b4@2 b4@3 b4@3 b4@4 b4@3 ~ b4@2 b4@4 a4@4]/2",
  H: "g4@2 ~ g4@3 g4@2 g4@3 ~ g4@2 b4@2", I: "[~ g4@2 g4 g4@2 f#4 g4@4 ~@5]/2", J: "~@4 a3 b3 a3 g3",
  K: "[~@10 [c5,f#5]@2 [d5,g5]@2 [e5,a5]@4 [e5,a5]@3 ~ [e5,a5]@4 [e5,a5]@4 [e5,a5]@4 [e5,a5]@4 [e5,a5]@4 [d#5,f#5]@4 ~@2]/3", // Cdim G5 A5 D#m
  L: "[[e5,g5]@2 [b4,e5]@4 [e5,f#5]@4 [b4,f#5]@3 ~ [e5,g5]@10 ~@8]/2", // Em E5 Esus2 B5 Em
  M: "[~@2 g4@2 b4@2 b4@2 b4@2 b4@4 b4@4 b4@4 b4@4 a4@3 ~@3]/2", N: "g4@3 g4@2 ~ g4@4 g4@2 g4@3 ~",
  O: "[b4@3 ~ g4@4 g4@3 ~ f#4 ~ g4@9 ~@9]/2",
})).s("gm_trumpet").gain(0.26)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@10 A B C D E F G H I J K L@4 M@2 N C O P Q@4 R@2 N C N C ~@14 A B C D E F G H I J K L@4 M@2 N C O P Q@4 R@2 N C N C
  ~@14 A S C D E F G H I J K L@4 M@2 T C D E F G H I R@2 T C D E F G U@2
>`.pickRestart({
  A: "~@8 a2@2 b2 ~ a2@2 g2@2", B: "e2@4 e3@2 d3 ~ c3 ~ d3@2 e3 ~ g3@2", C: "~ [e3,a3]@3, a2 ~",
  D: "~@4 e3 ~ d3 ~ [g2,c3]@2 d3@2 ~@2 g3@2, ~@6 e3 ~, ~@13 d3@2 ~", E: "a3 a3@3, a2 ~",
  F: "~@2 e3 d3 [g2,c3] d3 e3 g3", G: "e3 [e3,a3,c4]@3, a2 ~", H: "~@4 e3@2 d3 ~ c3 ~ d3@2 e3@2 [d3,g3]@2",
  I: "e3 ~ [e3,a3]@6, a2 ~", J: "g3@2 ~ [a2,b3] ~@2 e3 b3, [b2,e3]@7 ~ c3@6 ~@2, ~ g3@3, ~@5 c4@2 ~",
  K: "e3 ~ e3@2 ~ c4@3, a3@3 ~@5, ~ e4@7",
  L: "[~@3 [b2,b3] c4 c4@2 ~ a3@2 ~ c4@2 ~ e3 ~@3 g3 [b2,g3,b3] c4 ~@10 c4, [b2,e3]@6 ~@2 c3@6 e4@15 ~ e4@10 ~@2 c4@10 c4@10 ~@2, ~@4 g3@12 e3@8 ~@2 c4@4 b3@6 ~@4 e3@4 ~@2 e4@11 ~ e4@6, ~@10 a3@5 ~ b2@3 ~ c3@3 ~ a3@4 ~@2 a3@2]/4", // B Em E5
  M: "[g3@4 ~@2 e4@4 ~@4 c4@2 ~@4 e3@2 b2 ~@7 a3@2, e3@8 ~@2 e4@8 e4@5 ~@3 f#4@5 ~, c4@3 c4@4 ~ e3@2 ~ b3@4 ~, ~@2 g3@4 ~@2 b2@3 ~ [b2,d#3]@2 d#3@2]/2", // B
  N: "~@4 e3@2 d3 ~ c3 ~ d3@2 e3 ~ g3@2", O: "g3@2 ~ [a2,b3] ~@2 e3 b3, b2@7 ~ c3@6 ~@2, e3 ~@3 g3@12, ~@5 c4@2 ~",
  P: "e3 ~ e3@2 ~ a3@3, a3@3 ~@5, ~ e4@7",
  Q: "[~@3 [b2,b3] c4 c4@2 ~ a3@2 ~ c4@2 c4@2 ~@3 g3 [b2,g3,b3] c4 ~@10 c4, [b2,e3]@6 ~@2 c3@6 e4@15 ~ e4@10 ~@2 c4@10 c4@10 ~@2, ~@2 g3@6 e3@4 ~@4 b2@3 ~ c3@3 ~ a3@4 ~@2 a3@2, ~@20 a3@10 b3@6 ~@4 e3@4 ~@2 e4@11 ~ e4@6]/4", // B Em E5
  R: "[g3@2 ~ e4@2 ~@2 c4 ~@2 e3 b2 ~@3 a3, e3@8 ~@2 e4@8 e4@5 ~@3 f#4@5 ~, c4@3 c4@4 ~ e3@2 ~ b3@4 ~, ~@2 g3@4 ~@2 b2@3 ~ [b2,d#3]@2 d#3@2]/2", // B
  S: "e2@4 e3@2 d3 ~ c3 ~ d3@2 e3@2 g3@2", T: "~@4 e3@2 d3 ~ c3 ~ d3@2 e3@2 g3@2",
  U: "[g3@2 ~ e4@2 ~@2 c4 ~@2 e3 b2 ~@4, e3@8 ~@2 e4@8 e4@5 ~@9, c4@3 c4@4 ~ e3@2 ~@6, ~@2 g3@4 ~@2 b2@3 ~@5]/2",
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.4)

// chords · rock organ
const rock_organ = note("<~@49 A@4 B C@2 ~@13 D E@2 ~@7 D E@2 ~@12 A@4 B C@2 ~@13 D E@2 ~@18>".pickRestart({
  A: "[a5 g5 f#5 d#5 e5 f#5 g5@2, e6@3 b5@5]/4", B: "[f5,c6]", C: "[[f#5,b5]@19 ~@13]/2", D: "~@14 [f4,g4] [a4,b4]",
  E: "[c5@2 ~ d#5, e5@3 ~, ~ b4]/2",
})).s("gm_rock_organ").gain(0.16).pan(0.6)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@41 A@2 B C D A E F G H I J K L M ~@30 A@2 B C D A E F G H I J K L M ~@16 N O P Q R@2 S T U V@2 W X@5 Y
>`.pickRestart({
  A: "[e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  B: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,f#2] [g2,a2,c#3,d3,d#3,e3]", // F5 F#maj7 A7
  C: "[b2,f3,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3,f#4] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] [d3,d#3,e3,f3]", // B B5
  D: "[e2,b2,c3,c#3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // Cmaj7 E5
  E: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f#2,g2,c#3,d3] [g#2,a2,a#2,d#3,e3,f3]", // F5 Dmaj7
  F: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ b2 ~", // B5
  G: "[a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~", // Am C5
  H: "[f#3,c4] ~ [f#3,c4] ~ [f#3,c4] ~ [f#3,c4] [e3,f3] [d#3,b3] ~ [d#3,b3] ~ [d#3,b3] ~ [d#3,b3] ~", // F#dim Fmaj7 G#m
  I: "[e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~", // E5 B5
  J: "[g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~", // G
  K: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f#2,c3,c#3] [g2,g#2,a2,a#2,d3,e3,f3]", // F5 F# Gm7
  L: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", // B5
  M: "[b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [a2,a#2,d#3,e3,f3] c#3 ~@8", N: "~@2 a2 b2 d3 e3 g3 a3", O: "e3@5 ~@3",
  P: "~@4 a3 b3 d4 g3", Q: "a3@15 ~, g3 ~@15", R: "[~@4 g3@2 a3@2 a3 b3 d4@2 a3@2 g3@4 e3@14]/2",
  S: "~@3 e3@2 f#3@2 ~ g3@2 ~ a3@3 b3@2", T: "d4@3 e4@2 g4@2 ~ f#4@2 ~ d4@2 b3@2 ~", U: "d4 e4@15",
  V: "[~@2 a3 b3 d4@2 b3 ~ g4@2 f#4 ~ g4@2 e4@6 g3@2 a3@2 [a3,b3] ~ d4@2 a3@2 g3@2]/2", // Asus2
  W: "e3@5 ~ e3 f#3 g3 ~ a3 ~ b3@2 d4@2",
  X: "[b3@2 g4@2 [d4,f#4]@2 e4@6 [a3,b3] ~ d4@4 b3@2 d4@2 a#3 ~ d4 e4 b4@2 e4@8 f#4@2 ~@2 [b4,e5]@2 f#4@2 ~@2 d5@8 c5 b4 c5@2 b4@2 a4@6 g5@2 d4@2 b4@2 a4@2 g4@2 e4@2 c5@2, ~@19 g4@2 ~ g4@4 ~@14]/5", // D Asus2 E5
  Y: "b4 g4 e4 f#4 ~@4",
})).s("gm_overdriven_guitar").gain(0.19).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@41 A@2 B C@4 D E@4 F G@2 H@8 I@6 J@2 K@8 L@2 M@4 A@2 B C@4 D E@4 F G@2 H@8 I@6 J@2 K@8 L@2 I@6 N@2
>`.pickRestart({
  A: "[e3,b3]/2", B: "[f3,c4]", C: "[f#3 e3@2 [f3,c4], b3@49 ~@15]/4", D: "[f#3,b3]",
  E: "[a3 g3 f#3 d#3 e3 f#3 g3@2, c4@3 b3@5]/4", F: "f3 a3, c4", G: "[b2@8 d#3@9 ~@15, b3@9 ~@7]/2",
  H: "[~@63 e6@63 ~@2, [b3,e4]]/8", I: "[e4@3 f#4 e4@3 f#4 e4@3 f#4, b4]/6", J: "[c5@15 ~@9 f#4@8, e4@3 ~, ~ b4]/2",
  K: "[e4@3 f#4 e4@3 f#4 e4@3 f#4 e4@3 f#4, b4]/8", L: "[c5@2 ~ f#4, e4@3 ~, ~ b4]/2", M: "[b4 b3@3, e4]/4",
  N: "[c5@15 ~ b4@16, e4@3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.4)

// other · electric guitar clean
const electric_guitar_clean = note("<~@10 A ~@44 A ~@44 A ~@25 B ~@8>".pickRestart({
  A: "~@4 a2 b2 a2 g2", B: "~@7 g2",
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@11 A B C D@4 E@2 F@2 G@3 H@3 I J K@2 G@3 H@3 I L I M N O P@3 Q R S@4 T U V A B C D@4 E@2 F@2 G@3 H@3 I J K@2 G@3 H@3
  I L I M N O P@3 Q R S@4 T U V A B C D@4 E@2 F@2 G@3 W@2 A B C D@4 X W@2 J K@2 G@3 Y@2
>`.pickRestart({
  A: "e3@4 e3@2 [a2,d3]@2 e3@2 d3@2 ~ e3 [d3,g3]@2, b2@3 ~ c3@3 ~, ~@2 g3@4 [d3,g3] ~", // D5 G5
  B: "a3@4 ~@2 e3 ~ [a2,d3]@2 b2@2 a2@2 g2@2, a2 ~, e3@3 ~@5, ~@4 [c4,e4]@11 ~, ~@4 a3@7 ~@5", // D5 C
  C: "e3@4 e3@2 [a2,d3]@2 e3@2 d3@2 [d3,g3] e3 g3@2, [e2,b2]@7 ~@9, ~@2 [g3,b3]@2 c3@3 ~", // D5 G5 E5 G
  D: "[a3@4 a3@2 e3 ~ [a2,d3] ~ b2@2 a2@2 g2@2 e3@4 e3@2 [a2,d3]@2 ~@2 d3@2 ~ e3 [d3,g3]@2 a3@4 a3@2 e3@2 [a2,d3] ~ [b2,e3]@2 a2@2 g2@2 e3@4 e3@2 [a2,d3]@2 e3@2 d3@2 ~ e3 g3@2, a2@8 ~@8 e2@8 ~@12 c4@13 ~@3 b3@4 c4@4 ~@4, e3@6 a3@5 ~@5 b2@6 ~@2 [c3,c4]@6 ~@2 a2@8 ~@4 d3@4 [e2,b2]@7 ~ c3@6 ~@2, ~@2 e4@8 [b3,e4]@2 ~@3 c4@3 e4@10 ~@4, ~@4 c4@11 ~@5 g3@8 [d3,g3]@2 ~@2 e3@6 a3@4 ~@18 [d3,g3]@2 ~@2]/4", // D5 G5 D5 E5 D5 C E5 G5
  E: "[[e3,a3]@4 [e3,a3]@2 [e3,a3]@2 a2@2 ~@2 a2@2 g2@2 e3@4 e3@2 [a2,d3]@2 e3@2 d3@2 ~ e3 g3@2, a2@8 d3@3 b3@4 ~ b2@6 ~@2 [c3,c4]@6 ~@2, ~@2 e4@8 g3@3 ~ [d3,g3] ~, ~@2 c4@3 b2 d3@2 e2@4 ~@4, ~@5 [b3,e4] ~@2]/2", // A5 D5 C G5 E5
  F: "[~@6 e3@2 a2@2 b2 ~ a2@2 ~@6 e3@2 [a2,d3]@2 ~ c4@3 ~ e3 g3@2, a2@4 ~@3 g2 e2@4 [g2,c3]@3 ~, ~@4 c4@10 ~ b3@5 [g3,b3]@6 ~@6, ~@2 [a3,e4]@4 ~@2 b2@3 ~@3 [d3,g3] ~, ~@5 e4 ~@2]/2", // D5 C5 G A5 G5
  G: "[a3@4 ~@2 e3@2 [a2,d3]@2 b2@2 a2@2 ~@2 e3@3 ~ [e3,b3]@2 a2@2 ~@2 d3@2 [d3,g3] e3 [d3,g3]@2 [e3,a3]@4 e3@2 [a2,e3]@2 [a2,d3]@2 [b2,e3]@2 a2@2 g2@2, a2@2 ~ d3 ~@7 [d3,b3], e3@4 a3@6 ~@4 g2@2 [e2,b2]@7 ~ [g2,c3]@4 ~@4 a2@6 ~@10, ~@4 e4@16 ~@4 c4@12 e4@11 ~, ~@4 c4@11 b3@5 g3@8 ~@8 [a3,c4]@7 ~@5]/3", // D5 E5 G5 A5 D5 E5 G E5 …
  H: "[g3@4 ~@8 [c3,e3]@2 b3@2 ~@4 [b2,e3]@2 [a2,g3]@2 [d#3,a3]@2 [d#3,a3,b3,f#4]@2 ~@4 [e3,g3]@4 [e3,g3]@2 d3 ~@3 e3@2 d3 e3 [a2,g3]@2, c3@10 c4@4 ~@4 b3@4 b3@4 ~@3 b3@7 b3@4 c4@8, [g2,e3]@3 c4 e3@2 ~@2 [b2,e3]@2 ~@2 b2@2 [b2,d#3,a3,f#4]@2 e2@3 ~ c3@3 ~, ~@2 g3@5 g3@4 ~@8 g3@2 g3@2 ~, ~@3 e4@5 ~@16]/3", // C E5 A7 D#dim B7 Em A7 C …
  I: "[e3,a3]@2 e3@2 a2 b2 a2 g2, a2@2 ~ [d3,b3], ~ e4@3, ~@4 [a3,c4]@7 ~@5", // A5 G Am
  J: "e3@4 e3@2 [a2,d3]@2 e3@2 d3@2 ~ e3 g3@2, e2 ~, b2@3 ~ [c3,c4]@3 ~, ~@2 g3@3 ~ [d3,g3] ~, ~ [b3,e4] ~@2", // D5 C G5 E5
  K: "[~@6 e3@2 a2@2 b2 ~ a2@2 ~@6 e3@2 [a2,d3]@2 ~ c4@3 ~ e3 g3 ~, a2@4 ~@3 g2 e2@4 [g2,c3]@3 ~, ~@4 c4@10 ~ b3@5 [g3,b3]@6 ~@6, ~@2 [a3,e4]@4 ~@2 b2@3 ~@3 [d3,g3] ~, ~@5 e4 ~@2]/2", // D5 C5 G A5 G5
  L: "[e3,g3]@4 [e3,g3]@2 d3 ~@3 e3@2 d3 e3 [a2,g3]@2, e2@3 g3@2 g3@2 ~, ~ b3 c4@2, ~@4 c3@3 ~", // Em A7
  M: "[e3,g3]!2 [b3,e4] ~ g3 [g3,b3]!2 [e3,g3,b3], e2, b2 b2@3, ~@2 [e3,g3]@2 e3@3 ~, ~@3 [b3,e4]@2 e4@3", // Em E5 G Em E5
  N: "[b2,e3,g3]@2 [e3,g3]!3 [b2,e3,g3,b3] [b2,g3,e4] [a2,d3,g3], e2@5 e2@3, b3@3 [b3,e4]@2 ~ b3@2, ~@4 b2@6 ~@2 e3 ~@3", // Em Dsus4 E5
  O: "[a3,c4]@2 [a3,c4]@2 [f3,a3,c4]@2 [c3,f3,a3,c4]@2 [c3,f3,a3]@2 [f3,a3]@2 [c3,f3,a3,c4,f4] ~ [e2,a2,d3,g3,b3]@2, c3@3 ~@5, f3 ~ [c4,f4] ~", // Am F Em7 F5
  P: "[[e2,d#3,a3,b3,f#4] [d#3,a3,b3,f#4] [d#3,b3]!2 [d#3,a3,b3,f#4]!2 [b2,d#3,a3] [b2,g3] [e2,b2,e3] [e2,e3] [e2,e3,g3] [b2,e3,g3] [b2,g3,b3] [g3,b3]!2 [e3,b3] e3 [e3,g3] g3!2 [b2,e3,g3] [b2,e3,g3,b3] [g3,b3,e4] [a2,d3,g3], b2@12 f#4 ~ e4@10 ~@2 e4@4 e4@8 ~@10, ~@4 [a3,f#4]@4 ~@4 b3@8 ~@6 b2@10 [b2,e3]@4 ~@4 [b2,e3] ~@3, ~@8 g3@2 ~@2 e3@3 g3 b3@3 [b3,e4]@2 ~@3, ~@9 b2@2 ~ e2@6 ~@6]/3", // B7 G#m B7 Em E5 E Em G …
  Q: "[f2,c3,f3,a3]@2 ~ f3 [f3,a3,c4]@2 [a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [a2,d3,g3,b3,e4]@2, c4@2 ~ f3 ~@4, ~ [f2,c3,a3] c3@3 c3@2 ~", // F Em7 F
  R: "[d#3,a3,b3,f#4]!3 [b2,d#3,a3,b3] [d#3,a3,b3] [d#3,a3,b3,f#4] [b2,d#3,a3,b3,f#4] [a2,d3,g3,b3], b2@3 f#4@2 ~@3, ~@2 b2 ~", // B7 G
  S: "[[a3,c4,e4]@4 [a3,c4]@2 e3@2 e3@2 [a2,a3]@2 [e3,a3]@2 a2@2 [f#2,a2]@2 a2@2 ~ e3 [a2,e3,a3,c4]@2 [d#3,a3,b3,f#4]@2 [d#3,a3,b3,f#4,a4]@2 [d#3,a3,b3,f#4]@2 [b2,d#3,a3,b3]@2 [g3,b3]@2 [e3,g3,b3,e4]@2 [e3,g3]@2 [e2,b2,e3]@2 f#2@2 [f#2,a2]@2 a2@2 [a2,e3]@2 [g2,e3]@2 [g2,b2,e3] ~ [g2,b2]@2 b2@2 [b2,e3]@2 [g2,b2,e3]@2 [g2,b2,e3]@2 [e2,a2,d3,g3]@2, [e2,a2]@4 g2@3 ~@2 f#2@3 ~@10 f#2@2 ~@3 g2@2 ~@3, e3@3 c4@3 c4@5 ~@4 f#4@2 ~@15, ~@4 e4@5 ~@5 a3@6 ~@16 b3@27 ~, ~@6 a3@4 ~@2 a2 ~@3 e3@4 [a2,a3]@2 ~@2 b2@6 ~@2 b2@6 ~@2 e3@6 ~@6 e3@4 ~@8]/4", // Am A A5 F#m Am B7 G Em …
  T: "[f3,a3,c4]@2 [a3,c4]@2 [f3,a3]@2 [f3,a3]@2 [f3,a3]@2 [f3,a3,c4]@2 [f2,c3,f3,a3,c4,f4] ~ [a2,d3,g3,b3]@2, [f2,c3]!3 ~, ~@3 f4@3 ~@2, ~@3 c4@2 ~@3", // F Am F G F5
  U: "[b2,d#3,a3] [d#3,a3] [d#3,a3,b3] [b2,d#3,a3,b3] [d#3,a3,b3,f#4]!2 d#3 [b2,d#3], [b3,f#4] f#4 ~ [a3,b3,f#4], ~ b2@2 ~ b2@3 ~", // B7 D#dim B7 B B5 B7
  V: "[b2,d#3,a3,b3,f#4] [d#3,a3,b3,f#4]!2 ~@5, ~ b2@2 ~@5", // B7
  W: "[g3@4 ~@8 [c3,e3]@2 b3@2 ~@4 [b2,e3]@2 [a2,g3]@2 [d#3,a3]@2 [d#3,a3,b3,f#4]@2 ~ b3@3, c3@5 c4@2 ~@2 b3@2 b3@2 ~@3, [g2,e3]@3 c4 e3@2 ~@2 [b2,e3]@2 ~@2 b2@2 [b2,d#3,a3,f#4]@2, ~@2 g3@5 g3@4 ~@5, ~@3 e4@5 ~@8]/2", // C E5 A7 D#dim B7 C E5 B7
  X: "[e3,a3]@2 e3 [a2,e3] [a2,d3] [b2,e3] a2 g2, a2@3 ~@3 [d3,b3]@2, ~@4 e4@11 ~, ~@4 [a3,c4]@7 ~@5", // A5 D5 E5 G Am
  Y: "[g3@2 ~@4 [c3,e3] b3 ~@2 [b2,e3] [a2,g3] ~@4, c3@5 c4@2 ~@2 b3@2 b3@2 ~@3, [g2,e3]@3 c4 e3@2 ~@2 [b2,e3]@2 ~@6, ~@2 g3@5 g3@4 ~@5, ~@3 e4@5 ~@8]/2", // C E5 A7 C E5
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.7)

// other · distortion guitar
const distortion_guitar = note("<~@14 A@4 ~@117>".pickRestart({
  A: "[~@13 e6@51]/4",
})).s("gm_distortion_guitar").gain(0.15).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean_2 = note("<A@2 B@7 C@2 ~@124>".pickRestart({
  A: "[~@14 a2 b2, ~@7 e5@4 ~@5, ~@15 [g4,b4]@17, ~@8 d4@7 ~]/2", // G
  B: "[~@78 c3@2 [c3,c#3] ~@11 d3 e3 ~@12 e4@6, c3@10 e4@10 d4@6 e4@10 d4@16 b4@14 g3@15 d3@9 e4@8 a3@4 b3@10, ~@2 g3@14 d3@16 e3@16 e2@12 f#5@8 c4@13 ~@3 d4@12 b2@16, ~@4 c4@14 a3@14 ~@10 e4@12 e5@4 d5@12 b3@12 a3@12 d3@17 ~, ~@6 b3@16 b3@11 ~ b3@4 b3@12 g4@14 c3@10 e4@9 ~@3 b3@14 d4@11 ~]/7", // C#maj7
  C: "[~ e4@31, [e3,a3,c#4]]/2", // A
})).s("gm_electric_guitar_clean").gain(0.12)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@40 A ~@14 B ~@15 C ~@13 D ~@22 C ~@7 E ~@18>".pickRestart({
  A: "~@14 x!2", B: "x", C: "~@7 x", D: "~@8 x!2 ~@6", E: "~@13 x!3",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@19 A B C B C B C B A B A B C B C B C B A B C D A C@12 B ~@9 A B C B C B C B A B A B C B C B E ~ A B C ~ A C@12 B ~@9
  A B C B C B A D ~@8 E ~@3 E ~@5
>`.pickRestart({
  A: "~ x!3", B: "x!3 ~", C: "x!4", D: "x!2 ~@2", E: "x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@13 B C ~@15 D ~@9 B ~@3 E ~@22 F ~@7 G ~@18>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@7 x", C: "~ x!2 ~@5", D: "~@11 x!2 ~@3", E: "~@3 x ~@4", F: "~@5 x ~@2", G: "~@10 x!3 ~@3",
})).gain(0.3)

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

// drums · high tom
const high_tom = s("ht").struct("<~@40 A ~@13 B ~@30 C ~@22 D ~@26>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@10 x!3 ~@3", C: "~@3 x ~@12", D: "~ x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@11 A ~@6 B A ~@5 A ~ A ~ A ~@5 A ~ A ~@3 A ~@14 A ~@2 B A ~@3 A ~@5 A@3 ~ A ~@5 A ~ A ~@2 B A ~@11 A ~@2 A ~@2 B A ~
  A ~ A ~@5 A ~ C ~@4 B A ~@2 B A ~@2 B A ~ A ~
// … 14 more lines

More by Celentano