Strudelify

Telefonami tra vent'anni

Dalla

KeyG majorTempo137 bpm
0:00/0:00
// Telefonami tra vent'anni — Dalla
// 137 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 169 bars on a 24-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 25.
setcpm(137/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(`<
  ~@25 A B@2 C D E F@2 C G H I J I K L@2 M N@2 O P Q R Q R S T U P Q V Q W X Y Z Y Z Y AA@2 ~@2 AB AC@2 AD AE@2 AF@2 AD
  AG AH I J AI AJ AK@2 AL@2 AM AN AO AP AQ AR@2 AS AT@2 I J I K L@2 M N@2 AU@4 AV@3 AW AX@4 AV@3 AW AY@4 AZ@3 AW BA@5
  BB@3 BC@4 BD@4 BC@4 BE@8 BF@8 BG ~
>`.pickRestart({
  A: "~@2 d2", B: "[g1@3 g1]/2", C: "c2@3 d2", D: "g1", E: "[g1,g2]@2 c2 d2", F: "[g1@6 d2 g1]/2", G: "g1@6 g2@5 c2",
  H: "d2 g1 a1 b1", I: "c2 b1", J: "a1@3 b1", K: "a1@2 ~ g1", L: "[~ g2@3, g1]/2", M: "g1@2 g1!2", N: "g1@11 g1",
  O: "~@5 d2@3 c#2@3 ~, g1 ~", P: "c2@2 ~ c2", Q: "e2@2 ~ e2", R: "a1@2 ~ a1", S: "d2@6 ~@2 c2 d2@2 a1",
  T: "g1@9 ~@2 g1", U: "g1@2 d2 g1", V: "a2@2 ~ a2", W: "a1@2 e2 a2", X: "d2", Y: "g1 ~@5 g1 ~@5 g1 ~@5 g1 ~@5",
  Z: "g1 ~@5 g1 ~@3 g1@2 g2@3 ~ d2@8", AA: "[g1 g2@9 ~@6]/2", AB: "~@5 d2@3", AC: "g1/2", AD: "c2@4 f1 ~ f#1 ~",
  AE: "[g1@33 ~ g1@2 c2@6 d2@6]/2", AF: "[g1@3 d2]/2", AG: "g1 d2", AH: "g2@3 ~ d2@2 g1@6 a1@6 b1@6", AI: "c2@4 b1@3 ~",
  AJ: "a1@9 ~@2 f1", AK: "[g1@6 c2 d2]/2", AL: "[g1@6 ~ d2]/2", AM: "g1 g2", AN: "d2@5 ~@3", AO: "c2@5 ~ d2 ~",
  AP: "g1@9 ~ g2@14", AQ: "d2@4 c2 ~ f#1 ~", AR: "[g1@12 d2@2 g1 ~]/2", AS: "c2@3 ~ d2@2 g1 ~", AT: "[g1@5 g1 a1 b1]/2",
  AU: "[g1@9 c2@4 ~@2 c2@2 e2@4 ~@2 e2@2 a1@6 ~]/4", AV: "[~ e2@6 e2@2 a1@4 ~@2 a1@2 d2@6 ~]/3", AW: "~ a1@2 g1@18 ~@3",
  AX: "[~ g1@2 g1@12 d2@6 g1@6 c2@12 ~@6 c2@6 e2@12 ~@6 e2@6 a1@18 ~@3]/4",
  AY: "[~ g1@2 g1@12 ~@4 g1@2 g1@6 c2@12 ~@6 c2@6 e2@12 ~@6 e2@6 a1@18 ~@3]/4",
  AZ: "[~ e2@6 e2@2 a1@4 a1@2 e2@2 d2@6 ~]/3", BA: "~ g1@2 g1@18 ~@3",
  BB: "[~ g2@2 c2@12 ~@6 c2@6 e2@12 ~@6 e2@6 a2@12 ~@9]/3",
  BC: "[~ a2@2 e2@12 ~@6 c2@6 a1@18 e2@6 d2@12 a1@12 g2@18 ~@3]/4",
  BD: "[~ g2@2 g2@12 g1@12 c2@12 ~@6 c2@6 e2@12 ~@6 e2@6 a2@12 ~@9]/4",
  BE: "[~ g2@2 g2@12 g1@12 c2@9 ~ c2@2 c3@4 c3@2 g2@6 e2@9 ~ e2@2 e2@6 e2@6 a2@9 ~ a2@2 a2@6 g2@6 e2@18 c2@6 a1@18 e2@6 d2@12 a1@12 g2@18 ~@3]/8",
  BF: "[~ g2@2 g2@18 g1@6 c2@9 ~ c2@2 c3@4 c3@2 g2@6 e2@9 ~ e2@2 e2@6 e2@6 a2@9 ~ a2@2 a2@6 g2@6 e2@18 c2@6 a1@18 e2@6 d2@12 a1@12 g2@18 ~@3]/8",
  BG: "~ g2@2 g2@18 ~@3",
})).s("gm_fretless_bass").gain(0.45)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@17 A ~ B C ~@17 D ~@21 E@5 ~@8 F ~@23 G ~ B ~@7 H ~@22 I@5 ~@34>".pickRestart({
  A: "~@4 a2 ~@3", B: "~@3 b2", C: "~ b2", D: "~@9 [b3,d4] ~@2",
  E: "[g3,b3,d4,f4] ~ [g3,b3,d4,f4] ~ [g3,b3,d4,f4] ~ [g3,b3,d4,f4] ~", F: "~@9 b3 ~@2", G: "~@4 a3 ~@3",
  H: "~@13 g2@7 ~@4", I: "~ f4 ~ f4 ~ f4 ~ f4",
})).s("gm_acoustic_guitar_steel").gain(0.14)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A B C B D B C B C@2 E F B C@2 G C@2 H I E J C B C B F C E C A C@2 E D C H J E J C K C L C M N@2 O P O Q C@2 R S T S O
  Q ~@5 U C@4 U F E V@2 A C E U W H J E J C B F C@2 U G C B C D E C@2 H J H X C@3 A C Y Z@2 AA@2 AB@2 AC AD AE AF AA@2
  AG@2 AH AD AI@2 AA@2 AJ@2 AH AD AK AL@3 AM AN AO@2 AP@2 AQ AR AS@2 AT@2 AP@2 AQ AD AS@2 AU@2 AV@2 AW AX AS@2 AY@2 AZ@2
  BA BB ~
