Strudelify

1981

Through The Years

Kenny Rogers

KeyC minorTempo60 bpm
0:00/0:00
// Through The Years — Kenny Rogers
// 60 bpm, 4/4, key G major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 77 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 38 ms behind the beat; the grid follows it, so its parts stay together.
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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass
const bass = note("<~@4 A@2 B C D@3 E@5 F@8 G@2 H I@4 J@7 K@2 L@2 M@8 N@5 O@5 P@5 Q@8 R@3 ~>".pickRestart({
  A: "[~@7 d2@4 a1@4 d2@4 g2@16 f#2@8 b1@8 e1@13, ~@3 d4@16 ~@45]/2", B: "~@3 d2@8 g1@8 c2@13", C: "~@3 c2@16 b1@12 ~",
  D: "[~@2 c3 d3@16 g2@16 f#2@8 b1@8 e2@16 d2@8 g1@8 c2@13]/3",
  E: "[~@3 b1@16 a1@16 d2@6 ~@2 d2 ~@3 d2@2 ~@2 g2@16 e2@16 a1@11 ~ a1@4 d2@8 c2@8 b1@9 ~@3 b1@4 e2@11 ~ e2@4 a1@12 b1]/5",
  F: "[~ c2 ~ d2@8 c2@8 b1@10 ~@2 b1@4 e2@16 a1@9 ~@3 a1@4 d2@8 c2@8 b1@16 e1@16 c2@23 ~ c2@2 ~@2 b1@2 ~@2 a1@16 d2@7 ~ d2@7 ~ g2@11 ~ f#2@4 e2@16 c2@11 ~ c2@3 ~ d2 ~@3 d2@5 ~@3 d2@4 g1@13]/8",
  G: "[~@3 f#1@7 ~ b1@8 e1@16 d2@8 g1@8 c2@9 ~@3 c2]/2", H: "~@3 c2@12 g1@2 a1@2 b1@10 ~@2 b1",
  I: "[~ c2 ~ d2@7 ~ d2@8 g1@12 g2@4 f#2@8 b1@8 e2@9 ~@3 e2@4 d2@8 g1@8 c2@9 ~@3 c2@4 b1@9 ~@3 b1@4 a1@11 ~ b1]/4",
  J: "[~ c2 ~ d2@7 ~ d3@4 d2@4 g1@8 ~@4 f#1@4 e1@11 ~ e1@4 a1@11 ~ a1@4 d2@8 c2@8 b1@11 ~ b1@4 e2@11 ~ e2@4 a1@11 ~ a1@4 d2@8 c2@8 b1@16 e1@12 g1@2 g#1@2 a1@10 ~@2 a1@4 d2@8 c2@8 b1@9 ~@3 b1]/7",
  K: "[~@3 e1@16 c2@23 ~ c2@2 ~@2 b1@4 a1@11 ~ b1]/2",
  L: "[~ c2 ~ d2@5 ~ d2 ~ d2@3 ~ d2@4 g1@11 ~ g1@3 ~ g1@7 ~ g1@8 d#2@3 ~ d#2@3 ~ d#2@3 ~ d#2]/2",
  M: "[~@3 d#2@4 d#3@4 a#2@4 d#2@4 g#1@8 ~@4 g1@4 f1@11 ~ f1@4 a#1@11 ~ a#1@4 d#2@8 c#2@8 c2@11 ~ c2@4 f1@11 ~ f1@4 a#1@11 ~ a#1@4 d#2@8 c#2@8 c2@16 f1@12 g#1@2 a1@2 a#1@10 ~@2 a#1@4 d#2@8 c#2@8 c2@9 ~@3 c2@4 f2@8 d#2@8 c#2@10 ~@2 c#2]/8",
  N: "[~@3 c#2@8 c2@8 a#1@16 d#2@6 d#3 ~ d#3@2 a#2@2 d#2@3 ~ g#1@8 ~@4 g#1@4 f1@8 ~@4 f1@4 a#1@9 ~@3 a#1@4 d#2@8 c#2@8 c2@9 ~@3 c2@4 f2@8 d#2@8 c#2@11 ~ c#3]/5",
  O: "[~ g#2@2 c#2@8 c2@8 a#1@11 ~ a#1@4 d#2@4 d#3 ~@3 d#3@2 a#2@2 d#2@4 g#1@12 g1@4 f1@7 ~ f1@4 g#1 ~ a1@2 a#1@11 ~ a#1@4 d#2@8 c#2@8 c2@10 ~@2 c2@4 f2@8 f1@4 g#1@2 a1@2 a#1@11 ~ a#1]/5",
  P: "[~@3 d#2@4 d#3@4 c#2@4 c#3@4 c2@11 ~ c2@4 f1@12 g#1 ~ a1@2 a#1@11 ~ a#1@4 d#2@8 c#2@8 c2@10 ~@2 c2@4 f2@8 d#2@8 c#2@10 ~@2 c#2@2 g#1@2 c#2@8 c2@8 a#1@13, ~@147 c2 ~@12]/5",
  Q: "[~ d#2 ~ d#2@4 d#3@3 ~ d#3@2 a#2@2 d#2@3 ~ g#1@11 ~ g#1@2 g1@2 f1@7 ~ f1@8 a#1@11 ~ a#1@3 ~ d#2@8 c#2@8 c2@10 ~@2 c2@4 f2@8 f1@4 g#1@2 a1@2 a#1@11 ~ a#1@4 d#2@4 d#3@4 c#2@4 c#3@4 c2@11 ~ c2@4 f2@8 f1@4 g#1@2 a1@2 a#1@11 ~ a#1@4 d#2@8 c#2@8 c2@9 ~@3 c2@4 f2@8 d#2@8 c#2@10 ~@2 c#2]/8",
  R: "[~@3 c#2@8 c2@8 a#1@16 d#2@7 ~ d#2@8 [g#1,g#2]@32 ~@13]/3", // G#
})).s("gm_acoustic_bass").gain(0.35)

