Strudelify

L'Aurora

Ramazzotti

KeyF♯ majorTempo64 bpm
0:00/0:00
// L'Aurora — Ramazzotti
// 64 bpm, 4/4, key F# 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 83 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
setcpm(64/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(`<
  ~@4 A B C D E F G H I J C D E F G K L M N O P Q R S T R U V W X Y Z AA A B AB AC AD AE AF AG L M AH AI AJ@2 AK@2 AL AM
  AN AO AP AQ Q R O AR AS AT AP AQ Q R O AR AU AP AQ Q R O AR AV AP AQ Q AW
>`.pickRestart({
  A: "b1 a#1", B: "g#1 f#1", C: "e1 d#1", D: "c#1 b0", E: "f#2@15 ~", F: "f#2@7 b1", G: "c#2", H: "b1@7 f#2",
  I: "b1@3 f#2 a#1@4", J: "g#1@3 d#2 f#1@4", K: "b1 a1", L: "g#1@5 g#1 c2 d#2 g#2@8", M: "c#2 b1", N: "f#1@13 ~ g#2@2",
  O: "b1 f#1", P: "c#2@7 g#1 c#2 ~ c#2@6", Q: "b1@5 ~ b1@2 f#1@5 ~ f#1@2", R: "c#2@7 g#1 c#2 ~ c#2@3 ~ c#2@2",
  S: "f#1@7 c#1 f#1 ~ f#1@5 ~", T: "f#1@7 c#1 f#1 ~ f#1@3 ~ e2 d#2", U: "b1@8 ~ e3 d#3 c#3 b2 g#2 d#2 c#2",
  V: "b1@4 c#2@2 g#2@2 f#2@5 ~ e2 d#2", W: "c#2@7 g#1 c#2 ~ c#2@3 ~ c#2 c2", X: "b1@5 ~ g#1 g1 f#1@5 ~ f#1@2",
  Y: "c#2@7 g#1 c#2 ~ c#2@3 ~ d#2@2", Z: "e2@7 ~ f#2@5 ~ f#2@2", AA: "b2@7 f#2", AB: "e1@8 d#1@6 d#1 f#1", AC: "c#1 b1",
  AD: "f#2!2", AE: "f#2@4 f#2@2 e2 b1", AF: "c#2@6 ~ g#1 c#2@8", AG: "b1@6 f#1 b1 a1@6 f#1 a1",
  AH: "f#1@8 f#1@3 ~ f#1@2 f#1@2", AI: "e1@8 f#1 ~ f#1@6",
  AJ: "[g#1@6 f#1 g#1 ~ f#1 g#1@4 c#2@9 ~ c#2 ~ c#2@4 f#1@2]/2",
  AK: "[g#1@7 g#1 ~ f#1 g#1@4 c#2@9 ~ c#2 ~ c#2@4 f#1@2]/2", AL: "g#1@7 g#1 f#1!2 f#1@5 f#1",
  AM: "c#2!2 c#2@5 c#2 b1!2 b1@5 b1", AN: "f#1@4 f#1@2 f#1@3 f#1@2 f#1 a#1 b1 c#2@2",
  AO: "f#1@4 f#1@3 f#1 f#1@2 f#1@2 f#1 ~ f#1@2", AP: "b1@4 c#2 f#2 f#2@2 f#1@4 f#1@2 e2 d#2",
  AQ: "c#2@7 g#1 c#2 ~ c#2@3 g#1 c#2 g#1", AR: "c#2@7 g#1 c#2 ~ c#2@2 c#2@2 d#2@2", AS: "e2@8 f#2 ~ f#2@6",
  AT: "b1@5 e2 b2 e3 d#3 b2 f#2 e2 d#2 f#1 g#1 f#1", AU: "e2@7 e2 f#2 ~ f#2@3 f#1 b1 c#2",
  AV: "e2@8 f#2@2 f#2 e2 d#2 f#1 g#1 f#1", AW: "c#2@7 g#1 c#2 ~ c#2@3 ~@3",
})).s("gm_fretless_bass").gain(0.52)

// other · string ensemble 1
const string_ensemble_1 = note("<~@48 A B C B C D E F G ~@26>".pickRestart({
  A: "~@2 b3 ~ e4 ~ b3 ~@3 c#4 ~ f#4 ~ c#4 ~", B: "~@2 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4 ~",
  C: "~@2 g#3 ~ c#4 ~ g#3 ~@3 g#3 ~ e4 ~ c#4 ~", D: "~@2 f#4 ~@3 f#4 ~@3 d#4 ~@3 d#4 ~",
  E: "~@2 c#4 ~@3 c#4 ~@2 f#3 b3 f#3 ~ f#3 b3 f#3", F: "~ a#3 c#4 f#3 ~ a#3 c#4 f#3 ~ a#3 c#4 f#3 a#3 b3 c#4 ~",
  G: "~ a#3 c#4 f#3 a#3 b3 c#4 ~@2 a#3 c#4 f#3 a#3 b3 c#4 ~",
})).s("gm_string_ensemble_1").gain(0.31)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@16 A@3 B C D E F G F G ~@2 G ~ F G F H@2 ~@5 I@3 J K ~@11 L@2 M@2 N O@3 P@2 M@2 N Q@4 M@2 N Q@4 R@2
>`.pickRestart({
  A: "[a#3 a3 [g#3,e4], c#4, f#3@2 ~]/3", B: "[b3,d#4] [a3,c#4]", C: "[g#3,c4]", D: "c#4 b3", E: "f#3", F: "f#5",
  G: "g#5", H: "[g#5@3 ~]/2", I: "[a#3 a3 [g#4,e5], c#4, f#3@2 ~]/3", J: "[b3,d#4,d#5] [a3,c#4,c#5]", K: "[g#3,c4,c5]",
  L: "[b5 ~ [e4,g#5]@2, [f#4,f#5] ~, ~ c#6@3]/2", M: "[d#6 ~ [g#4,g#5]@2, [f#4,f#5] ~, ~ c#6@3]/2",
  N: "b5 a#5, [f#4,f#5]", O: "[[g#5,g#6]@2 [e5,b5] [a#4,c#6] [f#4,d#6]@2, g#4 f#5]/3",
  P: "[b5 ~ [e4,g#5]@2, f#4, f#5 ~@7 c#6@24]/2", // E
  Q: "[[g#5,g#6]@2 [e5,b5] [a#4,c#6] b5 ~ [e4,g#5]@2, g#4@3 f#5@3 ~@2, ~@2 f#4 ~, ~@5 c#6@3]/4", // G# E5 A#m E
  R: "[d#6@2 ~@2 [g#4,g#5]@3 ~, [f#4,f#5] ~, ~@4 c#6@11 ~]/2", // G# F#
})).s("gm_string_ensemble_2").gain(0.21)

// bass · piano
const bass_2 = note("<A B C D A E F G H I J D A E F G H I J K L ~@16 A E F G H I J K L ~@37>".pickRestart({
  A: "b1 a#1", B: "g#1@8 f#1@6 ~ f#1", C: "e1 f#1", D: "b1@15 ~", E: "g#1@8 f#1@5 f#2 ~@2", F: "e2 d#2", G: "c#2 b1",
  H: "f#2@15 ~", I: "f#2@7 b1", J: "c#2", K: "b1 a1", L: "g#1@7 ~",
})).s("gm_piano").gain(0.34).pan(1)

// chords · pad warm
const pad_warm = note("<~@12 A@2 B C D@2 E F@2 G@4 H@8 I@4 J@3 K L@3 M@2 N@8 O@7 P@4 Q@14 R@4>".pickRestart({
  A: "d#4/2", B: "e4@2 d#4 f#4", C: "e4 d#4", D: "[c#4@15 d#4]/2", E: "e4", F: "[d#4@8 c#4@11 ~ c#4@4 c4@8]/2",
  G: "[e4@16 f#4@15 [b3,d#4]@8 a#3@8 e4@16 [b3,d#4], c#4@32 ~@7 c#4@24 ~]/4", // B
  H: "[~@7 a#3@8 e4@16 a#3@16 a3@14 d#4@2 e4@16 [b3,d#4]@24 a#3@8 e4@16 [b3,d#4], ~@7 c#4@72 ~@24 c#4@24 ~]/8", // B
  I: "[~@7 a#3@8 e4@16 [g#3,b3]@8 a#3@8 b3@16 ~, ~@7 c#4@24 ~@8 f#3@24 ~]/4", // G#m
  J: "[~@8 e4@2 d#4 f#4, d#4@2 ~, ~ b3@3]/3", K: "e4 d#4, c#4", L: "[c#4@15 ~ e4@8, ~@15 d#4 ~@8, ~@31 g#3@17]/3",
  M: "[d#4@8 c#4@11 ~ c#4@4 c4@8, f#3 ~]/2",
  N: "[[g#3,e4]@16 b3@7 a#3@8 [b3,e4]@8 [a#3,c#4]@8 [b3,d#4]@16 [c#4,e4]@16 [b3,d#4]@16 [c#4,e4]@16 [b3,d#4]@16 [c#4,e4], c#4 ~@3, ~ f#4 ~@6]/8", // C#m E5 A#m B C#m B C#m B …
  O: "[~@7 [b3,d#4]@8 b3@16 a#3@16 [b3,d#4]@8 a#3@8 g#3@16 [b3,d#4]@8 a#3@8 g#3@16 [b3,d#4], ~@15 c#4@32 ~@8 c#4@24 ~@8 c#4@24 ~]/7", // B
  P: "[~@7 f#4@8 g#3@16 [b3,e4]@8 [a#3,c#4]@8 [f#3,d#4]@16 [b3,d#4], ~@7 c#4@24 ~@33]/4", // E5 A#m D#m B
  Q: "[~@7 a#3@8 g#3@16 [b3,d#4]@8 a#3@8 g#3@16 [b3,d#4]@8 f#4@8 g#3@16 [b3,e4]@8 [a#3,c#4]@8 [b3,d#4], ~@7 c#4@24 ~@8 c#4@24 ~@8 c#4@24 ~@17]/7", // B E5 A#m B
  R: "[~@7 a#3@8 g#3@16 [b3,d#4]@8 a#3@8 g#3@13 ~@4, ~@7 c#4@24 ~@8 c#4@20 ~@5]/4", // B
})).s("gm_pad_warm").gain(0.21).pan(0.2)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@27 A B@2 C@3 D E F ~@21 G@2 D E G@2 F ~ G@2 D E G@2 F G@2 D E G@2 F G@2 D E
>`.pickRestart({
  A: "~@14 f#2 g#2", B: "[a2@12 ~ f#3 b3@8 ~@10]/2",
  C: "[~@8 d#3 e3 f#3 d#3 b3 c#4 b3@6 c#3@2 b2@2 c#3@16 c#4@8, ~@3 f#3@2 ~@7]/3", D: "~@4 b2 c#3 c#3@2 c#3@8",
  E: "~ g#3 e4@4 ~@2", F: "g#3@5 ~ g#3@2 ~@2 e4@6, ~ g#3", G: "[~@2 c#3 b2 c#3@8 c#4@4]/2",
})).s("gm_distortion_guitar").gain(0.44).pan(0.1)