>`.pickRestart({
  A: "[b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@4 [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // G
  B: "[b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [c4,d4,g4]@3 ~ [c4,d4,g4]@2 [c4,d4,g4]@3 ~ [c4,d4,g4]@2", // G Csus2
  C: "[b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // G
  D: "[b3,d4,g4]@4 [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // G
  E: "[c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2", // C
  F: "[b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@4 [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // G
  G: "[c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]@4 [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2", // C
  H: "[c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // C G
  I: "[a3,c4,e4]@4 [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2", // Am
  J: "[a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2", // Am
  K: "[a3,c4,f4]@3 ~ [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2", // F
  L: "[a3,c4,f4]@3 ~ [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2", // F
  M: "[a3,c4,f4]@3 ~ [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@2", // F
  N: "[[g3,c4,e4]@6 [g3,c4,e4]@6 [g3,c4,e4]@6 [g3,e4]@6 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2, ~@3 c4@3 ~@2]/2", // C Em
  O: "[a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [c4,e4]@3 ~ [g3,c4,e4]@2, ~@3 a3", // Am C
  P: "[g3,b3,e4]@4 [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2", // Em
  Q: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@2 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@2 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@2 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@2", // D
  R: "[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,c4,e4]@3 ~ [g3,c4,e4]@2", // C
  S: "[g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@2", // Em
  T: "[a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4]@2 [c4,e4]@3 ~ [g3,c4,e4]@2, ~@3 a3", // Am C
  U: "[d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // G5 G
  V: "[[d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [c4,d4,g4]@3 ~ [c4,d4,g4]@2 [c4,d4,g4]@3 ~ [d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2, ~@11 c4@7 ~@6]/2", // G5 G Csus2 G5 G
  W: "[d4,g4]@4 [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2 [b3,d4,g4]@3 ~ [b3,d4,g4]@2", // G5 G
  X: "[a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 [a3,c4,e4]@4 [a3,c4,e4]@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2", // Am
  Y: "[b3,d4,g4]@4 [b3,d4,g4]@3 [b3,d4,g4]@4 [b3,d4,g4]@2 ~ [d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@4, ~@13 b3@4 ~@7", // G G5 G
  Z: "[[b3,d4,g4]@3 [g3,c4,e4]@6 [g3,c4,e4]@6 [g3,c4,e4]@6 [g3,e4]@6 [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3, ~@7 c4@6 ~@3]/2", // G C Em
  AA: "[[g3,b3,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4]@3 [g3,c4,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3, ~@7 a3@2 ~@7]/2", // Em Am C Em
  AB: "[[g3,b3,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4]@3 [g3,c4,e4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3, ~@7 a3@2 ~@7]/2", // Em Am C D
  AC: "[a3,d4,f#4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3", // D G
  AD: "[b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3", // G
  AE: "[b3,d4,g4]@3 [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,c4,e4]@3", // G C
  AF: "[g3,c4,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3", // C Em
  AG: "[[g3,b3,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4]@3 [g3,c4,e4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3, ~@7 a3@2 ~@7]/2", // Em Am C D
  AH: "[a3,d4,f#4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3", // D G
  AI: "[[b3,d4,g4]@2 ~ [g3,c4,e4]@6 [g3,c4,e4]@6 [g3,c4,e4]@6 [g3,e4]@6 [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3, ~@7 c4@6 ~@3]/2", // G C Em
  AJ: "[[g3,b3,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [c4,e4]@3 [g3,c4,e4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3, ~@7 a3@2 ~@7]/2", // Em Am C D
  AK: "[b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3", // G
  AL: "[b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3", // G
  AM: "[b3,d4,g4]@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,c4,e4]@3", // G C
  AN: "[g3,c4,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3", // C Em
  AO: "[[g3,b3,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [c4,e4]@3 [g3,c4,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3, ~@7 a3@2 ~@7]/2", // Em Am C Em
  AP: "[[g3,b3,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4]@3 [g3,c4,e4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@7 a3@2 ~@7]/2", // Em Am C D
  AQ: "[a3,d4,f#4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3", // D G
  AR: "[b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3", // G
  AS: "[[b3,d4,g4]@2 ~ [g3,c4,e4]@6 [g3,c4,e4]@6 [g3,c4,e4]@6 [g3,e4]@6 [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3, ~@7 c4@6 ~@3]/2", // G C Em
  AT: "[[g3,b3,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [c4,e4]@3 [g3,c4,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3, ~@7 a3@2 ~@7]/2", // Em Am C Em
  AU: "[[g3,b3,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [c4,e4]@3 [g3,c4,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3, ~@7 a3@2 ~@7]/2", // Em Am C Em
  AV: "[[g3,b3,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4]@3 [g3,c4,e4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@7 a3@2 ~@7]/2", // Em Am C D
  AW: "[a3,d4,f#4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3", // D G
  AX: "[b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3", // G
  AY: "[[g3,b3,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4]@3 [g3,c4,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@2 ~ [g3,b3,e4]@3 [g3,b3,e4]@3 [g3,b3,e4]@3, ~@7 a3@2 ~@7]/2", // Em Am C Em
  AZ: "[[g3,b3,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@3 [a3,c4,e4]@2 ~ [a3,c4,e4]@3 [a3,c4,e4]@3 [c4,e4]@3 [g3,c4,e4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4]@3, ~@7 a3@2 ~@7]/2", // Em Am C D
  BA: "[a3,d4,f#4]@3 [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3 [b3,d4,g4]@2 ~ [b3,d4,g4]@3", // D G
  BB: "[b3,d4,g4]!2 ~@6", // G
})).s("gm_acoustic_guitar_steel").gain(0.15)

// chords · epiano1
const epiano1 = note(`<
  ~@17 A B C D ~ E F G ~ H@2 I H@4 I H@2 J K J L M ~@35 N ~@3 O@2 P@2 Q R S@2 T U V Q W Q X Y Q Z O@2 P@2 AA@2 AB AC AB
  AD@2 ~@60
