Strudelify

Anna e il freddo che ha

Ruggeri

KeyD majorTempo122 bpm
0:00/0:00
// Anna e il freddo che ha — Ruggeri
// 122 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 church organ (copy of ch 8 percussive organ)
// note: Full arrangement: all 139 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 29, guitar program 27.
setcpm(122/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(`<
  ~@5 A B@2 C@8 D E F G D E F H I J K L M N O P D E F G D E F H I J K L M Q R S T U T U V W X U T U T U V W Y Z C@4 D E
  F G D E F H I AA K L M AB R S T U T U V W X U T U T U V W Y Z C@2 AC@4 AD AE AF AG AH AI AJ AK AL AM AN AO AP AG AP AG
  AD AE AQ AR AQ AR AS@7 AT AU@2 AV
>`.pickRestart({
  A: "~@7 a2", B: "[d3@29 ~@3]/2", C: "d2@3 d3@3 d3@3 d3@3 d3@2 d3@2", D: "a1@4 ~@2 a1@3 ~ a1@2 f#1@2 e1@2",
  E: "a1@5 ~ a1@3 ~ a1@2 f#1@2 e1@2", F: "g1@5 ~ g1@3 ~ g1@2 d1@2 e1@2", G: "g1@4 ~@2 g1@3 ~ g1@2 f#1@2 g1@2",
  H: "g1@4 ~@2 g1@3 ~ g1@2 g1 ~ f#1@2", I: "e1@5 ~ e1@8 f#1@2", J: "g1@5 ~ g1@5 ~ g1@2 a1@2", K: "d2@2 ~ d2@3 a1@2",
  L: "d2@5 ~ d2@2 f#2@4 f#2@4", M: "e2@5 ~ e2@8 f#2@2", N: "g2@5 ~ g1@5 ~ g1@2 a1@2", O: "d2@5 ~ d2@9 ~",
  P: "d2@5 ~ d2@4 f#1@2 g1@2 g#1@2", Q: "g2@5 ~ g1@5 ~ g1@2 f#1@2", R: "a1@4 a1 ~ a1@2 a1 ~ a1@2 a1@2 e1 f#1",
  S: "g1@2 g1@2 g1 ~ g1@2 a1@2 a1@2 a1 ~ a1@2", T: "d2!6 a1!2", U: "g1!4 a1!4", V: "d2!4 c#2!4", W: "b1!4 g1!4",
  X: "a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 e1 f#1", Y: "a1!6 g1 f#1", Z: "e1!4 g1!4", AA: "g1@5 ~ g1@6 g1@2 a1@2",
  AB: "g2@5 ~ g1@6 g1@2 f#1@2", AC: "e1!8", AD: "e2!4 d#2!4", AE: "c#2!4 a1!4",
  AF: "b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 b1@2 f#1 g#1", AG: "a1!4 b1!4", AH: "f#1@5 ~ f#1@8 g#1@2",
  AI: "a1@5 ~ a1@6 a1@2 b1@2", AJ: "e2@2 ~ e2@3 b1@2", AK: "e2@5 ~ e2@2 g#2@4 g#2@4", AL: "f#2@5 ~ f#2@8 g#2@2",
  AM: "a2@5 ~ a1@5 ~ a1@2 g#1@2", AN: "b1@4 b1 ~ b1@2 b1 ~ b1@2 b1@2 f#1 g#1",
  AO: "a1@2 a1@2 a1 ~ a1@2 b1@2 b1@2 b1 ~ b1@2", AP: "e2!6 b1!2", AQ: "b1!6 a1 g#1", AR: "f#1!4 a1!4",
  AS: "e2@3 e3@3 e3@3 e3@3 e3@2 e3@2", AT: "e2@3 e3@3 e3@3 e3@3 e3 ~ e2@2", AU: "b1/2",
  AV: "b1@2 [g#1,a1,a#1] [d#1,e1,f1,f#1,g1] ~@12",
})).s("gm_electric_bass_finger").gain(0.66)

// other · overdriven guitar
const overdriven_guitar = note("<~@100 [~@2 d4!2 ~@12] [~@11 c#4 ~@4] ~@37>").s("gm_overdriven_guitar").gain(0.26)

// other · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<~@100 [d4!2 ~@14] ~@38>").s("gm_overdriven_guitar").gain(0.18)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@12 A B A B ~@29 C D E F G H I J K D E F G H I J L M N A B A B ~@13 C D E F G H I J K D E F G H I J L M N O P Q@2 R
  S@2 T@2 U V ~@4 W X Y Z AA AB AC AD AE AF AG AF AG AH AI AH AI AH AI AH AJ AK@2 AL
>`.pickRestart({
  A: "[d3,a3,d4]@10 [d3,a3,d4] [d3,a3] [e3,a3]@2 a2 ~, ~@12 a2 ~@3", B: "[d3,g3]@14 g2 ~, g2@13 ~@3",
  C: "~@14 [a2,e3]!2", D: "[e3,a3]@5 ~ [e3,a3]@8 a2 ~, a2@3 ~@13", E: "[g2,d3,g3]@6 ~@2 [a2,e3,a3]@7 ~",
  F: "[d3,a3,d4]@9 ~ [d3,d4] ~ [a2,e3,a3]@2 a2 ~", G: "[g2,g3]@7 ~ [e3,a3]@6 [a2,e3] ~, d3@5 ~@3 a2@5 ~@3",
  H: "[d3,a3,d4]@10 d3 ~ [e3,a3]@2 a2 ~, ~@12 a2 ~@3", I: "[g2,d3,g3]@5 ~ g2 ~ [a2,e3,a3]@5 ~ a2 ~",
  J: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // D5 A5
  K: "[b2,f#3]@2 b2 ~ [b2,f#3] ~ [b2,f#3]@2 [g2,a2,d3] ~ [g2,d3] ~ [g2,d3]@2 [g2,a2,e3] [a2,e3]", // B5 Gsus2 G5 A7 A5
  L: "[b2,f#3]@2 b2 ~ [b2,f#3] ~ [b2,f#3]@2 d3 ~ [g2,d3] ~ [g2,d3]@2 g2 ~", // B5 G5
  M: "[a2,e3,a3] ~ a2 ~ a2 ~ [e3,a3]@2 a2@2 e3@2 g3@2 f#3@2, ~@6 a2 ~@9", // A5
  N: "e3@6 [g2,d3,g3] [g2,d3] [g2,d3,g3]@8, ~@8 f3 ~@7", O: "~@6 d4!8 [d4,a4]@2", P: "g4@8 b3 c#4 e4 ~ f#4 e4 c#4 e4",
  Q: "[b4@5 d#5 e5 b4@2 d#5 e5 f#5@2 e5 d#5 a4]/2", R: "g#4@3 a4 e5@4",
  S: "[~@2 c#5@2 e5 ~ f#5 ~ f#5@4 e5@2 c#6@6 b5@4 a5@3 g#5@3 e5@2]/2",
  T: "[a5@3 g#5@3 e5@2 c#5@3 d#5@2 ~ e5@6 b4@5 ~ g#4@4 c#5@2]/2", U: "b4 g#4 f#4@2 g#4@2 c#5@2 b4 g#4 f#4@2 g#4@2 e4@2",
  V: "f#4@11 ~@5", W: "~@14 [b2,f#3]!2", X: "[f#3,b3]@5 ~ [f#3,b3]@8 b2 ~, b2@3 ~@13",
  Y: "[a2,e3,a3]@6 ~@2 [b2,f#3,b3]@7 ~", Z: "[e3,b3,e4]@9 ~ e3 ~ [b2,f#3,b3]@2 b2 ~",
  AA: "[a2,a3]@7 ~ [f#3,b3]@6 [b2,f#3] ~, e3@5 ~@3 b2@5 ~@3", AB: "[e3,b3,e4]@10 e3 ~ [f#3,b3]@2 b2 ~, ~@12 b2 ~@3",
  AC: "[a2,e3,a3]@5 ~ a2 ~ [b2,f#3,b3]@5 ~ b2 ~", // A5 B5
  AD: "[e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", // E5 B5
  AE: "[c#3,g#3]@2 c#3 ~ [c#3,g#3] ~ [c#3,g#3]@2 e3 ~ [a2,e3] ~ [a2,e3]@2 a2 ~", // C#5 A5
  AF: "[b2,f#3,b3] ~ b2 ~ b2 ~ [f#3,b3]@2 b2@2 f#3@2 a3@2 g#3@2, ~@6 b2 ~@9", // B5
  AG: "f#3@6 [a2,e3,a3] a2 [a2,e3,a3]@8, ~@8 g3 ~@7", // A5
  AH: "[e3,b3,e4]@10 [e3,b3,e4] [e3,b3] [f#3,b3]@2 b2 ~, ~@12 b2 ~@3", AI: "[e3,a3]@14 a2 ~, a2@13 ~@3",
  AJ: "[a2,e3,a3]@13 ~ [e3,b3,e4]@2", AK: "[[b2,f#3]@31 ~, b3 ~@31]/2",
  AL: "[b2,f#3,b3]@2 e3 [g2,a2,b2,c3,d3] [a1,b1,c2,d2,e2,f2] g1 ~@10", // B5 G Dm7
})).s("gm_distortion_guitar").gain(0.29).pan(0.3)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note(`<
  ~@46 A ~ B C ~ D ~@2 A ~ B C ~ D ~ E ~@20 A ~ B C ~ D ~@2 A ~ B C ~ D ~ E ~@2 F ~@15 G ~ H I ~ J ~ K ~ L ~ L ~@11
>`.pickRestart({
  A: "~@4 a2@9 ~@3", B: "~@10 a3 ~@5", C: "~@6 d3 ~@9", D: "~@6 d3 ~@7 e3 ~", E: "~@8 [g2,a2] ~@7", F: "~@4 d4!2 ~@10",
  G: "~@4 b2@9 ~@3", H: "~@10 [b3,e4] ~@5", I: "~@6 e3 ~@9", J: "~@6 e3 ~@7 f#3 ~", K: "~@8 [a2,b2] ~@7",
  L: "~@7 e3 ~@8",
})).s("gm_distortion_guitar").gain(0.19).pan(0.3)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~@4 A B A B A B A B A B A B C D E F C D E G H I J K H I L M C D E F C D E G H I J K H I N O P Q R S T ~ N O P Q R S T
  ~ N U A B A B C D E F C D E G H I J K H I N O P Q R S T ~ N O P Q R S T ~ N U V W X Y Z AA AB AC AD AE AF AG AH AI AF
  AG AJ AK AL AM AN AO AP ~ AJ AQ AJ AQ AR AS AR AS AR AS AR AT AU@2 AV
>`.pickRestart({
  A: "[d4,a4,d5]@2 [d4,a4,d5] [d4,a4,d5]@2 [d4,a4,d5] [d4,a4,d5]@2 [d4,a4,d5] [d4,a4,d5]@2 [d4,a4,d5] [d4,a4,d5]@2 [d4,f#4,d5] [d4,f#4]", // D5 D
  B: "[d4,g4,d5]@2 [d4,g4,d5] [d4,g4,d5]@2 [d4,g4,d5] [d4,g4,d5]@2 [d4,g4,d5] [d4,g4,d5]@2 [d4,g4,d5] [d4,g4,d5]@2 [d4,f#4,d5] [d4,f#4]", // G5 D
  C: "[a2,e3]@4 a2 ~ [a2,e3,a3] ~ a2 ~ a2 ~ [a2,f#3,a3]@2 a2 ~", // A5 D
  D: "[a2,e3]@4 a2 ~ [a2,e3,a3]@2 a2 ~ a2 ~ [a2,e3,a3]@2 a2 ~", // A5
  E: "[g2,d3]@4 g2 ~ [g2,d3,g3]@2 g2 ~ g2 ~ g3@2 g2 ~, ~@3 d3, ~@12 g2 ~@3", // G5
  F: "[d3,g3,d4]@2 g2 d4 f#3 [g2,d4] [d3,g3,d4] ~, ~@3 d3@2 ~@3, ~@6 g3 ~@9", // G5
  G: "[d3,g3,d4]@2 g2 d4 f#3 [g2,g3,d4] g2 f#2, ~@3 d3@2 ~@3, ~@6 g3 ~@9", // G5
  H: "e2@3 [e2,d4]@2 g3 [e2,d4] [f#2,g3], ~@6 g3@3 ~@7", I: "g2@3 [d4,g4]@2 g3 [d4,g4] [a2,g3], ~@3 g2@4 ~, ~@3 g3 ~@4",
  J: "[d3,a3,d4]@3 ~ d3 ~ [a3,d4]@4 d3@2 [a3,d4]@2 d3 ~, ~@6 d3@3 ~@7", // D5
  K: "[a3,d4]@2 ~@2 [a3,d4]@2 [d3,a3,d4,g4]@4 [d3,f#4]@2 [a3,d4,e4]@2 [d3,d4] ~, d3 ~ d3@4 ~@10", // D5 Dsus4 D Asus4 D
  L: "[d3,a3,d4]@3 ~ d3 ~ [a3,d4]@4 d3@2 [a3,d4]@2 d3@2, ~@6 d3@3 ~@7", M: "[a3,d4]@2 ~ b3 a3 g3 f#3 ~, d3 ~ d3@2 ~@4",
  N: "[e4,a4]@4 a3 ~ [e4,a4]@4 a3@2 [e4,a4]@2 a3@2, a3@3 ~@3 a3@3 ~@7", // A5
  O: "[d4,g4]@2 g3@2 ~@2 g3 ~ a3 ~ a3@2 [e4,a4]@2 a3 ~, g3 ~@3 [d4,g4]@4 [e4,a4]@4 ~@4", // G5 A5 G5 A5
  P: "~@2 [d4,a4,d5] ~ [d4,a4] ~ [d4,a4,d5]@4 [d4,a4] ~ [a3,e4,a4]@2 a3 ~", Q: "[g3,d4,g4]@6 d4 ~ [a3,e4,a4]@6 e4 ~",
  R: "[d4,a4,d5]@3 ~ [d4,a4] ~ [d4,a4,d5]@4 d4 ~ [a3,e4,a4]@2 a3 ~", S: "[g3,d4,g4]@6 [g3,d4] ~ [a3,e4,a4]@6 a3 ~",
  T: "~@4 [d3,a3]@2 d3 ~@9", U: "[e3,b3,e4]@3 ~ [e3,b3,e4] ~ [e3,b3] ~ [d4,g4]@2 g3@2 ~@2 g3@2, ~@8 g3 ~@3 [d4,g4]@4",
  V: "[d3,a3,d4]@10 [d3,a3,d4] [d3,a3] [e3,a3]@2 a2 ~, ~@12 a2 ~@3", W: "[d3,g3]@14 g2 ~, g2@13 ~@3",
  X: "[e3,b3,e4]@9 ~ [e3,b3,e4] ~ [b2,f#3,b3]@2 b2 ~", Y: "[a2,a3]@6 e3 ~ [f#3,b3]@6 [b2,f#3] ~, e3@5 ~@3 b2@5 ~@3",
  Z: "[e3,b3,e4]@10 e3 ~ [f#3,b3]@2 b2 ~, ~@12 b2 ~@3", AA: "[a2,e3,a3]@5 ~ [a2,e3] ~ [b2,f#3,b3]@5 ~ [b2,f#3] ~",
  AB: "[e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", // E5 B5
  AC: "[c#3,g#3]@2 c#3 ~ [c#3,g#3] ~ [c#3,g#3]@2 [a2,b2,e3] ~ [a2,e3] ~ [a2,e3]@2 [a2,b2,f#3] [b2,f#3]", // C#5 Asus2 A5 B7 B5
  AD: "[f#3,b3]@4 ~@2 [f#3,b3]@8 b2 ~, b2@3 ~ b2@9 ~@3", AE: "[a2,e3,a3]@6 ~@2 [b2,f#3,b3]@7 ~",
  AF: "f#2@3 [f#2,e4]@2 a3 [f#2,e4] [g#2,a3], ~@6 a3@3 ~@7", // F#7 Amaj7
  AG: "a2@3 [e4,a4]@2 a3 [e4,a4] [b2,a3], ~@3 a2@4 ~, ~@3 a3 ~@4", // A5 B7
  AH: "[e3,b3,e4]@3 ~ e3 ~ [b3,e4]@4 e3@2 [b3,e4]@2 e3 ~, ~@6 e3@3 ~@7", // E5
  AI: "[b3,e4]@2 ~@2 [b3,e4]@2 [e3,b3,e4,a4]@4 [e3,g#4]@2 [b3,e4,f#4]@2 [e3,e4] ~, e3 ~ e3@4 ~@10", // E5 Esus4 E Bsus4 E
  AJ: "[f#4,b4]@4 b3 ~ [f#4,b4]@4 b3@2 [f#4,b4]@2 b3@2, b3@3 ~@3 b3@3 ~@7", // B5
  AK: "[e4,a4]@2 a3@2 ~@2 a3 ~ b3 ~ b3@2 [f#4,b4]@2 b3 ~, a3 ~@3 [e4,a4]@4 [f#4,b4]@4 ~@4", // A5 B5 A5 B5
  AL: "~@2 [e4,b4,e5] ~ [e4,b4] ~ [e4,b4,e5]@4 [e4,b4] ~ [b3,f#4,b4]@2 b3 ~", // E5 B5
  AM: "[a3,e4,a4]@6 e4 ~ [b3,f#4,b4]@6 f#4 ~", AN: "[e4,b4,e5]@3 ~ [e4,b4] ~ [e4,b4,e5]@4 e4 ~ [b3,f#4,b4]@2 b3 ~",
  AO: "[a3,e4,a4]@6 [a3,e4] ~ [b3,f#4,b4]@6 b3 ~", AP: "~@4 [e3,b3]@2 e3 ~@9",
  AQ: "[f#3,c#4,f#4]@3 ~ [f#3,c#4,f#4] ~ [f#3,c#4] ~ [e4,a4]@2 a3@2 ~@2 a3@2, ~@8 a3 ~@3 [e4,a4]@4", // F#5 A5
  AR: "[e4,b4,e5]@2 [e4,b4,e5] [e4,b4,e5]@2 [e4,b4,e5] [e4,b4,e5]@2 [e4,b4,e5] [e4,b4,e5]@2 [e4,b4,e5] [e4,b4,e5]@2 [e4,g#4,e5] [e4,g#4]", // E5 E
  AS: "[e4,a4,e5]@2 [e4,a4,e5] [e4,a4,e5]@2 [e4,a4,e5] [e4,a4,e5]@2 [e4,a4,e5] [e4,a4,e5]@2 [e4,a4,e5] [e4,a4,e5]@2 [e4,g#4,e5] [e4,g#4]", // A5 E
  AT: "[e4,a4,e5]@2 [e4,a4,e5] [e4,a4,e5]@2 [e4,a4,e5] [e4,a4,e5]@2 [e4,a4,e5] [e4,a4,e5]@2 [e4,a4,e5]!2 ~ [e4,b4]@2", // A5 E5
  AU: "[[b3,f#4,b4]@31 ~]/2", AV: "[f#4,b4] ~ [d4,e4] [g3,a3,b3,c4] [b2,c3,d3,e3,f3] ~@11, b3 ~@7",
})).s("gm_distortion_guitar").gain(0.27).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@19 A ~@2 B ~ C ~@2 D E F ~@5 A ~@2 B G C ~@2 D E F ~@16 H ~@8 A ~@2 B G C ~@2 D E F ~@16 H ~@11 I ~@2 J K L ~@8 M ~
  M ~@12
