Strudelify

Viola

Celentano

KeyG majorTempo60 bpm
0:00/0:00
// Viola — Celentano
// 60 bpm, 4/4, key G 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 55 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · electric bass finger
const bass = note(`<
  A B C D E F G H I J K L M F N O P Q K R S T U V W X Y Z AA F N O P Q K R AB F G H I J K L M F N O P Q K AC AD AE@2
>`.pickRestart({
  A: "g1@9 ~ g1 ~ g1@12", B: "c2@10 c2 ~ c2@12", C: "g1@7 ~ g1@2 a1@2 d2@8 d1@4", D: "c2@3 ~ g1@16 d1@2 g1@2",
  E: "c2 g1@5", F: "g1@9 ~ g1 ~ g1@7 ~ g1@2 a1@2", G: "b1@10 f#1 ~ b1@7 ~ b1@2 f#1@2",
  H: "e1@9 ~ e1 ~ e1@7 ~ e1@2 f#1@2", I: "b1@9 ~ b1 ~ b1@7 ~ b1@2 d2@2", J: "c2@9 ~ c2 ~ c2@8 b1@2 a1@2",
  K: "g1@9 ~ g1 ~ g1@7 ~ g1@2 g#1@2", L: "a1@10 e1@2 a1@3 ~ a1@3 ~ a1@2 b1@2", M: "d2@13 ~ e2@2 d2@4 a1@3 ~",
  N: "b1@10 f#1 ~ b1@7 ~ b1@2 d#1@2", O: "e1@9 ~ e1 ~ e1@9 ~ e1@2", P: "b1@9 ~ b1 ~ b1@7 ~ b1@4",
  Q: "c2@5 g1 c2@4 b1 a1", R: "a1@9 ~ a1 ~ a1@7 ~ a1@2 g#1@2", S: "g1@10 g1@2 g1@2 g1 ~ g1@2 g1 ~ g1@2 g1 ~",
  T: "c2@2 ~@2 c2 ~ c2 ~ c2 ~ c2 ~@3 c2 ~ c2@2 c2@2 c2 ~ c2@2",
  U: "g1@2 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 ~@2 g1 ~ g1 ~ g1 ~ g1 ~",
  V: "c2@2 ~@2 c2 ~ c2 ~ c2 ~ c2 ~ c2@2 ~@2 c2@2 c2@2 c2 ~ c2@2",
  W: "g1@2 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 g1 ~ g1 ~ g1@2 g1 ~ g1 ~",
  X: "c2@2 ~@2 c2 ~ c2@2 c2 ~ c2 ~ c2@2 ~@2 c2 ~ c2@2 c2 ~ c2@2",
  Y: "g1@2 ~@2 g1@2 g1 ~ g1 ~ g1 ~ g1@2 ~@2 g1 ~ g1 ~ g1@2 g#1 ~",
  Z: "a1@3 ~ a1 ~ a1@2 a1 ~ a1 ~ a1@3 ~ a1 ~ a1@2 a1@2 b1@2",
  AA: "d2@2 ~@2 d2 ~ d2@2 d2 ~ d2@2 d2@2 d2 ~ d2 ~ d2 ~ d2@2 d2@2", AB: "g1@9 ~ g1 ~ g1@7 ~ g1@2 d1@2", AC: "a1@19 ~@5",
  AD: "~ g1", AE: "[c2@2 g1@21 ~]/2",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC N O P Q R S T AD AE G H I J K L M N O P Q R S ~@4
>`.pickRestart({
  A: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4] [b3,d4,g4] ~", // G Bm G
  B: "[g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4]@3 [g3,c4,e4]!2 ~", // C
  C: "[b3,d4,g4]@3 [b3,d4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4] [b3,d4,g4] ~ [a3,d4,f#4]@3 [a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@3 [a3,d4,f#4] [d4,f#4]@2", // G Bm G Bm G D
  D: "[g3,c4,e4]@3 ~ [g3,b3,d4]@4 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4] ~", // C G
  E: "[g3,c4,e4]@3 ~ [g3,b3,d4]@4 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4] ~ [g3,b3,d4] ~", // C G
  F: "[b3,d4,g4]@2 ~ [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 d4 d4@2 [b3,d4,g4]@3 [d4,g4] [d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4]!2 ~, ~@3 [b3,g4] ~ b3 ~@2", // G G5 G Em
  G: "[b3,d#4,f#4]@3 [b3,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4]@2 [b3,d#4,f#4]@3 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 [d#4,f#4] [d#4,f#4]@2, ~@7 b3", // B B5 B D#m B D#m
  H: "[g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@3 [b3,e4] [b3,e4]@2 [g3,b3,e4]@3 [g3,b3,e4]!2 ~ [g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2, ~@3 g3 ~@4", // Em E5 Em
  I: "[b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4]@2 [b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4] ~ [b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4] ~ [b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4] ~", // B D#m B D#m B D#m B D#m
  J: "[g3,c4,e4]@3 [c4,e4] [c4,e4]@2 [g3,c4,e4]@3 [g3,c4,e4]!2 ~ [g3,c4,e4]@3 [g3,c4,e4]!2 ~ [g3,c4,e4]@3 [g3,c4,e4]!2 ~, ~ g3 ~@6", // C
  K: "[g3,b3,d4]@3 [g3,b3,d4]!2 ~ [g3,b3,d4]@3 [g3,b3,d4]!2 ~ [g3,b3,d4]@3 [g3,b3,d4] [b3,d4] ~ [g3,b3,d4]@3 [g3,b3,d4]!2 ~", // G Bm G
  L: "[a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [c#4,e4]@3 [a3,c#4,e4]!2 ~ [a3,c#4,e4]@3 [a3,c#4,e4] [c#4,e4] ~ [a3,c#4,e4]@3 [a3,c#4,e4]!2 ~, ~@6 a3 ~@17", // A C#m A C#m A
  M: "[d4,f#4]@3 [d4,f#4]!2 ~ [a3,d4,f#4]@3 [a3,d4,f#4] [d4,f#4] ~ [a3,d4,f#4]@3 [a3,d4,f#4] [d4,f#4] ~ [a3,d4,f#4]@3 [a3,d4,f#4] [d4,f#4] ~, a3@5 ~@19", // D
  N: "[b3,d4,g4]@3 [b3,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4]!2 ~ [b3,d4,g4]@3 [b3,d4,g4]!2 ~", // G Em G
  O: "[b3,d#4,f#4]@3 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4] ~ [b3,d#4,f#4]@3 [b3,d#4,f#4] [b3,d#4,f#4]@2", // B D#m B
  P: "[g3,b3,e4]@3 [g3,b3,e4]!2 ~ [g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@3 [g3,b3,e4]!2 ~ [g3,b3,e4]@3 [g3,b3,e4] [g3,b3,e4]@2", // Em
  Q: "[b3,d#4,f#4]@3 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4] ~ [b3,d#4,f#4]@3 [b3,d#4,f#4]!2 ~ [b3,d#4,f#4]@3 [b3,d#4,f#4] [d#4,f#4] ~", // B D#m B D#m
  R: "[g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4]@3 [g3,c4,e4] [g3,c4,e4]@2", // C
  S: "[g3,b3,d4]@3 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]@3 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]@3 [g3,b3,d4]!2 ~ [g3,b3,d4]@3 [g3,b3,d4]!2 ~", // G
  T: "[a3,c#4,e4]@3 [a3,c#4,e4]!2 ~ [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]!2 ~ [a3,c#4,e4]@3 [a3,c#4,e4]!2 ~", // A
  U: "[g3,b3,d4]@3 [g3,b3,d4] [b3,d4] ~ [g3,b3,d4]@3 [g3,b3,d4]!2 ~ [f3,b3,d4]@2 [f3,b3,d4]@2 [f3,b3,d4]@2 [f3,b3,d4]@2 [f3,b3,d4]@2 [f3,b3,d4]@2", // G Bm G Bdim
  V: "[c4,e4,g4]@3 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@3 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4] ~ [c4,e4,g4]@2", // C
  W: "[b3,d4] ~@2 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4] ~ [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2, g4 ~@7", // Bm G
  X: "[c4,e4,g4]@3 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4] ~ [c4,e4,g4]@2 [c4,e4,g4]@3 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2", // C
  Y: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4]!2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4] ~", // G
  Z: "[c4,e4,g4]@3 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@3 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2", // C
  AA: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,g4] ~@2 [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2, ~@4 d4 ~@3", // G Em G
  AB: "[c#4,e4,a4]@3 [c#4,e4,a4] [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4,a4]@3 [c#4,e4,a4] [c#4,e4,a4]@2 [c#4,e4,a4] ~ [c#4,e4,a4]@2 [c#4,e4,a4]@2", // A
  AC: "[d4,f#4,a4]@3 [d4,f#4,a4] [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@3 [d4,f#4,a4] [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4] ~", // D
  AD: "[g3,b3,d4]@3 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]@3 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]@3 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]@3 [g3,b3,d4]!2 ~", // G
  AE: "[b3,d4,g4]@2 ~ [b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@3 d4 d4@2 [b3,d4,g4]@3 [d4,g4] [d4,g4]@2 [b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2, ~@3 [b3,g4] ~ b3 ~@2", // G G5 G Em
})).s("gm_acoustic_guitar_steel").gain(0.23).pan(0.7)

// chords · brass section
const brass_section = note("<~@21 A B C B C B D ~@25 E@2>".pickRestart({
  A: "~@6 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~@7 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,g4] ~, ~@11 e4", // C C5
  B: "~@6 [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~@7 [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~", // G
  C: "~@6 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~@7 [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  D: "~@6 [c#4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~@7 [c#4,e4,g4] ~ [c#4,e4,g4] ~ [c#4,e4,g4] ~", // C#dim
  E: "[[e4,g4,c5] [d4,g4,b4]@7 ~@4]/2", // C G
})).s("gm_brass_section").gain(0.28).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note("<~@13 A B@2 C ~@38>".pickRestart({
  A: "~@19 b3@5", B: "[d#4@23 g4@13 e4@6 g4@6]/2", C: "f#4@17 ~@7",
})).s("gm_string_ensemble_1").gain(0.31).pan(0.2)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@3 B@2 C@4 D@3 E F@4 G H I J K@6 L@2 F@4 G H I ~ C@4 D@3 E F@4 G H ~ M@3
>`.pickRestart({
  A: "[[d3,b3,b4]@2 [e3,c4,c5]@2 [b3,b4] [f#3,a3,a4], g3@5 ~, ~@2 d3]/3", // G C B F#m
  B: "[[e3,c4,c5] [d3,b3,b4]@5 [e3,c4,c5] [d3,b3,b4]@5, g3]/2", C: "[[d4,g4] [d#4,f#4] [e4,g4] [d#4,f#4], b3]/4",
  D: "[[c4,e4] [b3,d4] [c#4,e4], g3@71 ~]/3", E: "[a3,d4,f#4]", F: "[[d4,g4] [d#4,f#4] [g3,e4] [f#3,d#4], b3]/4",
  G: "[g3,c4,e4]", H: "[b3,d4,g4]", I: "[a3,c#4,e4]", J: "g3 f3, [b3,d4]",
  K: "[c5@2 e5 c5 ~@2 g5 d5 e5@2 g5 e5 [d4,b4,d5]@4 ~@3 e5 d5@2 g5 d5, g4@143 ~, e4 [d4,b4] [e4,c5] ~ [e4,c5] [d4,b4]]/6", // G C G
  L: "[[e4,c#5,e5] [f#4,d5,f#5], a4]/2", M: "[~@13 [b3,d4]@12 [c4,e4]@4 [b3,d4]@41 ~@2, ~@13 [g3,g4]@58 ~]/3",
})).s("gm_string_ensemble_2").gain(0.12)

// chords · piano
const piano = note(`<
  A B C D E F G H I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC N O P Q R S AD AE G H I AF@2 K L M AG O P Q R AH AI
  AJ@2
>`.pickRestart({
  A: "b4 d5 ~@9 d5, g2@18 g2@5 ~, a#4 ~@3 d4@20, ~ d3@3, ~@5 [a#4,b4]", // Bmaj7
  B: "d#5 ~@21 c5@2, c3@9 [d#5,e5] d5@2, e5 g3@3, ~ g5@11, ~ g4@5", // Emaj7
  C: "b4@2 d5@2 ~@2 d3@5 ~ a4@2 d5@2 d4@8, g2@11 ~ d2@11 ~, a#4 ~@3 d4@8 g#4 ~@11",
  D: "[c3,e4,g4,c5]@3 ~ [g2,d4,g4,b4]@19 ~", E: "[c3,e4,g4,c5] [g2,d4,g4]@4 ~, ~ b4@5",
  F: "~@3 d3, [d4,g4], g2!2, b3@5 ~@7, ~@3 g3@7 ~@2", G: "a3@7 ~@13 [d#4,f#4]@4, d#4@5 ~, b2!2, ~@5 a3@3 ~ f#3@3",
  H: "~@2 b2@4 e3@4 b2@2 ~@3 g3@3 e3@6, [b3,g4], e2@11 ~ e2@12", I: "a3@4 a3@2 a3@2 ~ f#3@2 a3, d#4, b2@12 b2@11 ~",
  J: "[~@2 g3@4 ~@2 [d#4,g4] ~ [d4,g4]@2 ~@8 c4@3 ~ b3@6 ~@9 [a#4,d5] ~@4 a4@2 g4 ~, c2@11 ~ [c2,d4]@11 ~ d4@8 b3@4 g2@11 ~, [c4,e4]@6 c3@6 ~@6 c3@5 ~ g2@10 d4@5 b4@2 ~@7, ~@4 e4 ~ g4@14 ~@4, ~@15 g3@5 ~ [g3,b4,d5]@3]/2", // D# G5 A# Csus2 C G
  K: "~@10 g3@2 [g3,c#4]@4 ~@4 g3@3 a2, [a2,c#4]@12 a2@6 a2@5 ~, ~@3 g3@7 ~@6 [c#4,e4]@7 ~, ~@6 e3@17 ~, ~@4 g3 ~", // Gdim A C#m
  L: "a3@6 ~@2 a3@2 a2@2 [a4,d5]@4 [d3,g4,d5] ~ f4 ~ a4@2 d4 ~, [d2,d4,f#4]@11 ~ d2@11 ~, ~@6 d3@5 ~ g#4 ~@5 d5@5 ~, ~@19 f#4@4 ~", // D5 G5 D
  M: "~@11 b3, g2@3 b3@2 g3, [b3,d4,g4] [d4,g4], ~ d3@3, ~@5 g3@4 g2@3", // G G5
  N: "a3@6 ~@2 a3 ~@7 a3@2 a3@4 a3@2, d#4@3 ~, b2@10 a3@5 ~@3 [f#3,d#4,f#4]@6, ~ f#3 b2@2", // D#m
  O: "~@2 g3 ~ g3@2 ~ [a#3,e4] a3 ~@2 g3, [e2,g4] e2, b3@10 ~@4 a3 ~@9, ~@2 b2@4 ~@3 [b2,a3,e4]@3, ~@3 e3@3 ~@4 e3@2", // A#dim Em Esus4
  P: "~@7 [a3,d#4]@2 ~@2 a4, d#4@7 b4@5, b2!2, a3@4 ~ a3@2 ~@3 g4@2, ~ f#3@2 [f#3,a3,d#4,f#4]", // Adim D#dim
  Q: "~@4 g3@2 ~@2 [g3,g4]@4 ~@8 g3 ~ [g3,c4,e4]@2, c4@11 ~, c2@11 ~ [c2,g3]@8 ~@4, e4@4 ~@2 e4@5 ~, ~ c3 ~ c3", // G C C5
  R: "~@8 g4@4 [b3,g4]@3 ~ [a#3,d4]@2 ~@4 g3@2, [g3,d4]@15 ~ a3 ~@7, [g2,b3] g2, ~@2 d3@3 ~ [d3,a3,d4]@2", // Em A# G5 G D5
  S: "g3@3 e4@3 ~@4 g3 c#4, [a2,c#4]@12 [a2,c#4,e4]@11 ~, ~@6 e3@12 e3@5 ~, ~@4 g3 ~", // A
  T: "~@4 b3 d3 ~ g4 [b3,f4,g4]!4, [g2,d4]@11 ~ g2@12, b3@4 ~ d4@7, ~@2 d3@3 [b3,g4]@2 ~ g3@4, ~@6 [g3,g4]@5 ~@3 d3@10", // G7 G5 Em G
  U: "g3@3 ~ g3@2 ~@2 g3@2 c4@2 g3@3 ~ g3 ~ [g3,g4]@2 e4@2 g3 ~, [c2,e4]@11 ~ [c2,c4,e4]@7 ~@5, c4@3 ~@5, ~@6 c3@6 ~@6 [c3,c4]@5 ~", // G C
  V: "a3 ~@3 g3@2 ~@2 g3@2 b3@2 [g3,g4]@4 d4@2 g3 ~@3 d4@2, [g2,d4] [g2,b3], b3@9 ~@11 g3@4, ~ d3 ~ d3", // G G5 G
  W: "g3@3 ~ g3@2 ~@2 [g3,g4]@2 e4@2 g3@3 ~ g3@2 ~@2 [g3,c4,g4]@2 d4@2, [c2,c4]@12 [c2,c4,e4]@7 ~@5, e4 ~@2, ~ c3 ~ c3", // G C5 C
  X: "g3@5 ~@3 g3@2 d4@2 ~@2 [d3,d4,d5]@2 ~@6 g4@2, [g2,b3]@11 ~ g2@6 d4@6, d4@8 ~@6 a4 ~@2 a4@3 g2@4, ~@3 d3@3 ~@2 g3@4, ~@9 d5@2 ~", // D G
  Y: "d4@4 e4@2 ~@4 g3@2 ~@4 g3 ~ [a3,d4] ~ d4 ~ c3@2, [c3,g4]@6 [c2,c4,g4]@11 ~ c2@3 d4@2 ~, ~@12 c3@6 a#3@2 a3@2 g3 ~", // D5 C5
  Z: "g3@3 ~@3 g3 ~ c4@2 b3@2 g3@4 d4@2 g3 g3@3 d4@2, g2@11 ~ g2@10 ~@2, d4@8 c#4 ~@15, ~@6 g4@11 ~@7, ~ d3 ~ [d3,b3,g4]", // G
  AA: "[g3,c#4,e4]@4 [g3,c#4,f#4] ~ g3@3 ~ g3@2 ~@2 g3@2 c#4@2 e4@2 g3@2 e4@2, a2@11 ~ a2@12, ~@2 c#4@3 ~@3, ~@6 [e3,e4]@7 ~@5 [e3,c#4]@6", // C#dim F# E C#m
  AB: "a3@3 ~ a3@2 ~@2 [a3,d4,a4]@2 a2@2 a3 ~ a2@2 a3 ~ a3 ~ a2@2 [a3,d4,f#4] ~, d2@11 ~ d2@11 ~, [d4,f#4]@8 ~@2 f#4 ~ d4@6 [d4,f#4]@4 ~@2, ~@3 d3@2 ~ f#4@2 ~@4, ~@14 a3 ~ d3@4 a3 ~@3", // D5 D
  AC: "~@11 b3, ~ d3@3, ~@5 g3@4 g2@3, ~ [d4,g4], ~@3 b3@2 g3", // G5
  AD: "~@11 d4, g4@5 b3, d4@3 g3, g2 g3 g2@2, b3@2 d3@3 b3@3 d3@4", AE: "~@3 d3, ~@3 g3@7 ~@2, ~ g2",
  AF: "[~@2 g3@4 ~@2 [e4,g4]@2 [d4,g4]@2 ~@8 c4@3 ~@16 [a#4,d5] ~@4 a4@2 g4 ~, c2@11 ~ [c2,d4]@11 ~ d4@8 b3@8 ~@2 [g3,b4,d5]@6, [c4,e4]@6 c3@6 ~@6 c3@5 ~ g2@10 d4@6 ~@8, ~@8 d#4 ~@3 g4@24 g2@11 ~, ~@24 b3@6 g3@9 b4@2 ~@7]/2", // Em G5 A# Csus2 G C
  AG: "a3@6 ~@2 a3 ~@7 a3 ~ a3@4 a3@2, d#4@3 ~, b2@10 a3@5 ~@3 [f#3,d#4,f#4]@6, ~ f#3 b2@2", AH: "[a2,g3,c#4,e4]@2 ~",
  AI: "~@6 g3@3 ~@2 d4, ~ [g2,b3,g4], ~@6 d4@5 ~, ~@3 d3, ~@5 g3", AJ: "[[c3,g3,c4,e4]@4 [g2,g3,b3,d4]@43 ~]/2",
})).s("gm_piano").gain(0.37).pan(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  A B ~@3 C D E F ~ G ~ H ~@2 I ~@3 J K ~@4 L M ~@4 I ~@3 J ~ C D E F ~ G ~ H ~@2 I ~@7
>`.pickRestart({
  A: "~ g3", B: "~ c4", C: "~@5 g3, ~@5 b3@7", D: "~@8 a3 ~@7 a3@6 a3 ~, ~ f#3@2 ~", E: "~@8 g3@3 ~@9 g3@4",
  F: "~@8 a3@3 ~, ~ f#3@2 ~", G: "~@2 d3 ~@9", H: "~@4 a2@2 ~@8 a2@2 ~@2 d3@5 ~", I: "~@5 b3 ~@6", J: "~@5 g3@3 ~@4",
  K: "~@7 [b3,f4] ~@4", L: "~@14 g3 ~@9", M: "~@4 g3 ~@19",
})).s("gm_piano").gain(0.21).pan(0.3)

// other · distortion guitar
const distortion_guitar = note("<~@37 A B C D E F G H ~@10>".pickRestart({
  A: "b4@4 d4 g4 b4@5 c5", B: "b4 a4@6 a4", C: "g4@2 e4@2 b3 e4 g4@2 a4@3 g4", D: "f#4",
  E: "e4@8 f#4@2 g4@2 f#4 e4 d4@6 e4@2 d4@2", F: "d4@3 ~ d4@4 g4@3 ~ g4@7 g4 a4 b4@2 ~",
  G: "[a4,b4] ~ g4@7 a4@2 ~ b4@4 a4@6 b4@2", H: "a4@23 ~",
})).s("gm_distortion_guitar").gain(0.54).pan(0.4)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@8 A@2 ~@4 A ~ B ~@2 B C ~@9 A ~ B ~@2 B ~@4 A@2 ~@4 A ~ B ~@6>".pickRestart({
  A: "~@5 x ~@6", B: "~@11 x", C: "~@5 x!2 ~@5",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@8 [~@3 x] ~@31 [~@3 x] ~@14>").gain(0.4)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~@10 x!2] ~@26>").gain(0.64)

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

stack(
  bass, acoustic_guitar_steel, brass_section, string_ensemble_1, string_ensemble_2, piano, piano_soft,
  distortion_guitar, kick, kick_soft, snare, low_tom, hihat, open_hat, mid_tom, crash
)

More by Celentano