>`.pickRestart({
  A: "~@14 b4@2 c5@3 ~ c#5 d5@2 ~", B: "[g4,c5] [b4,d5]", C: "[c5,e5]@4 ~ [g4,b4,d5] ~@2", D: "d#5 ~@5 g5@18, [c5,e5]",
  E: "~@9 d4 e4 g4", F: "d4", G: "[g3,b3,d4]", H: "[g3,b3,d4]/2", I: "[g3,c4,e4]", J: "~ [e4,g4] ~ [d4,g4], c4 b3",
  K: "[a3,c4,e4]@3 [b3,d4,g4]", L: "[a3,c4,e4]", M: "[g3,b3,d4] [b3,d4,g4]", N: "~@4 b5@3 d6@9 ~@8",
  O: "[e5@6 g5@6 d5@6 g5@5 c5@18 d5@6 ~]/2", P: "[e5@6 g5@6 d5@6 g5@5 c5@18 ~@7]/2", Q: "[g4,b4,d5]",
  R: "~@9 [g4,c5,d5] ~@2", S: "[[g4,b4,d5]@39 [g4,b4,d5] ~ b4 g4 ~@5, ~@41 g5@2 ~@5]/2", T: "~ g4@3, [b4,d5]",
  U: "~@15 b4@2 ~ g4@4 ~@2", V: "[g4,c5,e5]@7 ~", W: "~@17 [g4,b4,d5] [g4,c5] ~@5, ~@9 d5 ~@2",
  X: "~@11 d5@7 ~@6, ~@3 g4@3 ~@2, ~@5 b4@4 ~@3", Y: "[g4,c5,e5]", Z: "~@2 [g4,b4,d5] ~ [g4,a4,d5] ~ [g4,b4,d5] ~",
  AA: "[~@6 g3 ~ [f3,a3,c4]@8, ~@5 a3@3 f4@7 ~, ~@7 [g3,b3,d4]@2 ~@7]/2", AB: "[g3,b3,d4], g4@7 ~",
  AC: "[f3,a3,c4], f4@7 ~", AD: "[g4@20 f4@7 ~@21, [g3,b3,d4]@9 ~@7]/2",
})).s("gm_epiano1").gain(0.24)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~@40 A B C B C D E F G F G H I@2 E F G F G H J@7 ~@41 K@6 L@8 M@8 N@8 O@8 P@16 Q@7
>`.pickRestart({
  A: "~ [b3,d4,g4]", B: "[a3,c4,f4]", C: "[b3,d4,g4]", D: "~ e4, [a3,c4,f4]", E: "[e4,g4,c5]", F: "[e4,g4,b4]",
  G: "[e4,a4,c5]", H: "[d4,f#4,a4]", I: "[d4,f4,g4,b4]/2", J: "[d4,f4,g4,b4,g5]/7",
  K: "[~ [e4,g4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [d4,f#4,a4]@7]/6", // C Em Am Em Am D
  L: "[~ [d4,f4,g4,b4]@16 [e4,g4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [d4,f#4,a4]@7]/8", // G7 C Em Am Em Am D
  M: "[~ [d4,g4,b4]@16 [e4,g4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [d4,f#4,a4]@7]/8", // G C Em Am Em Am D
  N: "[~ [d4,f4,g4,b4,g5]@48 [e4,g4,c5]@8 [e4,g4,b4]@7]/8", // G7 C Em
  O: "[~ [e4,a4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [d4,f#4,a4]@8 [d4,g4,b4]@16 [e4,g4,c5]@8 [e4,g4,b4]@7]/8", // Am Em Am D G C Em
  P: "[~ [e4,a4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [d4,f#4,a4]@8 [d4,f4,g4,b4]@16 [e4,g4,c5]@8 [e4,g4,b4]@7]/8", // Am Em Am D G7 C Em
  Q: "[~ [e4,a4,c5]@8 [e4,g4,b4]@8 [e4,a4,c5]@8 [d4,f#4,a4]@8 [d4,f4,g4,b4]@16 ~@7]/7", // Am Em Am D G7
})).s("gm_synth_strings_2").gain(0.14)