// chords · piano
const piano = note("<A@5 B@7 C@7 D@8 E@2 F@7 G@7 H@8 I@5 J@2 K@7 L@2 M@7 N@2 ~>".pickRestart({
  A: "[~@19 d4@8 ~@4 b4@4 ~@12 e3@4 ~@12 e4@4 ~@4 c4@4 ~@4 g4@4 d4@8 ~@4 f#4@4 ~@12 [b3,g4]@4 ~@12 g4@4 ~@8 [d5,e5,g5,a5,d6]@7 ~ [g3,g4,b4,d5]@13, ~@19 [g2,d3,g3,a3,b3]@16 [e2,b3,f#4,a4]@16 ~@4 e3@12 [d3,e4,g4]@8 [c3,a3,d4,f#4]@8 [b2,b3,a4]@16 e2@16 ~@20 d2@12 ~@13, ~@27 [d4,a4,c5]@8 ~@4 b2@12 [a2,g3,a3]@16 ~@24 d4@8 [b3,g4]@12 ~@12 e4@8 ~@29, ~@43 [e4,g4]@8 c4@8 c4@8 ~@16 f#4@12 ~@8 b2@12 [a2,g3,a3,c4]@16 ~@29, ~@107 [e3,d4,b4]@8 ~@4 e3@12 [d3,a3,c4,e4,g4]@15 ~@14]/5", // Em Dsus4 G Esus4 Em7 D7 B7 D7 …
  B: "[~@3 f#3@8 ~@4 d#5@4 ~@11 g5@4 ~@5 d5@4 ~@6 d5@2 ~@12 [g4,c5,e5]@3 ~@13 f#5@4 [b2,b3,a4,b4,d5]@16 ~@12 c4@4 [g2,d3,g3,b3,d4]@16 ~@4 b3@4 ~@4 a4@4 ~@13 e4@2 ~@4 f3@4 ~ e4 ~@2 c5@4 ~@13 g4@4 b3@8 ~@4 d4@4 a2 a2@12, ~@3 f#4@16 ~@4 b3@12 ~@8 [g3,g4,b4]@8 ~@4 g3@12 ~@3 a5@13 ~@16 e4@7 ~ e4@8 ~@40 g3@8 ~@24 e3@9 ~@7 b3@8 [a3,c4,e4]@13, ~@3 [a4,c#5]@12 ~@4 e5@8 e5@8 ~@12 c5@4 [g4,c5,e5]@12 ~@4 [a4,d5]@16 ~@16 c4@11 ~@37 [e3,b3,e4,g4]@15 ~@8 g2@8 ~@5 g2@13 ~@28, ~@11 b3@8 [e3,g4,b4]@16 [d3,a4,f5]@8 ~@8 c3@15 c3@17 ~@16 [d3,a3]@16 ~@16 [f#2,f#3,a3]@7 ~ [b2,f#3,d#4]@9 ~@3 e2@12 [d2,a3,d4,f4]@8 ~@8 [c2,c4,d4,e4]@16 [b2,g4]@16 ~@13, ~@59 c4@7 ~ f#5@8 d6@8 ~@20 g4@12 ~@44 d4@4 ~@8 [c4,d4,f4,a4]@8 g4@12 ~@4 d4@12 ~@17]/7", // C Bm7 G Am A C D5 Em …
  C: "[~@3 [a3,c4,e4,g4]@8 [c4,e4,g4,c5]@8 ~@12 [g4,b4]@4 ~@12 e3@4 ~@12 g4@3 ~@5 d3@4 [c3,a3,d4,f#4]@8 b3@8 ~@4 a4@4 ~@12 b3@3 ~@9 [a3,c4,e4]@8 ~@4 e4@4 d4@4 d4@4 a3@8 ~@4 d4@4 ~@12 d4@4 ~@8 [a3,c4,e4]@7 ~@5 d3@4 ~@4 g4@4 ~@8 a4@5, ~@3 d3@16 [g2,a3,b3,d4]@16 [e2,f#4,a4]@16 ~@4 e3@11 d2@9 ~@24 [e2,g4]@16 ~@4 e3@12 ~@8 [c3,a3,f#4]@8 [b2,b3]@16 [e3,e4]@16 ~@4 e3@11 ~@9 [c3,a3,c4,e4]@8 [b2,b3,d4,f#4]@13, ~@23 d3@12 ~@4 b2@12 [a2,g3]@16 ~@16 [b2,d4,f#4]@16 ~@4 e3@12 [a3,c4]@8 ~@24 d4@12 ~@4 d4@12 ~@4 c4@8 ~@37, ~@27 [a4,c5]@8 ~@8 [e4,g4]@8 [a3,c4]@8 [a3,c4,e4]@8 [g3,a3,c4]@8 ~@16 b3@8 b3@12 ~@3 a2@17 [d2,g3,a3,c4]@8 ~@28 e2@12 [a2,g3]@16 [d2,g3,a3,c4]@8 ~@21, ~@107 g3@8 g3@16 ~@24 a3@8 g#3@8 g#3@8 ~@45]/7", // Am7 C G D7 Am G F#m7 Em …
  D: "[~@3 b3@8 ~@4 g#4@3 c3 g4@11 ~ g4@4 ~@8 c4@4 [b2,b3,d4,g4]@4 [a3,c4]@8 [g3,a3,c4]@8 [a3,c4,e4,g4]@8 [a3,c4,e4,g4]@8 ~@12 [g4,b4]@4 ~@8 [e4,g4]@8 ~@8 [c4,e4]@8 [d2,d3,a3,c4,e4,g4] ~@3 [d2,d3,a3,c4,e4,g4]@12 ~@8 [g3,b3]@8 ~@4 b3@4 ~@4 a4@4 ~@12 d4@2 e4@2 ~@4 d3@4 ~@4 g3@4 ~@12 e4@4 ~@12 f#4@4 [b2,a3,b3,d4]@13, ~@3 [e3,d4,f4]@16 c3@28 ~@4 [a2,e4,g4]@16 [d2,d3]@15 ~ [g2,a3,b3,d4]@16 [e2,f#4,a4]@16 [c2,d4,f4]@16 ~@20 d3@12 ~@8 [b2,f#3,d#4]@8 ~@4 b2@11 ~@9 [g2,c4,f4,a4]@9 ~@3 c3@12 ~@4 c3@12 ~@13, ~@3 g#4@12 ~@4 d4@20 d4@8 ~@100 b3@8 ~@24 b3@8 [g3,b3]@7 ~@17 c4@8 [g3,c4]@8 ~@8 a4@8 ~@13, ~@11 b3@8 c4@24 ~@44 d3@12 ~@4 b2@12 ~@4 c3@12 ~@16 [g2,a3,d4]@16 [f#2,f#3,a3]@8 ~@8 [e2,e4,g4]@15 ~ [d2,a3,d4,f4]@8 ~@8 [c2,d4,g4]@16 [c2,a3,d4]@16 ~@13, ~@19 e4@16 [e4,g4]@12 ~@44 [a4,c5]@8 ~@112 e4@12 ~@4 f#4@12 ~@17]/8", // G Am Am7 G Em C Am7 G …
  E: "[~@11 [g3,a3,c4]@8 ~@8 b3@4 [g3,b3]@4 ~@4 b3@4 ~@4 a4@4 ~@8 [g3,b3]@4 d4, ~@2 [e4,g4]@17 b3@8 [d4,g4]@8 ~@16 b3@8 ~@5, ~@3 d3@16 ~@4 d3@12 ~@8 [b2,f#3,d#4]@8 ~@13, ~@3 [a3,c4]@8 ~@8 g3@12 ~@20 [e3,e4,g4]@13, ~@7 d2@12 [g2,a3]@16 [f#2,f#3,a3]@7 ~@13 e2@9]/2", // Am7 G Em G5 B Am Em Gsus2 …
  F: "[~ e4@2 ~@4 d2@4 [g2,c4,d4,f4,a4]@6 ~@10 [g3,c4,e4]@8 b3@8 ~@4 g4@4 ~@8 [g3,a3,c4]@8 ~@8 a3@8 ~@12 [g4,b4]@4 ~@12 e3@4 ~@12 g4@3 ~@5 d3@4 [c3,a3,d4,f#4]@8 b3@8 ~@4 a4@4 ~@12 b3@3 ~@9 [a3,c4,e4]@8 ~@4 e4@4 d4@4 d4@4 a3@8 a3@4 d4, ~@3 [d3,a3,d4,f4]@8 ~@6 g4@18 g4@12 ~@8 e3@12 [a3,c4]@8 [g3,c4]@16 [a4,c5]@8 ~@8 [e4,g4]@8 [a3,c4]@8 [a3,c4,e4]@8 [g3,a3,c4]@8 ~@16 b3@8 b3@12 ~@3 a2@17 [d2,g3,a3,c4]@8 ~@21, ~@18 d4@17 ~@8 b3@8 [a3,c4]@8 ~@8 g4@20 d3@12 ~@4 b2@12 [a2,g3]@16 ~@16 [b2,d4,f#4]@16 ~@8 g3@8 g3@16 ~@29, ~@18 e4 c4@4 c2@12 ~@32 [d2,e4]@32 [e2,f#4,a4]@16 ~@15 d2@9 ~@24 [e2,g4]@16 ~@4 e3@12 ~@8 [c3,a3,f#4]@8 [b2,b3,d4]@13, ~@19 c3@16 [b2,d4]@16 [a2,e4]@16 ~@4 d3@12 [g2,a3,b3,d4]@16 ~@20 e3@12 ~@36 e3@12 [a3,c4]@8 ~@37]/7", // Dm7 C Am7 G D7 Am Dm Am …
  G: "[~@15 d4@4 ~@8 [a3,c4,e4]@7 ~@5 d3@4 ~@4 g4@4 ~@8 a4@8 b3@8 ~@4 g#4@3 c3 g4@11 ~ g4@4 ~@8 c4@4 [b2,b3,d4,g4]@4 [a3,c4]@8 [g3,a3,c4]@8 [a3,c4,e4,g4]@8 [a3,c4,e4,g4]@8 [g3,b3,d4]@8 ~@16 [b3,d4,g4]@7 ~ [a#3,c#4,f4,g#4]@8 ~@16 [a#5,c#6,f6,g#6]@8 [g#3,c4,d#4]@8 [g#3,c4,d#4]@5, ~@3 [e3,e4]@16 ~@4 e3@11 ~@9 [c3,a3,c4,e4]@8 [b2,b3,d4,f#4]@16 ~@8 b3@8 c4@24 ~@40 d3@12 d3@8 d3@11 ~ d#3@12 d#3@20 ~@13, ~@3 d4@12 ~@4 c4@8 ~@40 g#4@12 ~@4 d4@20 d4@8 ~@44 [g3,b3,d4]@7 ~ [g3,a3]@15 ~@17 [a#4,c#5,f5,g#5]@16 ~@13, ~@3 g#3@8 g#3@8 ~@48 [e3,d4,f4]@16 c3@28 ~@4 [a2,e4,g4]@16 [d2,d3]@16 g2@31 ~ d#2@32 g#2@13, ~@7 e2@12 [a2,g3]@16 [d2,g3,a3,c4]@8 ~@40 e4@16 [e4,g4]@12 ~@52 [b3,d4]@8 ~@16 [a#3,c#4,f4,g#4]@24 ~@13]/7", // Am G Am Am7 G A#m7 G# E …
  H: "[~@11 [c4,d#4,f4,g#4]@8 [g#3,a#3,c#4,f4]@8 [g#3,a#3,c#4,f4]@8 ~@4 d#3@4 ~@4 c#2@4 [a#3,d#4]@8 ~@2 [a#3,d#4,g4]@6 [a3,c4,d#4]@8 ~@4 f3@4 [g#3,a#3,c#4,f4]@8 ~@4 a#2@4 [d#2,a#3,c#4,f4,g#4]@8 ~@4 c#2@4 ~@12 [a#3,c4,d#4,g4]@4 ~@12 f2@4 [g#3,a#3,c#4,f4]@8 [g#3,a#3,c#4,f4]@8 [d#2,d#3,a#3,c#4,f4,g#4]@8 [c#2,c#3,a#3,d#4,g4]@8 c2 ~@7 [a#3,c4,d#4,g4]@8 [a3,c4,d#4,f#4]@8 [a3,c4,d#4,f#4]@8 [c#4,d#4,f4,g#4]@8 [c#4,d#4,f4,g#4]@8 [c#4,d#4,f4,g#4]@8 [c3,c4,d#4,g#4]@8 [a#2,a#3,c#4,f4,g#4]@13, ~@3 [f2,f3,g#3]@16 ~@16 [d#2,f3,g#3,a#3,c#4]@8 ~@16 c2@9 ~@55 c2@8 f2@12 ~@4 a#2@15 ~@17 [c3,g3]@16 f2@16 ~@45, ~@3 c4@8 ~@56 f2@16 a#2@12 ~@12 [c#3,a#3,d#4,g4]@8 [c3,g3]@16 ~@4 f3@12 ~@36 c2@13 ~@15 [c#2,c#3]@24 ~@21, ~@7 c3@12 a#2@16 ~@8 [c#3,a#3,d#4,g4]@8 [c3,g3,c4]@17 ~@7 [a3,c4,d#4]@8 ~@8 [g#3,a#3,c#4,f4]@8 ~@16 [a#3,c4,d#4]@12 ~@4 [a3,c4,d#4,f4]@16 ~@32 [a#3,c4,d#4]@8 ~@69]/8", // Fm7 A#m7 D#5 D# Adim A#m7 Cm7 A#m7 …
  I: "[~@3 [a#3,c#4,f4,g#4]@8 [a#3,c#4,f4,g#4]@7 ~ [g#3,c4,d#4]@8 [g#3,c4,d#4]@7 ~@13 d#4@4 [f3,g#3,a#3,c#4]@8 [f3,g#3,a#3,c#4]@8 [d#2,d#3,g#3,a#3,c#4,f4]@8 [c#2,c#3,a#3,d#4,g4]@8 ~@8 [c4,d#4,g4,a#4]@8 [a3,c4,d#4,f4]@8 [a3,c4,d#4,f4]@8 [c#4,f4,g#4]@8 [c#4,d#4,f4,g#4]@8 [c#4,d#4,f4,g#4]@8 [c3,c4,d#4,g#4]@8 [a#3,c#4,f4,g#4]@8 [a#3,c#4,f4,g#4]@5, ~@3 [d#2,d#3]@16 g#2@16 f2@15 ~@37 c2@13 ~@15 [c#2,c#3]@24 ~@21, ~@35 [f3,g#3,c4,d#4]@7 ~ [f3,g#3,c4]@8 ~@32 [c4,d#4]@8 ~@69, ~@39 c3@12 a#2@16 ~@16 [c3,g3,a#3]@16 f2@16 ~@32 a#2@13]/5", // A#m7 G# A#m7 D#7 Cm7 F7 C# G# …
  J: "[~@11 [a#4,c#5,f5,g#5]@8 [g#3,c4,d#4]@8 [g#3,c4,d#4]@8 ~@8 [g#3,c4,d#4]@8 [g#3,a#3,c#4]@8 [g#3,a#3,c#4]@5, ~@3 [d#2,d#3,a#3,c#4,f4,g#4]@16 g#2@16 [f2,f3]@16 ~@13, ~@35 [g#3,c4,d#4]@8 ~@21, ~@39 c3@12 a#2@13]/2", // A#m7 G# A#m7 F G#
  K: "[~@7 f4@4 [d#4,g4]@4 [d#4,g4,a#4]@4 [c4,d#4]@8 [g3,c4,d#4]@8 [a3,c4,d#4,f4]@8 [a3,c4,d#4,f4]@8 [g#3,a#3,c#4,f4]@8 [g#3,a#3,c#4,f4]@8 [d#2,d#3,a#3,c#4,f4,g#4]@8 [c#2,c#3,a#3,d#4,g4]@8 [a#3,c4,d#4]@8 [g3,a#3,c4,d#4]@8 ~@12 c3@4 [c#4,f4]@8 [c4,c#4,f4,g#4]@8 ~@4 d#3@4 ~ c#2 ~@2 [d#5,g5]@4 ~@12 c3@4 ~@12 f3@4 [c#4,d#4,f4,g#4]@8 [c#4,d#4,f4,g#4]@8 [c#4,d#4,f4,g#4]@8 [c3,c4,d#4,g#4]@8 [a#3,c#4,f4,g#4]@8 [a#3,c#4,f4,g#4]@5, ~@3 [d#3,g#3,a#3,c#4]@8 [c#3,a#3]@8 [c2,c3,g4]@16 f2@16 a#2@16 ~@16 [c2,c3,g4]@16 [f2,c4]@16 ~@16 [d#2,g#3,a#3,c#4,f4]@8 ~@8 [c2,g4,a#4,c5,d#5]@16 f2@16 [c#2,c#3]@25 ~@20, ~@99 [a3,d#4]@8 [f3,a3,d#4]@8 ~@40 [g3,a#3,c4,d#4]@8 [a3,c4,d#4,f4]@7 ~ [a3,c4,d#4,f#4]@9 ~@44, ~@103 c3@8 ~@4 [a#2,g#3,a#3]@16 ~@8 [c#3,a#4,c#5,f5,g#5]@8 c3@12 ~@8 f3@8 ~@36 a#2@13]/7", // D# Cm F7 A#m7 D#7 Cm7 C# C#maj7 …
  L: "[~@15 d#3@4 [g#3,c4,d#4]@8 [g#3,c4,d#4]@8 ~@8 [c4,d#4,f4,g#4]@8 [g#3,a#3,c#4,f4]@8 [g#3,a#3,c#4,f4]@5, ~@3 [d#2,a#4,c#5,f5,g#5]@16 g#2@16 [f2,f3,g#3]@16 ~@13, ~@3 d#3@12 ~@24 c3@12 a#2@13, ~@11 [a#3,c#4,f4,g#4]@8 ~@16 [c4,d#4]@8 ~@21]/2", // G# Fm7 A#m7 Fm A#m7 Cm
  M: "[~@3 [d#2,d#3,f3,g#3,a#3,c#4]@8 [c#2,c#3,a#3,d#4,g4]@8 [c4,d#4]@8 [g3,a#3,c4,d#4]@8 ~@8 [a3,c4,d#4,f4]@8 ~@6 [a#4,c#5,f5,g#5]@2 [a#4,c#5,f5,g#5]@6 [a#3,c#4,f4,g#4]@2 [d#2,d#3,a#3,c#4,f4,g#4]@8 [c#2,c#3,a#3,d#4,g4]@8 [a#3,c4,d#4]@8 [a#3,c4,d#4,g4]@8 ~@8 [a3,c4,d#4,f4]@8 [g#3,a#3,c#4,f4]@8 [g#3,a#3,c#4,f4]@8 [d#2,d#3,f3,g#3,a#3,c#4]@8 [c#2,c#3,a#3,d#4,g4]@8 [a#3,c4,d#4]@8 [g3,a#3,c4,d#4]@8 f2@8 [d#2,d#3]@5 ~@3 [c#4,d#4,f4,g#4]@7 ~ [c#4,d#4,f4,g#4]@7 ~ [c#4,d#4,f4,g#4]@8 [c3,c4,d#4,g#4]@8 [a#2,a#3,c#4,f4,g#4]@13, ~@19 [c2,c3,g4,a#4]@16 f2@16 [a#2,g#3,a#3,c#4,f4]@16 ~@16 [c2,c3,g3]@16 f2@17 ~@31 [c2,c3,g4]@16 ~@61, ~@35 [a3,c4,d#4,f4]@8 ~@56 [a3,c4,d#4,f4]@8 ~@8 a#2@16 ~@48 c#3@23 ~@22, ~@39 f3@12 ~@52 f3@13 ~@47 [a3,c4,d#4,f#4]@13 ~@48]/7", // A#m7 D#7 Cm Cm7 F7 A#m7 D#7 Cm7 …
  N: "[~@3 [a#3,c#4,f4,g#4]@8 [a#3,c#4,f4,g#4]@8 [g#2,g#3,c4,d#4,g#4]@41 ~@4, ~@3 [d#2,d#3]@17 ~@44]/2", // A#m7 G# D#
})).s("gm_piano").gain(0.54)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@12 A B C D E F G H@2 I@6 J@3 K@2 B C D L M C N@5 O P Q R S R T@3 O U V@3 O U W X W Y Z@3 O U W AA W U AB@3 ~@2
>`.pickRestart({
  A: "~@27 [d4,g4,b4] ~@4", B: "~@11 [e4,g4,b4] ~@15 [c4,e4,g4] ~@4", C: "~@11 [a3,c4,e4,g4] ~@15 [b3,d4,f#4,a4] ~@4",
  D: "~@11 [b3,e4,g4] ~@15 [a3,c4,e4] ~@4", // Em Am
  E: "~@15 a3@4 ~@8 [b3,d4,f#4,a4] ~@4, ~@3 g4@16 ~@13, ~@7 e4@12 ~@13, ~@11 c4@7 ~@14", // Bm7
  F: "~@11 [b3,d4,e4,g#4] ~@15 [a3,c4,e4,g4] ~@4", G: "~@11 [c4,e4,g4] ~@15 [b3,d4,f#4] ~@4",
  H: "[~@11 [b3,d4,f4,g#4] ~@23 c4@7 ~ [c4,e4,g4]@3 ~ [b3,d4,g4]@3 ~ [a3,c4,e4,g4]@12 ~, ~@19 g4@23 ~@22, ~@23 e4@13 ~@28, ~@27 c4@7 ~@30, ~@31 g3@11 ~@22]/2", // Bdim C G Am7
  I: "[~@3 [a3,c4]@14 ~@10 g4@4 b4@4 ~@12 g3@3 ~@13 g4@3 ~ [a3,c4,e4,g4] ~@3 [a3,c4,e4,g4]@11 ~@9 g4@4 b4@4 ~@8 d#4@4 ~@4 e4@8 g4@4 e4@4 ~@6 f4@2 ~@2 f4@2 d4@2 a3@2 ~@8 g3@4 g4@4 f#4@8 a4@2 f#4@2 d4@2 a3@2 b3@13, ~ [e4,g4]@15 ~@3 b3@13 ~@7 e4@12 ~@8 e4@7 ~@21 d4@8 ~@8 f#4@8 ~@24 d4@5 ~@7 e4@12 ~@33, ~@23 d4@9 ~@3 g4@16 ~@48 a4@12 ~@28 a4@4 ~@49, ~@43 b3@8 ~@4 c4@8 ~@20 b3@12 ~@16 b3@17 ~@3 a3@10 ~@10 c4@7 ~@34]/6", // Am Am7 Em
  J: "[~@11 e4@4 g4@4 d4@8 b3@4 g4@4 a4@4 f#4@4 d#4@4 b3@4 e4@4 ~@4 e4@2 g4@2 e4@4 ~@6 d4@2 f4@4 e4@2 d4@2 [g3,c4]@13, ~@3 a3@12 ~@40 g3@5 ~@11 a3@8 ~@17, ~@7 c4@8 ~@42 b3@5 ~@34]/3", // C5
  K: "[~@11 g4@4 d4@3 ~ [a3,c4,e4]@16 [a3,c4,g4]@7 ~ [a3,c4,e4,g4]@8 ~@8 [d4,g4,b4] ~@4, ~@7 b3@8 ~@20 e4 ~@28]/2", // Am Am7 G
  L: "~@3 [c4,e4,g4]@7 ~ [c4,e4,g4]@7 ~@9 [b3,d4,f#4,a4] ~@4", M: "~@11 [b3,e4,g#4] ~@15 [c4,e4,g4] ~@4",
  N: "[~@11 [b3,d4,f4,g#4] ~@13 e4@2 ~@4 c4@2 g3@2 c4@2 ~@4 e4@2 ~@4 c4@4 ~@4 e4@2 ~@6 a3@3 ~ [c4,e4,g4]@14 ~@2 [b3,d4,g4]@23 ~ [b3,d4,g4]@4 ~@4 [a#3,c#4,f4,g#4]@16 ~@12 a#3@4 ~@8 [c4,d#4,g#4] ~@4, ~@19 g4@4 c4@4 g4@12 c4@4 g4@9 ~@5 g4@9 ~@65 g#4@16 ~@13, ~@21 g3@8 e4@6 ~@2 g3@11 ~@3 a3@10 c4@5 ~@73 c#4@8 ~@13, ~@45 e4@7 ~ c4@5 ~ e4@7 ~@69 f4@11 ~@14]/5", // Bdim C G A#m7 G#
  O: "~@11 [f4,g#4,c5] ~@15 [c#4,f4,g#4] ~@4", P: "~@11 [a#3,d#4,g4] ~@15 [c4,d#4,g4] ~@4",
  Q: "~@11 [f4,a4,c5] ~@15 [c#4,f4,g#4] ~@4", R: "~@11 [c#4,f4,g#4] ~@15 [c4,d#4,g4] ~@4",
  S: "~@11 [c4,f4,a4] ~@15 [c#4,f4,g#4] ~@4", // F C#
  T: "[~@11 [d#4,f#4,a4] ~@11 f4@2 ~@2 g#4@2 ~@2 [c#4,g#4]@5 ~ c#4@2 f4@2 g#4@2 f4@2 c#4@2 g#3@3 ~@5 f4@2 ~@6 a#3@3 ~ [a#3,c#4,f4,g#4]@7 ~ [a#3,c#4,f4,g#4]@7 ~@9 [d#4,g#4,c5] ~@4, ~@21 c#4@4 c#5@12 ~@16 c#4@4 g#4@9 ~@30, ~@29 f4@8 ~@14 a#3@8 f4@7 ~@30, ~@61 c#4@5 ~@30]/3", // D#dim C#5 A#m7 G#
  U: "~@11 [d#4,g4,a#4] ~@15 [c4,d#4,g4] ~@4", // D# Cm
  V: "[~@11 [d#4,a4,c5] ~@13 c#4@2 ~@4 f4@2 ~@14 f4@4 ~@4 f4@2 ~@6 a#3@3 ~ [a#3,c#4,f4,g#4] ~@3 [a#3,c#4,f4,g#4]@12 ~@8 [d#4,g#4,c5] ~@4, ~@23 f4@4 g#3@6 g#4@11 ~ g#4@6 ~@6 g#4@9 ~@30, ~@29 c#4@6 f4@10 ~@14 f4@7 ~@30, ~@37 c#4@10 ~@6 c#4@6 ~@2 c#4@5 ~@30, ~@39 g#3@10 ~@2 a#3@10 ~@35]/3", // Adim A#m7 G#
  W: "~@11 [d#4,a4,c5] ~@15 [c#4,f4,g#4] ~@4", X: "~@11 [d#4,g4,a#4]@8 ~@8 [c4,d#4,g4] ~@4",
  Y: "~@11 [d#4,g4,a#4] ~@15 [c4,d#4,f4,g4] ~@4", // D# Cm
  Z: "[~@11 [d#4,a4,c5] ~@19 c#4@6 ~@2 c#4@2 ~@6 g#3@3 ~ c#4@2 ~@10 a#3@3 ~ [a#3,c#4,f4,g#4] ~@3 [a#3,c#4,f4,g#4]@12 ~@8 [c4,d#4,g#4] ~@4, ~@23 g#3@8 ~@6 g#3@7 ~ c#4@5 ~@3 a#3@8 c#4@6 ~@29, ~@25 g#4@15 ~ g#4@10 ~@6 g#4@9 ~@30, ~@27 f4@13 ~@3 f4@8 ~@4 c#4@4 f4@8 ~@29]/3", // Adim A#m7 G#
  AA: "~@11 [c#4,f4,g#4]@8 ~@8 [c4,d#4,g4] ~@4", // C# Cm
  AB: "[~@11 [d#4,a4,b4,c5] ~@11 [g#3,a#3] ~@5 c#4@2 g#3@4 c#4@2 ~@2 c#4@2 ~@6 g#3@3 ~ c#4@2 ~@10 a#3@3 ~ [a#3,c#4,f4,g#4] ~@3 [a#3,c#4,f4,g#4]@8 ~@17, ~@25 g#4@12 g#3@6 f4@10 ~@2 c#4@4 f4@7 ~@30, ~@27 f4@14 g#4@10 ~@6 g#4@9 ~@30, ~@45 c#4@5 ~@3 a#3@8 c#4@6 ~@29]/3", // Adim G#sus2 A#m7
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note("<~@12 A@5 B@5 ~@5 C@2 D@2 A@5 B@5 ~ E@8 F@7 G@7 H@2 G@7 I@4>".pickRestart({
  A: "[~@3 d4@8 d5@3 ~ [e5,e6]@4 [d5,d6]@18 ~@2 [a5,a6]@4 [f#5,f#6]@4 [g5,g6]@4 [c5,c6]@16 [g5,g6]@4 [f#5,f#6]@4 [e5,e6]@4 [f#5,f#6]@4 [d5,d6]@20 [a5,a6]@4 [f#5,f#6]@4 [g5,g6]@4 [e5,e6]@19 ~ [b5,b6]@2 [a5,a6]@2 [g5,g6]@4 [f#5,f#6]@2 [d5,d6]@2 [a5,a6]@13]/5", // E D A F# G C G F# …
  B: "[~@3 [g#5,g#6]@12 [b4,b5]@4 [c5,c6]@12 [g5,g6]@4 [f#5,f#6]@12 [e5,e6]@4 [d5,d6]@23 ~ [e5,e6]@4 [d5,d6]@4 [g4,g5]@20 [a4,a5]@4 [b4,b5]@4 [d5,d6]@4 [g4,g5]@16 [d4,d5]@15 ~@14]/5", // G# B C G F# E D E …
  C: "[~@27 a3@4 g3@4 f#3@8 b3@3 ~ a3@4 g3@13]/2", D: "[~@3 b3@12 d4@4 e4@16 d4@16 c4@13]/2",
  E: "[~@19 [c5,c6,c7]@11 ~ [a#4,a#5,a#6]@2 [g#4,g#5,g#6]@2 [c5,c6]@17 ~@3 [c4,c5,c6]@4 [c#4,c#5,c#6]@4 [c5,c6,c7]@4 [a#4,a#5,a#6]@12 [c4,c5,c6]@2 [c#4,c#5,c#6]@2 [d#4,d#5,d#6]@4 [c#5,c#6,c#7]@4 [c5,c6,c7]@19 ~ [c4,c5,c6]@4 [c#4,c#5,c#6]@16 [a#4,a#5,a#6]@12 [g4,g5,g6]@4 [d#4,d#5,d#6]@32 [c#4,c#5,c#6]@20 [a#4,a#5,a#6]@4 [g4,g5,g6]@4 [f4,f5,f6]@4 [d#4,d#5,d#6]@40 ~@2 [g#3,g#4,g#5]@2 [a#3,a#4,a#5], ~@35 c7@20 ~@201]/8", // C A# G# C C# C A# C …
  F: "[~ [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#5,g#6]@13 ~ [g#3,g#4,g#5]@2 [a#3,a#4,a#5]@2 [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#5,g#6]@20 [c5,c6,c7]@11 ~ [a#4,a#5,a#6]@2 [g#4,g#5,g#6]@2 [c5,c6,c7]@15 ~@5 [c4,c5,c6]@4 [c#4,c#5,c#6]@4 [c5,c6,c7]@4 [a#4,a#5,a#6]@12 ~@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@4 [c#5,c#6,c#7]@4 [c5,c6,c7]@8 [d#4,d#5,d#6]@26 [g#3,g#4] ~ [a#3,a#4,a#5]@2 [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#4,g#5,g#6]@14 [g#3,g#4,g#5]@2 [a#3,a#4]@2 [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#4,g#5,g#6]@16 ~@4 [c5,c6,c7]@11 ~ [a#4,a#5,a#6], ~@7 g#4 ~@23 g#4 ~@79 c6@2 ~@44 g#5@2 ~@24 a#5 ~@40, ~@56 [c4,c5] ~@55]/7", // F D# G# A# F D# G# C …
  G: "[~ [g#4,g#5,g#6]@2 [c5,c6]@17 ~@3 [c4,c5,c6]@4 [c#4,c#5,c#6]@4 [c5,c6,c7]@4 [a#4,a#5,a#6]@12 [c4,c5,c6]@2 [c#4,c#5,c#6]@2 [d#4,d#5,d#6]@4 [c#5,c#6,c#7]@4 [c5,c6,c7]@19 ~ [c4,c5,c6]@4 [c#4,c#5,c#6]@16 [a#4,a#5,a#6]@12 [g4,g5,g6]@4 [d#4,d#5,d#6]@32 [c#4,c#5,c#6]@20 [a#4,a#5,a#6]@4 [g4,g5,g6]@4 [f4,f5,f6]@4 [d#4,d#5,d#6]@40 ~@2 [g#3,g#4,g#5]@2 [a#3,a#4,a#5], ~@3 c7@20 ~@201]/7", // G# C C# C A# C C# D# …
  H: "[~ [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#5,g#6]@13 ~ [g#3,g#4,g#5]@2 [a#3,a#4,a#5]@2 [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#5,g#6]@20 [c5,c6,c7]@11 ~ [a#4,a#5,a#6], ~@7 g#4 ~@23 g#4 ~@32]/2", // F D# G# A# F D# G# C …
  I: "[~ [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#5,g#6]@13 ~ [g#3,g#4,g#5]@2 [a#3,a#4,a#5]@2 [f4,f5,f6]@2 [d#4,d#5,d#6]@2 [g#3,g#4,g#5]@2 [g#5,g#6]@20 [c5,d#5,g#5,d#6]@44 ~@33, ~@7 g#4 ~@23 g#4 ~@19 g#6@48 ~@29]/4", // F D# G# A# F D# G#
})).s("gm_string_ensemble_1").gain(0.35)

// drums · kick
const kick = s("bd").struct(`<
  ~@12 A B C@2 D E C B F G E G C H E G C@2 E I B C@2 D E C B F G E G B C@2 D E C B F G B C@2 D G C J C D E C@3 G C J C D
  E C@3 G ~@2