// other · electric guitar muted
const electric_guitar_muted = note("<~@37 A B C D A E C F G ~@37>".pickRestart({
  A: "~@3 f#3!4 ~@4 f#3 g#3 f#3!2 ~", B: "~@3 g#3!4 ~@4 f#3 g#3 f#3!2 ~", C: "~@3 e3!3 ~@5 b2 c#3@2 b2 ~",
  D: "~@3 c#3!3 ~@5 b2 b2@2 c#3@2", E: "~@2 f#3!4 ~@5 f#3 g#3 f#3!2 ~", F: "~@3 f#3!4 ~@4 f#3!4 ~",
  G: "~@11 f#3 g#3 f#3!2 ~",
})).s("gm_electric_guitar_muted").gain(0.17).pan(0.2)

// other · lead 3 calliope
const lead_3_calliope = note("<~@19 A B C ~@22 A B C ~@36>".pickRestart({
  A: "~@2 c#5 ~", B: "c5@2 a5@2 g#5@2 ~ f#5", C: "e5 ~@3",
})).s("gm_lead_3_calliope").gain(0.2).pan(1)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@12 A B C@2 ~ D E ~@2 F G H I H I J K L M H I H I N O P Q R S T D U V W F G X Y Z Y Z AA AB AC@2 H I H I H AD AE AF
  AG I AG I AG AD N H I H I AG AD N H I H AH