// other · string ensemble 1
const string_ensemble_1 = note("<~@65 A@8 ~@96>".pickRestart({
  A: "g6/8",
})).s("gm_string_ensemble_1").gain(0.19)

// other · clarinet
const clarinet = note(`<
  ~@59 A B C D E B C F C F C F C G H ~ F I J ~@30 K L@6 M@2 L@6 M@2 N@6 O@2 P Q R@2 L@6 M@2 L@6 M@2 L@6 M@2 S@6 T@2
>`.pickRestart({
  A: "~@23 g5", B: "a5@21 ~ a5@2, ~@21 g5@2 ~", C: "g5", D: "f5@21 ~ f5@2, ~@21 e5@2 ~",
  E: "~@2 d5@2 d5 e5@3, e5@3 ~@5", F: "a5", G: "a5 ~", H: "g5 ~", I: "g5@3 ~", J: "[d5,f5] ~ [d5,f5]@2", K: "~@7 c5",
  L: "[d5 e5@2 g5@2 g5@2 a5@2 b5@2 g5@2 e5@2 g5@2 a5@2 a5@2 a5@2 g5@2 b5@2 g5@2 e5@2 g5@2 g5@2 f#5@2 f#5@4 d5@7]/6",
  M: "[e5 f5@4 g5@4 e5@6 c5]/2",
  N: "[d5 e5@2 g5@2 g5@2 a5@2 b5@2 g5@2 e5@2 g5@2 a5@2 a5@2 a5@2 g5@2 b5@2 g5@2 e5@2 g5@2 g5@2 f#5@2 f#5@4 a5@7]/6",
  O: "[g5@2 a5 g5@24 f5@21]/2", P: "~ f5@2 e5@6 d5@3 e5@12, e5 ~@11", Q: "~ a5@7",
  R: "[g5@2 ~ g5@24 ~@18 c5@3, ~ a5 ~@22]/2",
  S: "[d5 e5@2 g5@2 g5@2 a5@2 b5@2 ~@2 e5@2 g5@2 a5@2 a5@2 a5@2 g5@2 b5@2 g5@2 e5@2 g5@2 g5@2 f#5@2 f#5@4 d5@7]/6",
  T: "[e5 f5@4 g5@4 ~@7]/2",
})).s("gm_clarinet").gain(0.32)