>`.pickRestart({
  A: "~@19 x ~@12", B: "~@3 x ~@15 x ~@12", C: "~@3 x ~@15 x ~@11 x", D: "~@3 x ~@7 x ~@3 x ~@3 x ~@11 x",
  E: "~@3 x ~@11 x ~@3 x ~@11 x", F: "~@15 x ~@3 x ~@11 x", G: "~@3 x ~@11 x ~@3 x ~@12", H: "~@3 x ~@7 x ~@7 x ~@11 x",
  I: "~@3 x ~@7 x ~@3 x ~@3 x ~@12", J: "~@3 x ~@7 x ~@3 x ~ x ~ x ~@11 x",
})).gain(0.59)

// drums · rim
const rim = s("rim").struct("<~@12 [~@27 x ~@4] [~@11 x ~@15 x ~@4]!18 [~@11 x ~@20] ~@45>").gain(0.66)

// drums · snare
const snare = s("sd").struct("<~@31 A B@10 A B@8 A B@3 C A B@7 C A B@7 C ~@3>".pickRestart({
  A: "~@27 x ~@4", B: "~@11 x ~@15 x ~@4", C: "~@11 x ~@20",
})).gain(0.66)

// drums · low tom
const low_tom = s("lt").struct("<~@31 A ~@10 B ~@8 A ~@4 C ~@8 D ~@8 D ~@2>".pickRestart({
  A: "~@15 x ~@16", B: "~@3 x ~@11 x ~@16", C: "~@13 x ~ x ~ x ~@14", D: "~@11 x ~ x ~ x ~@16",
})).gain(0.66)

// drums · hihat
const hihat = s("hh").struct("<A@12 B C@43 D A@7 B D A@7 B E ~@2>".pickRestart({
  A: "~@3 x ~@7 x ~@7 x ~@7 x ~@4", B: "~@3 x ~@7 x ~@7 x ~@3 x ~@3 x ~@3 x",
  C: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x", D: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@7 x ~@4",
  E: "~@3 x ~@3 x ~@3 x ~@3 x ~@16",
})).gain(0.66)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 A ~@9 B A ~@8 C ~@3 D E ~@8 F ~@8 F ~@2>".pickRestart({
  A: "~@13 x ~@18", B: "~@31 x", C: "~@5 x ~ x ~@5 x ~@18", D: "~@29 x ~ x", E: "~@9 x ~ x ~@20",
  F: "~ x!3 ~ x ~ x ~@24",
})).gain(0.66)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@12 A ~@7 B ~@2 B ~ B ~ B@2 ~@2 C ~ B ~ B ~ B@2 ~ B ~ C ~ B ~ B@3 ~@2 C ~ B ~ B ~@21
>`.pickRestart({
  A: "~@11 x ~@20", B: "~@15 x ~@16", C: "~@23 x ~@8",
})).gain(0.66)