>`.pickRestart({
  A: "d#4@2 ~ d#4@5 ~@3 d#4@5, b3, b2 a#2, f#3 ~ f#3@7 d#3@6 ~, ~@5 f#3@3",
  B: "~@3 d#4@5 f#3 f#3@6 ~, g#2@7 ~@9, ~ d#3@7 ~@8, ~@2 g#3@6 ~ g#3 ~@6",
  C: "[~@12 f#3@8 ~@6 c#4 ~@3 b3@2, ~@9 d#3@12 ~@7 g#3@4, ~@10 f#3@2 ~@15 c#4@5, ~@11 d#4@9 ~@6 e4@6, ~@29 e3@3]/2",
  D: "[c#3,f#3,a3,c#4]@15 ~", E: "~@10 g#3@5 ~, ~@7 g#3@2 c#4@6 ~, ~@8 e4@7 ~",
  F: "[c#3,g#3,c#4,e4]@7 ~ [c#3,g#3,c#4]@6 ~@2", G: "[c#3,f#3,b3,c#4]",
  H: "[b3,d#4,f#4,b4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]!2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // B F#
  I: "[c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]!2 [c#4,e4,g#4]@3 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]", // C#m
  J: "[a#3,c#4,f#4]@2 [a#3,c#4]@2 [a#3,c#4,f#4] ~ [a#3,c#4,f#4]!2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // F# A#m F#
  K: "[a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]!2 [a3,c#4,f#4]@3 [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]", // F#m
  L: "[c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]!2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]!2", // C#m
  M: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]!2 [b3,d#4,f#4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]", // B
  N: "[g#3,b3,e4]@2 [g#3,b3]@2 [g#3,b3,e4] ~ [g#3,b3,e4]!2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // E G#m E F#
  O: "[b3,e4,f#4]@5 ~@3 d#4 ~@7, f#3@4 ~ f#3@4 ~@7, ~@6 b3@3 ~@7, ~@7 e4@2 ~@7", P: "[b2,f#3,b3,d#4]",
  Q: "~@3 g#3 ~@3 f#3, ~ d#3@7 f#2@8, ~@2 g#3@3 b3@3 ~ c#3@7, ~@3 d#4@5 ~@2 f#3@3 b3@3, ~@11 d#4@5",
  R: "e2@2 ~ f#3, ~@9 d#3@7, ~@5 f#3 ~@2, ~@11 d#4@5",
  S: "~@3 g#3 ~@3 g#3, ~ c#3@7 b2@8, ~@2 g#3@3 c#4@3 ~@2 g#3@3 c#4@3, ~@3 e4@5 ~@3 e4@5",
  T: "~@6 f#3@2 ~@6 f#3 ~, f#2@7 ~ f#2@7 ~, ~ c#3@6 ~@2 c#3@6 ~, ~@2 f#3@2 ~ a#3@3 ~@2 f#3@3 a#3@2 ~, ~@3 c#4@5 ~@3 c#4@4 ~",
  U: "~@11 g#3@5, ~ f#4, ~@9 e4@7, ~@5 c#4@3", V: "~@3 f#3 ~@2 f#3@2 ~@3 e3 ~@2 e3@2, ~ d#4 ~ c#4, ~@5 b3@3 ~@5 a3@3",
  W: "~@3 d#3 ~@4 d#4@5 ~@3, ~@4 c4@2 g#3@7 ~@3, ~@5 d#3@8 ~@3, ~@7 c4@6 ~@3",
  X: "[e3,g#3,b3,e4]@2 [e3,g#3,b3]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2 [a#3,c#4,f#4]!3 ~ [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // E F#
  Y: "[g#3,b3,d#4]@2 [g#3,b3,d#4]@2 [g#3,b3,d#4]@2 [g#3,b3,d#4]!5 ~ [g#3,b3,d#4]@2 [g#3,b3,d#4]!2", // G#m
  Z: "[g#3,c#4,e4]@2 [g#3,c#4]@2 [g#3,c#4,e4] ~ [g#3,c#4,e4]!5 ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]!2", // C#m C#5 C#m
  AA: "[g#3,b3,d#4]@2 [g#3,b3,d#4]@2 [g#3,b3,d#4]@2 [g#3,b3,d#4]!2 [f#3,b3,d#4]!3 ~ [f#3,b3,d#4]@2 [f#3,b3,d#4]!2", // G#m B
  AB: "[g#3,c#4,e4]@2 [g#3,c#4]@2 [g#3,c#4,e4] ~ [g#3,c#4,e4]!2 [g#3,b3,d#4]!3 ~ [g#3,b3,d#4]@2 [g#3,b3,d#4]!2", // C#m C#5 C#m G#m
  AC: "[a#3,c#4,f#4]!3 ~ [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!5 ~ [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // F#
  AD: "[c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]!2 [c#4,e4,g#4]@3 [c#4,e4,g#4]@2 [c#4,e4,g#4]@3", // C#m
  AE: "[e3,g#3,b3,e4]@2 [e3,g#3,b3]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // E F#
  AF: "[b3,d#4,f#4,b4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]!2 [d#4,f#4,b4]@2 [d#4,f#4,b4]@2 [d#4,f#4,b4]@2 [d#4,f#4,b4]!2", // B
  AG: "[d#4,f#4,b4]@2 [d#4,f#4]@2 [d#4,f#4,b4] ~ [d#4,f#4,b4]!2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // B D#m B F#
  AH: "[c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]!2 [c#4,e4,g#4]@3 [c#4,e4,g#4]@2 ~@3", // C#m
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.2)

// chords · piano
const piano = note(`<
  A@2 B@4 C D E F G@2 H@2 C D E I J K L M N O P O P Q R P S O P O T U V W@2 C D E I J X L M Y Z AA P AA P AB AC Q AD O P
  O P O AE AF AG O P O P O AE AF O P O P O AE AF O P O AH