// chords · percussive organ
const percussive_organ = note("<~@60 A@7 ~@63 B@7 ~@32>".pickRestart({
  A: "[d5,f5,a5,b5]/7", B: "[~ [d5,f5,a5,b5]@48 ~@7]/7",
})).s("gm_percussive_organ").gain(0.14)

// other · alto sax
const alto_sax = note("<~@142 A@2 B C D E F G H@3 C D E F G H@3 C D E F G I@3>".pickRestart({
  A: "[c5 c6@15]/2", B: "c5 c#5 d5 e5@2 ~@2 e5 ~ d5@2 ~@4 c5@2 ~@4 d5@2 ~",
  C: "~ e5@4 ~@2 e5 ~ d5@2 ~@2 c5@2 d5@3 ~ e5@2 ~@3", D: "~ e5@5 ~ e5@2 d5@2 ~@4 c5@3 ~@3 d5@2 ~",
  E: "~ e5@4 ~@2 e5@2 d5@2 ~@2 c5@2 d5@3 ~ e5 ~@4", F: "~ e5@2 ~@4 e5@2 d5@2 ~@4 c5@2 ~@4 e5@3",
  G: "~ d5@7 e5@2 ~@5 c5@2 ~@4 e5@3", H: "[~ d5@20 c6@30 e5@2 ~@2 e5 ~ d5 ~@5 c5@2 ~@4 d5@2 ~]/3",
  I: "[~ d5@20 c6@30 ~@21]/3",
})).s("gm_alto_sax").gain(0.68)

