Strudelify

Riguarda noi

Giorgia

KeyA majorTempo72 bpm
0:00/0:00
// Riguarda noi — Giorgia
// 72 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// 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.
setcpm(72/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(`<
  ~@12 A B C D E F G F H I C J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ AI AQ BA BB BC BD BE B ~@2 J BF@6
>`.pickRestart({
  A: "f#1@7 f#1", B: "a1", C: "d2", D: "g1@6 g1@2 f#1@7 ~", E: "a1@6 e2 a1", F: "g1 f#1", G: "g1@9 c3 b2 g2 f2 d2@3",
  H: "a1@8 a2@6 g2 f#2", I: "e2 c2", J: "b1", K: "a2", L: "a1@4 ~ a1!2 a1@2 a1 a1@6", M: "b1@6 ~ b1!2 ~ b1@6",
  N: "d2@6 a1 d2@2 e2 d2@4 f#1 g#1", O: "a1@7 ~ a1 ~ a1@4 f#2 e2", P: "a1@6 ~ a1 ~ a1 a1@4 e2 a1",
  Q: "b1@6 ~ b1!2 ~ b1@3 c#1 d#1@2", R: "d1@6 ~ d1 e1 f#1 a1@2 c2@4", S: "f#1@7 ~ f#1 ~ f#1@5 f#1",
  T: "b1@9 ~ b1@4 b1 c#2", U: "d2@5 ~ d2@2 d3 c#3 d3@2 d2@2 d2 f#1", V: "g1@4 a1 b1 d2 e2 d2@8",
  W: "a1@8 a1 ~ a1@4 e2 d2", X: "g1 d2", Y: "a1@7 a1 ~ a1 e2 ~ e2@4", Z: "g1@6 a1 b1 d2@4 d1@4",
  AA: "a1@7 e2 a1 ~ a1@6", AB: "e1@6 e2 d2 c2 ~ c2@5 a1", AC: "d2@7 a1 d2 ~ d2@4 d2 c#2",
  AD: "b1@6 ~ b1 b1@3 d2 f#2 b2@3", AE: "g1 f#1 e1 d1", AF: "c1@6 c1@2 d1@6 f#1 c2", AG: "b1@5 ~ b1@2 f#1@4 e2@4",
  AH: "c2@5 ~ c2@2 a1 ~ a1@4 a1@2", AI: "g1@2 b1 e2 d2@4", AJ: "a1@6 c2@2 b1@3 b2@5", AK: "e1@3 e1@5 f#2@3 f#2@5",
  AL: "g2@2 b1 e2 d2@4", AM: "a1@8 a1 ~ a1@3 e2 a1@2", AN: "g1@8 d1 ~ d1 ~ d1@2 g1 g#1",
  AO: "a1@5 a1!2 e2 a1 e2 a1@3 e2 a1 g#1", AP: "g1@4 b1@2 e2@2 d2@4 d1@2 e1 g1", AQ: "a1@7 ~ a1 ~ a1@6",
  AR: "e1@5 ~ e1@2 g1@6 g1@2", AS: "a1 ~ a1@5 e2 a1 ~ a1@4 e2 a1", AT: "b1 ~ b1@5 b1!2 ~ b1@4 b1 c#2",
  AU: "d2@2 d2@4 ~ d2 d3!8", AV: "a1 ~ a1@2 a2@3 a1 a1@2 a1@2 a2@3 a1", AW: "b1 ~ b1@2 b2@3 b1!2 ~ b1@2 b2@3 b1",
  AX: "d2 ~ d2@4 ~ d2 d2@2 e2 f#2 a2 b2 d3 e3", AY: "f#2@7 c#2 f#1 ~ f#1@4 b1 c#2",
  AZ: "d2@2 a1 d1@3 a1 b1 d2 a2 d2@4 a2@2", BA: "g1@7 g1 d1@2 d1@2 d1@2 g1 g#1",
  BB: "a1@6 a1!2 c2 c#2 e2 f#2 a2 b2 a2 f#2", BC: "g1@2 b1 e2 d2@2 d1@2", BD: "a1@3 a1 a2!4", BE: "e1 g1",
  BF: "[d1@6 g1@21 ~@5]/6",
})).s("gm_electric_bass_finger").gain(0.72)

// bass · lead 2 sawtooth
const bass_2 = note("<A@4 ~@79>".pickRestart({
  A: "a1/4",
})).s("gm_lead_2_sawtooth").gain(0.02)

// other · glockenspiel
const glockenspiel = note("<~@2 [a5 ~@3 e5 ~@3 d5 ~@3 c#5 b4 a4 ~]!2 ~@79>").s("gm_glockenspiel").gain(0.12).pan(1)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@25 A@7 B@3 C@6 D E F@2 G@2 H I J@2 ~@27 K@5>".pickRestart({
  A: "[e5@16 ~@52 a5@16 a5@15 ~ a5@12, a4@32 a4@24 a4@55 ~, a5@27 ~ a5@16 a5@23 ~@45, ~@16 d5@32 e5@63 ~]/7",
  B: "[~ a5@5 ~ a4@5, a4@7 ~@5, e5@2 ~ a5@3]/3", C: "[[g4,g5] ~ e5@2, d5 ~, ~ [a4,a5]@3]/2", D: "a4 g4, [d5,g5]",
  E: "[a4,d5,a5]", F: "[[f#4,b4,f#5]@15 [b3,b5]@4 [a3,a5]@4 [g3,g5]@4 [f#3,f#5]@5]/2",
  G: "[[e4,e6]@7 [f#4,f#6]@4 [g4,g6]@2 [a4,a6]@2 [d4,d6]@8 ~ [e4,e6]@5 [b3,b5]@3]/2", H: "[c4,c6] [c#4,c#6]",
  I: "[d4,d5]@3 ~ g4@2 ~@2 a4@4 [d5,d6]@4, ~@3 g5@2 ~ [f#4,f#5]@2 ~@8, ~@7 a5@4 ~@5", // D F#
  J: "[[e5,e6]@8 [d#5,d#6]@2 ~ e6@2 ~@2 [g5,g6]@6 [e5,e6]@3 [a5,a6]@6 ~@2, ~@10 e5@2 ~ [f#5,f#6]@4 ~@15]/2", // E D# G E A F#
  K: "[~@3 a1@63 ~@14, ~ [c#4,e4,a4]@32 ~@7]/5", // A
})).s("gm_string_ensemble_2").gain(0.15).pan(0.8)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<A@4 ~@8 B@3 C@4 D@5 ~@52 E@6 ~>".pickRestart({
  A: "[a5,a6]/4", B: "[[f#2,e4]@16 [b2,d#4]@16 [d3,d4]@15 ~, a4@47 ~, a3@15 ~]/3",
  C: "[[g2,g3,b3] f#2 [a2,c#4,e4]@2, d4 ~, ~@8 a3@23 ~]/2", // G A
  D: "[[g2,g3,b3]@8 f#2@8 [a2,c#4,e4]@16 [e2,b3]@8 [c2,g4]@8 d2@15 ~ b1@14 ~@2, d4@8 ~@8 d4@8 [f#4,a4]@15 ~, ~@8 a3@32 e4@23 d4@14 ~@3]/5", // G A E5 C5 F#m
  E: "[[a5,d6,a6]@35 [a5,e6,a6]@60 ~]/6", // D5 A5
})).s("gm_string_ensemble_2").gain(0.07).pan(0.8)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@28 A B C@2 D E F ~@3 G ~@4 H@2 ~@5 I J K L M N O P Q@3 R S T U V W@2 X Y N Z P AA@2 ~@8
>`.pickRestart({
  A: "~@9 [e3,e4] [d4,d5] [c#4,c#5] [d4,d5] [c#4,c#5] [a3,a4]@2", B: "~@3 [c#3,c#5]", C: "[d3,d5]/2", D: "[e3,e5]",
  E: "[d#3,d#5]", F: "[d3,d5] [c#3,c#5] [d3,d5] [c#3,c#5] [d3,d5] [c#3,c#5] [d3,d5] [f#3,f#5]",
  G: "~@10 [d4,d6] [c#4,c#6] [d4,d6] [c#4,c#6] [a3,a5]@2", H: "[~@13 [d3,d5] [f#3,f#5] [g3,g5]@2 ~@15]/2",
  I: "~@14 [g5,g6,a6] a5", J: "[b5,b6] [a5,a6]", K: "[e5,e6]@15 [f#5,f#6]", L: "[g5,g6] [a5,a6]",
  M: "[e5,e6]@10 [d6,d7] [c#6,c#7] [d6,d7] [c#6,c#7] [a5,a6]@2", N: "[b4,b6] [a4,a6]", O: "[e4,e6]", P: "[g4,g6]",
  Q: "[a5,a6]/3", R: "~@15 [c#4,c#5]", S: "[d4,d5]@15 [e4,e6]", T: "[f#4,f#6]@12 [d4,d6] [e4,e6] [f#4,f#6] [g#4,g#6]",
  U: "[a4,a6]@7 [c#4,c#5]", V: "[d4,d5] [c#4,c#5] [d4,d5] [c#4,c#5] [d4,d5] [c#4,c#5] [d4,d5] [a3,a4]",
  W: "[[b4,b6]@8 [a4,a6]@7 [e4,e6]@15 ~ [f#4,f#6]]/2", X: "[g4,g6]@7 [a4,a6]@8 ~",
  Y: "[e4,e6]@11 [c#5,c#7] [d5,d7] [c#5,c#7] [a4,a6]@2", Z: "[e4,e6]@15 [f#4,f#6]", AA: "[[a4,a6]@29 ~@3]/2",
})).s("gm_string_ensemble_1").gain(0.16)

// chords · piano
const piano = note(`<
  ~@2 A B@2 ~@3 C@2 D E F G H I J K L M N O ~@3 P Q R S T U V W X Y Z AA AB AC Z AD AE AF AG@2 AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK@2 BL@3 ~@4