>`.pickRestart({
  A: "[[d#4,f#4]@4 ~@4 [d#4,f#4]@4 ~@14 f#3 ~ c#4 ~ [b3,f#4] ~, b3@16 [b3,d#4,f#4]@8 b3@5 c#4@2 ~, ~@2 [d#4,f#4]@2 a#3@11 ~, ~@6 f#3@8 f#3@4 f#3@8 ~ f#3@3 ~@2, ~@6 [d#4,f#4]@2 ~@4 [d#4,f#4]@2 [d#4,f#4] ~]/2", // D#m B5 B D#m
  B: "[~@12 c#4@4 ~@8 d#4@8 [b3,d#4,f#4]@29 ~ [f#3,d#4,f#4]@2, b3 ~, f#4 e4@2 ~, ~ f#3 ~@6]/4", // B D#m
  C: "[g#3,g#4]@7 ~ [f#3,f#4]@8, b3@15 ~", D: "e4@8 d#4@5 ~ b3@2, [e3,g#3]@13 e3@3", E: "c#4@14 f#3 g#3, f#3@13 ~@3",
  F: "~@6 f#4 [f#3,d#4], f#3@7 ~, a3@5 a3@2 ~, ~@4 c#4@3 ~", G: "[e4@7 ~@9 d#4@16, g#3, ~ e4@3]/2",
  H: "[[d#4,f#4]@15 [f#3,d#4,f#4], b3 ~@3]/2", I: "a3@4 ~@2 f#4 [f#3,d#4], f#3@7 ~, ~@4 c#4@3 ~, ~@5 a3@2 ~",
  J: "[g#3,e4]@7 [g#3,e4]", K: "[f#3,d#4]@3 d#4 c#4@3 [f#3,c#4], ~@3 f#3@4 ~",
  L: "~@2 a4@2 g#4@3 [a3,f#4], [g#3,c4]@7 ~", M: "[g#3,e4]", N: "[b3,c#4,f#4]@15 ~",
  O: "[f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4]@3 ~", // B F#
  P: "[g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~", // C#m
  Q: "[f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4]@3 ~", // F#
  R: "[f#3,a3,c#4]@3 ~ [f#3,a3,c#4]@3 ~ [f#3,a3,c#4]@3 ~ [f#3,a3,c#4]@3 ~", // F#m
  S: "[f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 [f#3,d#4]!9, ~@4 b3 ~@3", // B D#m
  T: "[g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [c#3,c#4,e4]@2 [d#3,b3,f#4]@2", // C#m B
  U: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4]@3 ~, e3 ~", V: "b3 [b3,d#4], e4",
  W: "[f#4@15 ~ f#4@13 ~ [f#3,d#4,f#4]@2, d#4@15 ~, b3 ~@3]/2", X: "[f#3,d#4]@3 d#4 c#4@3 f#3, ~@6 f#3@8 c#4 ~",
  Y: "b3@2 f#3@2 [c#4,f#4] ~ f#2 [f#2,c#4,f#4], [c#4,f#4]@8 b3@7 ~, ~@11 [c#4,f#4]@2 ~@3", // F#5
  Z: "[g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4]@3 ~", // E F#
  AA: "[g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@3 ~", // G#m
  AB: "[g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 ~", // G#m B
  AC: "[g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 ~", // C#m B
  AD: "[f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4]@3 [f#3,c#4]!9, ~@4 a#3 ~@3", // F# F#5
  AE: "[g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@2 [b3,d#4,f#4]@2", // C#m B
  AF: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4]@3 f#2", // E F#
  AG: "[f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@3 ~", // B
  AH: "[g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@3 ~@5", // C#m
})).s("gm_piano").gain(0.34).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A B C D E@2 ~@13 F G ~@3 H ~ H ~ I ~ J ~ H ~ H ~@9 K L ~@3 M ~ M ~@3 N ~@2 H ~ H ~ H ~@3 H ~ H ~ H ~@2 H ~ H ~ H ~@2 H
  ~ O
>`.pickRestart({
  A: "~ a#3, d#4@3 ~", B: "d#4", C: "b3", D: "e4 d#4", E: "[d#4@27 ~@5]/2", F: "d#4 c#4", G: "c4@7 f#4",
  H: "~@10 [c#3,g#3,c#4]@5 ~", I: "~@3 [c#4,f#4]", J: "~@10 [b2,f#3,b3]@5 ~", K: "d#5 c#5", L: "c5@7 f#4",
  M: "~ f#4@2 f#4@2 f#4@2 c#4", N: "b3@15 ~", O: "~@5 [c#3,g#3,c#4]@2 ~",
})).s("gm_electric_guitar_clean").gain(0.03).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@36 [~@3 x] [~ x ~ x]!10 ~@36>").gain(0.61)

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

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

// … 45 more lines

More by Ramazzotti