// drums · high tom
const high_tom = s("ht").struct("<~@31 A ~@10 A ~@8 B ~@3 C D ~@7 E ~@8 E ~@3>".pickRestart({
  A: "~@9 x ~ x ~@20", B: "~ x ~@9 x ~@20", C: "~@25 x ~@6", D: "~@5 x ~ x ~@24", E: "~@25 x!3 ~@4",
})).gain(0.66)

// drums · crash
const crash = s("cr").struct("<~@31 A ~@3 A ~@4 A@3 ~@3 A ~@4 A ~@4 A ~ B ~ C ~ A@4 ~ B ~ C ~ A@4 ~@2>".pickRestart({
  A: "~@19 x ~@12", B: "~@15 x ~ x ~ x ~@12", C: "~@11 x ~@3 x ~@3 x ~@12",
})).gain(0.66)

// drums · ride
const ride = s("rd").struct("<~@12 A ~@10 A ~@14 A ~@17 B C@7 D B C@7 D ~@3>".pickRestart({
  A: "~@19 x ~@12", B: "~@19 x ~@3 x ~@3 x ~@3 x", C: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
  D: "~@3 x ~@3 x ~@3 x ~@3 x ~@16",
})).gain(0.66)

stack(
  bass, piano, acoustic_guitar_nylon, string_ensemble_1, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, high_tom,
  crash, ride
)

More by Kenny Rogers