>`.pickRestart({
  A: "~@7 a4", B: "[~@13 b4 a4@14 ~@4]/2", C: "[~@4 e4@12 ~@15 b3, a4@3 ~, a1 ~]/2", D: "[d2,c4]", E: "e4",
  F: "~ e4@3, a4", G: "~@7 a3, [b1,d#4], ~ a4@3", H: "[d2,d4]@15 f1", I: "[g1,g3,b3,d4] [f#1,a3,d4], f#1 ~@15",
  J: "~@11 e3 [e3,a3] [e3,a3,c#4]@2 [f1,f#1], ~@3 d4", K: "[b3,d4]@3 [b3,d4] [f#1,a3,d4]@4, [g1,g3] ~",
  L: "~@12 [a3,d4] [a3,e4]@2 [f1,f#1], e4@13 ~@3, ~@7 a3@4 [a2,e3]@5, ~@10 a4@3 ~@3", M: "[g1,g3,b3,d4] [f#1,a3,d4]",
  N: "~@7 [a3,c#4], ~@13 e3@3", O: "[e2,b2,g3,a3,d4] [g3,c4,e4]",
  P: "~@4 a3@2 ~ a3@4 ~ [a3,e4]@4, [a1,a2]@11 [a1,a2]@5, ~ a4@3", // A5 A
  Q: "[a3,d4,e4]@4 [d4,e4,a4]@3 [a3,d4,e4] ~@4 [d4,e4,a4]@4, [b1,b2]", // Asus4 Dsus2 Asus4 Dsus2 B
  R: "[a3,d4,a4]@3 ~@9 a3@4, [d1,d2]@7 d4@9, ~ a4@3, ~@2 a3@3 d3@3", // D5 D
  S: "[a3,e4]@4 [a3,c#4,e4]@3 [a3,a4]@2 ~ [a3,d4]@3 [a3,e4]@3, a1, a2@9 a2@3 ~@4", // A5 A D5 A5
  T: "[a3,e4,a4]@4 [a3,e4,a4]@3 [a3,c#4,e4]@5 [a3,c#4,e4]@4, a1", // A5 A
  U: "[a3,d4,e4,a4]@4 [a3,d4,e4,a4]@3 [a3,d4,e4,a4]@2 ~@3 [a3,d4,e4,a4]@4, b1", // Asus4
  V: "[d2,a3,d4,f#4]@4 [a3,d4,f#4]@2 ~@3 d2@2 ~ a3@2 a3@2, d1, ~@6 d2@3 ~@2 d2@5, ~@7 [a3,d4,f#4]@5 [d4,f#4]@4", // D
  W: "[a3,e4,a4]@2 a3 ~@3 a4!2, f#1@6 f#1@3 f#1@7, ~ [e4,a4]@2 [e4,e5], ~@7 a3@8 ~", // A5 E
  X: "[a3,d#4,a4] [a3,d#4,a4]@2 [a3,d#4,a4], b1@11 ~@5", Y: "[a3,d4,f#4]!4, [d1,d2]",
  Z: "[g1,g2,g3,b3,d4] [d1,d2,f#3,a3,d4]", // G D
  AA: "[a2,e3,a3,c#4]@6 ~ a3@2 ~ [a3,d4]@2 ~ [a3,e4]@3, a1, ~@6 a2@3 a2@3 a2@4, ~@7 a4@6 ~@3", // A D5 A5
  AB: "[g3,b3,d4]@3 [g3,b3,d4] [d1,d2,f#3,a3,d4]@4, [g1,g2] ~", // G D G
  AC: "[a2,a3,c#4,e4]@6 ~ [c#4,e4,a4]@2 ~@3 [a3,e4]@4, a1, ~@6 a2@2 ~ a2@2 a2@5, ~@5 [a3,e4] ~@2", // A A5
  AD: "[e3,a3,c#4]@4 [e3,a3,c#4]@2 ~ [e3,a3]@2 ~@3 [e3,a3,c#4]@4, a1, a2@2 ~@4 a2@2 ~ a2@2 a2@5, ~@7 c#4@5 ~@4, ~@5 [e3,a3,d4] ~@2", // A A5 A Dsus2
  AE: "[e2,g3,a3,b3,d4] [c2,g3,c4,e4]", AF: "[a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4], d2",
  AG: "[[b1,b2,a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4] [g1,g2,b3,d4] [f#1,f#2,a3,d4] [e1,e2,g3,d4] [d1,d2,f#3,a3], ~ b1@4 ~@3, ~ b2@3 ~@4]/2", // Bm7 D G D Em7 D
  AH: "[c3,e3,g3] [e3,g3,c4] [d3,f#3,a3]!2, c2 d2, c1 ~@7", AI: "[f#3,a3,d4] [a3,d4,f#4] [e3,g3,b3]!2, b1 e2",
  AJ: "[g3,d4,e4] [g3,c4,e4] [g3,c#4] [g3,c#4,g4], c2 a1, ~@4 e4 ~@3", // Em7 C Gdim
  AK: "[b3,d4,g4]@3 ~ [b3,d4,g4]@4 [a3,d4,f#4]@4 [a3,d4,f#4]@4, g1 d1", // G D
  AL: "[a3,c4,e4]@4 [a3,c4,e4]@4 [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@4, a1 b1", // Am B
  AM: "[e3,g3,b3]@4 [g3,b3]@2 [g3,b3,e4]@2 [a3,d4]@2 [a3,d4]!2 [f#1,f#2,a3,d4]!2 [f#1,f#2,a3,d4]@2, e1@2 f#1 ~, ~ e3 ~@2", // Em G Em D5 D
  AN: "[g1,d3,g3,b3]@2 ~ [g3,b3,e4] d2!2 ~ d2, ~ d3 ~@2, ~@2 [g3,b3] ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2, ~@5 g1@3 ~@8", // G Em G D
  AO: "[e3,a3,c#4]@4 [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~@3 [e3,a3,c#4]@4, a1@6 a1@3 a1@2 a1@5, ~@5 [e3,a3,d4] ~@2", // A Dsus2
  AP: "[g1,g3,b3,d4]@3 ~ [g3,b3,d4]@4 d2@2 ~@4 d2@2, ~@3 g1@3 ~@2 [f#3,a3,d4]@4 [f#3,a3,d4]@4, ~@5 d2@2 ~", // G D
  AQ: "a1@2 ~@2 [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~ [e3,a3,d4]@2 ~ [e3,a3,c#4]@3, [e3,a3,c#4] ~@3, ~@2 a1@4 a1@3 a1@3 a1@4", // A Dsus2 A
  AR: "[g1,g3,b3,d4]@3 ~@3 g1@2 d1@2 d1@2 [f#3,a3,d4]@2 d1@2, ~@3 g1@3 ~@10, ~ [g3,b3,d4] [f#3,a3,d4] ~", // G D G D
  AS: "a1@2 a1@2 [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~ [e3,a3,d4]@2 a1@2 a1@2, [e3,a3,c#4]@4 ~@2 a1@3 a1@3 [e3,a3,c#4]@4", // A Dsus2 A
  AT: "e1 ~@2 e1 g1!3 [g1,g3,a3,d4], [g3,a3,d4]@2 [g3,a3,d4]@2 [g3,a3,d4]@3 ~, ~ e1@2 ~@5", // Gsus2
  AU: "a1@2 ~@2 [a3,c#4,e4]@2 ~ [a3,c#4,e4]@2 ~ [a3,c#4,e4]@2 a1@2 a1@2, [a3,c#4,e4] ~@2 [a3,c#4,e4], ~@2 a1@4 a1@3 a1@3 ~@4", // A
  AV: "[b1,a3,d4,e4]@3 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~ [a3,d4,e4]@2 ~@2 b1@2, ~@3 b1@3 b1@3 b1@3 b1@2 ~@2, ~@13 [a3,d4,e4]@3", // Bm7 Asus4
  AW: "[a3,d4,e4]@4 [a3,d4,e4]@2 ~ [a3,d4,e4]@2 [d2,d4] [d2,a3,d4,e4]!4 [a3,d4,e4]@2, d2@6 d2@3 ~@7", // Asus4 D Dsus2 Asus4
  AX: "[a1,a3,c#4,e4]@4 ~@8 a3 ~ [a1,c#4]@2, ~ [a3,c#4,e4]!2 e4, ~@6 a1@4 a1@3 a3@3, ~@6 c#4 ~", // A
  AY: "b1@2 ~@2 [a3,d4,e4]@2 ~@4 a3 ~@3 [d4,e4]@2, [a3,d4,e4]@4 ~@3 [a3,d4,e4]@4 [a3,d4,e4]@2 a3@3, ~@2 b1@4 b1@3 b1@3 b1@4", // Asus4 Dsus2 Asus4
  AZ: "[d1,d4,e4]@2 ~@2 [a3,d4,e4]@2 ~@4 a3 ~@4 d1, a3 ~ a3@2 ~@3 [a3,d4,e4]@4 [a3,d4,e4]@2 a3@3, ~@3 d1@3 d1@3 d1@3 d1@2 [d4,e4]@2", // Dsus2 Asus4 Dsus2
  BA: "f#1@2 f#1@2 [a3,c#4,e4]@2 ~ [a3,c#4,e4]@2 ~ [a3,c#4,e4]@2 ~ [a3,c#4,e4]@3, [a3,c#4,e4]@4 ~@2 f#1@3 f#1@3 f#1@4", // A
  BB: "[d2,a3]@2 ~@2 [d2,a3]@2 [d2,a3]@2 [d2,a3,d4]@2 [d2,d4] [d2,a3,d4]!3 [d2,a3,d4]@2, e4@8 e4 ~@7, d4!2 ~@2", // D5 D D5
  BC: "[g1,g3,b3,d4]@3 ~@3 g1@2 [f#3,a3,d4]@4 ~@2 d2@2, ~@3 g1@3 ~@2 d2@6 ~@2, ~ [g3,b3,d4] ~ [f#3,a3,d4]", // G D G D
  BD: "a1@2 ~@2 [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~ [e3,a3,d4]@2 ~@2 a1@2, [e3,a3,c#4]@4 ~@9 [e3,a3,c#4]@3, ~@2 a1@4 a1@2 ~ a1@3 a1@2 ~@2", // A Dsus2 A
  BE: "[g3,b3,d4]@2 ~ g1 [d1,f#3,a3,d4]@2 [d2,f#3,a3,d4]@2, g1@3 ~@5, ~ [g3,b3,d4] ~@2", // G D G
  BF: "a1 ~@3 [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~ [e3,a3,d4]@2 ~ [e3,a3,c#4]@3, [e3,a3,c#4] ~@3, ~@2 a1@4 a1@3 a1@3 a1@4", // A Dsus2 A
  BG: "[g1,g3,b3,d4]@3 ~@3 g1@2 [d1,f#3]@2 ~@4 d1@2, ~@3 g1@3 ~@4 d1@4 ~@2, ~ [g3,b3,d4] [a3,d4] [f#3,a3,d4]", // G D G D5 D
  BH: "a1@2 ~@2 [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~ [e3,a3]@2 ~@2 a1@2, [e3,a3,c#4]@2 ~@3 d4@3, ~@2 a1@4 a1@3 a1@2 ~ a1@2 ~@2, ~@13 [e3,a3,c#4]@3", // A A5 A
  BI: "g3!2 [g1,g3,a3,d4]@2, [a3,d4] ~, e1@3 ~@5", BJ: "~@7 a4, ~@3 c#5, ~@13 b4@3",
  BK: "[~@7 a4@9, a5@13 b4@3 ~@16, ~ e3@15, ~ e5@3 ~@4, ~ d5 ~@2]/2",
  BL: "[d4@15 ~ [d2,a3,d4]@19 ~@13, ~@15 [e4,a4]@20 ~@13]/3", // D5 A5
})).s("gm_piano").gain(0.45).pan(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  A@2 B C D E F G H@2 I J K@2 ~@2 L ~ M ~ N O P Q G ~@3 R ~@4 S ~@6 T ~@12 U ~@6 V ~@4 W ~@6 X Y Z@2 AA AB@6
>`.pickRestart({
  A: "[~ a2, [a0,a1]]/2", B: "a5@4 e5@4 d5@4 c#5 b4 ~@2", C: "a5@4 e5@4 d5@4 c#5 ~@3", D: "~@3 e4, a2", E: "[b2,d4]",
  F: "[d2,a3]", G: "[a1,e4]", H: "[~ [b1,d4], ~@12 a3@13 ~@7]/2", I: "~@3 f#4@5", J: "~@6 a2@9 g#1, [a1,c#4]",
  K: "[~ a3@13 b2@2, f#1 ~]/2", L: "[a3,c#4]@13 ~@3, a1, e3@11 ~@5", M: "a1@13 ~@3, a3@7 ~@9", N: "[a1,e3,a3,c#4]@7 ~",
  O: "~ c2", P: "[d2,a3,d4,e4,f#4]", Q: "[b1,f#3,a3,d4]", R: "~@3 a2", S: "~@11 b1@5", T: "~@2 a2@3 ~@11",
  U: "~@3 g1 ~@4", V: "~@9 [a3,e4] ~@4 d2@2", W: "~@10 a3 ~@5, ~@9 e4@5 ~@2", X: "~@3 e1 ~@4",
  Y: "~ d5, [a1,a3,e4], ~ a4@6 ~, ~ e5@3", Z: "[~@12 c#5@3 ~ [c#4,e4]@16, a2@15 [a3,b3]@17]/2", AA: "[b1,f#3,a3]",
  AB: "[~@8 d3@10 [a1,e3,a3,c#4]@63 ~@15]/6", // A
})).s("gm_piano").gain(0.22).pan(0.4)