// other · synth strings 1
const synth_strings_1 = note(`<
  ~@46 A B C D C E F G H B C D C E I@6 ~@42 J K@6 L@2 K@6 L@2 M@6 ~@5 N K@6 L@2 K@6 L@2 K@6 L@2 K@6 O ~
>`.pickRestart({
  A: "~@6 c5 d5", B: "e5 g5!2 a5", C: "b5 g5 e5 g5", D: "a5!3 g5", E: "g5 f#5 f#5@2", F: "d5@7 e5", G: "f5 g5",
  H: "e5@6 c5 d5", I: "a5/6", J: "~@7 c5",
  K: "[d5 e5@2 g5@4 a5@2 b5@2 g5@2 e5@2 g5@2 a5@6 g5@2 b5@2 g5@2 e5@2 g5@4 f#5@2 f#5@4 d5@7]/6",
  L: "[e5 f5@4 g5@4 e5@6 c5]/2",
  M: "[d5 e5@2 g5@4 a5@2 b5@2 g5@2 e5@2 g5@2 a5@6 g5@2 b5@2 g5@2 e5@2 g5@4 f#5@2 f#5@4 ~@7]/6", N: "~ e5@6 c5",
  O: "e5 ~@7",
})).s("gm_synth_strings_1").gain(0.32)

// drums · kick
const kick = s("bd").struct(`<
  ~@25 A ~ B@3 C B@2 D@2 C B@3 D@2 E D@3 F D G H D@2 E D E D@5 B I J I J I B ~@15 D B D B K L D B L@2 B K B D E B E B@4
  D L D@3 B M N O P@2 Q P@9 Q P@6 R@5 S P@7 Q P@7 T R@7 U R@7 V ~
>`.pickRestart({
  A: "~@5 x ~@2 x ~@3", B: "x", C: "x ~@4 x ~@2", D: "x ~@10 x", E: "x ~@7 x ~@2 x", F: "x ~@4 x ~@6", G: "x ~@8 x ~ x",
  H: "x ~@2 x ~@7 x", I: "x ~@4 x!2 ~@4 x", J: "x ~@4 x!2 ~ x ~@2 x", K: "x ~ x", L: "x ~@2 x", M: "~ x ~@6",
  N: "~ x ~ x ~@17 x ~@2", O: "~ x ~ x ~@5 x ~@14", P: "~ x ~ x ~@20", Q: "~ x ~ x ~@15 x ~@4",
  R: "~ x ~ x ~@9 x ~ x ~@8", S: "~ x ~ x ~@9 x ~@10", T: "~ x ~ x ~@3 x ~@16", U: "~ x ~ x ~@8 x ~@11", V: "~ x ~@22",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@25 A@20 B A@14 C@5 D ~@14 A@27 E F@7 G F@7 H F@5 I H@5 J F@7 H F@7 K H@7 L H@7 ~@2
>`.pickRestart({
// … 51 more lines

More by Dalla