>`.pickRestart({
  A: "~@14 g3 ~", B: "~@6 e3 ~", C: "~@3 b2@3 ~@2", D: "~ a3 ~@4 g2 f#2", E: "~@6 b2@3 ~ b2@2 ~@4",
  F: "~@9 g2 d3@2 ~@4", G: "~@12 d3 ~@3", H: "~@5 e3 g3 f#3", I: "~@3 c#3@3 ~@2", J: "~ b3 ~@4 a2 g#2",
  K: "~@6 c#3@3 ~ c#3@2 ~@4", L: "~@9 a2 e3@2 ~@4", M: "~@5 f#3 a3 g#3",
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · percussive organ
const percussive_organ = note(`<
  ~@31 A B@2 C@2 B@2 D@2 E F G@2 H@2 I J K L K L M N O P K L K L M N O Q R ~@2 A B@2 S T U@2 V@2 E F G@2 H@2 I J K L K L
  M N O P K L K L M N O W X Y Z AA Z AA AB AC AD AA AE AF AG@2 AH@2 AI AJ AK AL AK AL AB AC AD AM AN AM AO ~@7 AP@2 AQ
>`.pickRestart({
  A: "~@15 [g4,g#4]", B: "a4/2", C: "[g4@30 ~ [g4,g#4]]/2", D: "[g4@22 ~ a5 b5@2 d6@2 g5@2 f#5@2]/2", E: "e5",
  F: "d5@15 f5", G: "[~@20 g5@4 a5@4 f#5@3 ~, f#5@5 ~@3, ~@3 [a4,d5]@13]/2", H: "[b4@16 d5@15 ~, g5@31 ~]/2",
  I: "c#6@3 d6 [c#6,e6]@4, a5@15 ~", J: "[g5,b5,d6] [a5,c#6,e6]", K: "f#6 e6 f#6 [e5,d6], a5@15 ~, d6@11 ~@5",
  L: "[d5,g5,d6] [e5,c#6], a5", M: "[a5,d6,f#6] [c#6,e6,a6]", N: "[d6,f#6,b6] [b5,d6,g6]", O: "[c#6,e6,a6]",
  P: "[b5,d6,g6] [c#6,e6,a6]", Q: "[b5,e6]@6 g5 ~ d6@5 a5 [e5,f5,c6] [f4,g4,a4,b4,c5,d5], g5@5 ~@3 [g5,b5]@7 ~",
  R: "[c4,d4,e4] ~@15", S: "g4@6 [b4,b5] [d5,d6]",
  T: "[b4,b5]@2 [a4,a5]@2 [g4,g5]@8 [g4,g5]@3 [g4,g#4], [a#4,a#5] ~@15", U: "[a4, a5@15 ~@17]/2",
  V: "[g4@22 [g4,a4] [b4,c5,d5] [e5,f5,g5,a5] ~ a5@2 g5@2 f#5@2, ~@12 b5 ~@3]/2", // Gsus2 Bm Fmaj7
  W: "g5@5 ~ g5 ~ [g5,b5]@2 [e5,f5,a5] [d4,e4,f4,g4,a4,b4,c5,d5] [d3,e3,f3,g3,a3,b3,c4] [b2,c3,d3] [e3,f3,g3,a3,b3,c4] [d4,e4,f4,g4,a4,b4,c5], [b5,e6]@8 d6 ~@7", // G Fmaj7 Dm7 Bm Cmaj7 Dm7 E5
  X: "[d5,e5,f5,g5] ~@11 [e5,c#6]@4, a5, [f#5,d6]@3 ~", // Em7 C#m D
  Y: "[g5,b5,d6]@12 [f5,a5,c6] [a4,b4,c5,d5,e5] [b3,c4,d4,e4,f4,g4] [e3,f3,g3,a3]", Z: "[b5,e6,g#6]@3 [d#6,f#6,b6]",
  AA: "[c#6,e6,a6] [d#6,f#6,b6]", AB: "[b5,e6,g#6] [d#6,f#6,b6]", AC: "[e6,g#6,c#7] [c#6,e6,a6]", AD: "[d#6,f#6,b6]",
  AE: "f#5", AF: "e5@15 g5", AG: "[~@20 a5@4 b5@4 g#5@3 ~, g#5@5 ~@3, ~@3 [b4,e5]@13]/2",
  AH: "[c#5@16 e5@15 ~, a5@31 ~]/2", AI: "d#6@3 e6 [d#6,f#6]@4, b5@15 ~", AJ: "[a5,c#6,e6] [b5,d#6,f#6]",
  AK: "g#6 f#6 g#6 [f#5,e6], b5@15 ~, e6@11 ~@5", AL: "[e5,a5,e6] [f#5,d#6], b5",
  AM: "a5@5 ~ a5 ~ [a5,c#6]@2 [f#5,g5,b5] [e4,f#4,g4,a4,b4,c#5,d5,e5] [e3,f#3,g3,a3,b3,c#4,d4] [c#3,d3,e3] [f#3,g3,a3,b3,c#4,d4] [e4,f#4,g4,a4,b4,c#5,d5], [c#6,f#6]@8 e6 ~@7", // A Gmaj7 Em7 C#m Dmaj7 Em7 F#5
  AN: "[e5,f#5,g5,a5] ~@15, [d#6,f#6,b6]", AO: "[e5,f#5,g5,a5] ~@15", AP: "[b3,f#4,b4,f#5]/2",
  AQ: "[b4,f#5] ~ [d5,e5] [g4,a4,b4,c5] [c4,d4,e4,f4] ~@11, b5 ~@7", // B5 Dsus2 Cmaj7 Dm7
})).s("gm_percussive_organ").gain(0.1).pan(0.6)

// other · steel drums
const steel_drums = note(`<
  [d5!2 ~@2 a4 ~ c#5 ~ d5 ~ d5 ~ a4 ~ c#5 ~]!16
  ~@48
  [d5!2 ~@2 a4 ~ c#5 ~ d5 ~ d5 ~ a4 ~ c#5 ~]!4
  ~@32
  [d5!2 ~@2 a4 ~ c#5 ~ d5 ~ d5 ~ a4 ~ c#5 ~]!2
  ~@26
  [e5!2 ~@2 b4 ~ d#5 ~ e5 ~ e5 ~ b4 ~ d#5 ~]!10
  ~
>`).s("gm_steel_drums").gain(0.14).pan(0)

// other · steel drums · soft notes
const steel_drums_soft = note(`<
  [~@2 d5 ~@4 c#5 ~@3 d5 ~@4]!16
  ~@48
  [~@2 d5 ~@4 c#5 ~@3 d5 ~@4]!4
  ~@32
  [~@2 d5 ~@4 c#5 ~@3 d5 ~@4]!2
  ~@26
  [~@2 e5 ~@4 d#5 ~@3 e5 ~@4]!10
  ~
>`).s("gm_steel_drums").gain(0.09).pan(0)

// other · lead 1 square
const lead_1_square = note(`<
  [d3!2 a3!2 d4!2 a3!2 d3!2 a3!2 d4!2 a3!2]!16
  ~@48
  [d3!2 a3!2 d4!2 a3!2 d3!2 a3!2 d4!2 a3!2]!4
  ~@32
  [d3!2 a3!2 d4!2 a3!2 d3!2 a3!2 d4!2 a3!2]!2
  ~@26
  [e3!2 b3!2 e4!2 b3!2 e3!2 b3!2 e4!2 b3!2]!10
  ~
>`).s("gm_lead_1_square").gain(0.3).pan(0.4)

// bass · synth bass 1
const bass_2 = note(`<
  [d2 ~@3 d3 ~@3 d2 ~@3 d3 ~@3]!16
  ~@48
  [d2 ~@3 d3 ~@3 d2 ~@3 d3 ~@3]!4
  ~@32
// … 137 more lines

More by Ruggeri