// chords · electric guitar muted · A5 G5 D5 A5
const electric_guitar_muted = note(`<
  ~@16
  [~@2 [a2,e3] ~ [a2,e3] ~@2 [e3,a3]@2 [a2,e3]!2 ~@5]
  [~@3 b3 a3@3 ~]
  [[a2,e3]@2 ~@2 [a2,e3] ~@2 a3@2 c4 ~ c4@3 ~@2]
  [[g3,d4]@2 ~@2 [g3,d4]@2 ~@2 f#3@4 [a3,d4]@3 ~]
  [~@2 [a2,e3] ~ [a2,e3] ~@2 e3 ~ e3 a3!2 [a2,e3] [a2,e3]@3]
  ~@62
>`).s("gm_electric_guitar_muted").gain(0.36).pan(0.8)

// other · overdriven guitar
const overdriven_guitar = note("<~@71 [~@8 b3@2 c#4 e4 b4 a4 b4@2] [g4@7 ~] ~@10>")
  .s("gm_overdriven_guitar").gain(0.48).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@4 ~@11 B@4 C@6 D E@2 D F G E F H I J F J F K F L M@2 N O P Q J R S J F T F T F U F E G F E@2 F V J F J F J F W X@2 ~
  Y@6 ~
>`.pickRestart({
  A: "[~ [a2,e3,a3]@3, a1]/4", B: "[[g3,b3] f#3 [c#4,e4]@2, d4 ~, ~ a3@3]/2",
  C: "[[g3,b3] f#3 [c#4,e4]@2 [e2,g3] [c2,g4] d2@2 [b1,d4]@2 e4@2, d4 ~ d4 a4@3, ~ a3@4 e4@3 ~@4, ~@3 f#4@2 ~]/6", // G C#m Em C5 Bm
  D: "[a3,c#4,e4]@15 ~", E: "[a3,d4,e4]", F: "[a3,c#4,e4]", G: "[a3,d4,e4]@15 ~", H: "[a3,b3,d#4]@15 ~",
  I: "[a3,d4,f#4]", J: "[g3,b3,d4] [f#3,a3,d4]", K: "[g3,b3,d4]@7 ~ [f#3,a3,d4]@8", L: "[g3,a3,d4] [g3,c4,d4]",
  M: "[f#3,a3,d4]/2", N: "[g3,b3] [f#3,a3] [e3,g3] [f#3,a3], d4", O: "[g3,c4,e4] [f#3,a3,d4]",
  P: "[f#3,a3,d4] [g3,b3,e4]", Q: "[g3,c4] [a3,c#4], e4", R: "[a3,c4,e4] [f#3,b3,d#4]", S: "[g3,b3,e4] [f#3,a3,d4]",
  T: "[g3,b3] [f#3,a3], d4", U: "a3 b3, [g3,d4]", V: "e4 f#4, [a3,d4]", W: "[g3,a3] [b3,g4], d4",
  X: "[[a3,e4]@29 ~@3]/2", Y: "[[f#3,a3,d4]@34 ~ [e3,c#4]@61, ~@17 a3@31]/6",
})).s("gm_synth_strings_1").gain(0.4)

// chords · rock organ
const rock_organ = note("<~@8 A@3 ~ B@3 ~@68>".pickRestart({
  A: "[e5@8 d5@11 ~@5, a5@19 ~@5]/3", B: "[e5@14 d#5 [e5,f#5] d#5@16 [d5,a5]@14 ~@2, a4@23 ~]/3",
})).s("gm_rock_organ").gain(0.04).pan(0.7)

// other · distortion guitar
const distortion_guitar = note("<~@51 A B C D A D E D F G D H I J G A D C D C D K L@2 ~@8>".pickRestart({
  A: "g2@2 b2 e3 d3@4", B: "a2@15 ~", C: "g2 d3", D: "a2", E: "e2 g2", F: "b2", G: "d3", H: "b2@3 b2", I: "d3@3 d3",
  J: "f#2@3 f#2", K: "g2", L: "[a2@15 ~]/2",
})).s("gm_distortion_guitar").gain(0.48)

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

// … 56 more lines

More by Giorgia