Strudelify

Waterloo Sunset

The Kinks

KeyE majorTempo112 bpm
0:00/0:00
// Waterloo Sunset — The Kinks
// 112 bpm, 4/4, key E 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: duplicate parts dropped: ch 15 "Harmonia" overdriven guitar (copy of ch 4 "Harmonia" overdriven guitar, 0.078 beats late)
// note: Full arrangement: all 89 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): CleanGuit, CleanGuit.
setcpm(112/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 · "Bass"
const bass = note(`<
  A B C D E F G H I J K@2 L J K M N O P Q R S T U V W X Y V W A B C Z AA AB AC AD AA AB AC AE AF AG AH AI AJ AK AL U V W
  X Y V W A B C Z AA AB AC AD AA AB AC AE AF AG AH AI AA AK AL AM AN AO AP AQ AR AS AT AU AT AV AW AX@2
>`.pickRestart({
  A: "b2@2 b2 ~ b2 ~ b2@2 a2 ~ a2 ~ a2 ~ a2@2", B: "g#2 ~ g#2 ~ g#2 ~ g#2@2 f#2 ~ f#2 ~ f#2 ~ f#2@2",
  C: "e2 ~ e2 ~ e2 ~ e2@2 d#2 ~ d#2 ~ d#2 ~ d#2@2", D: "c#2 ~ c#2 ~ c#2 ~ c#2@2 b1@3 ~ b1@4",
  E: "e2@5 ~ e2 ~ e2@3 ~ e2@3 ~", F: "f#2@5 ~ f#2 ~ f#2@3 ~ f#2@3 ~", G: "e2@5 ~ e2 ~ e2@3 ~@5",
  H: "e3@5 ~ e3 ~ e3@3 ~ c#3@3 ~", I: "e2@5 ~ e2 ~ e2@3 ~ g#2@3 ~", J: "b2@5 ~ b2 ~ b2@3 ~ b2@3 ~",
  K: "a2@5 ~ a2 ~ a2@3 ~ a2@3 ~", L: "e3@5 ~ e3 ~ e3@3 ~ e3@3 ~", M: "c#3@5 ~ c#3 ~ c#3@4 c#3@4",
  N: "f#2@5 ~ f#2 ~ f#2@4 f#2@4", O: "f2@4 ~@2 f2 ~ f2@4 f2@4", P: "e2@4 ~@2 e2 ~ e2@4 e2@4", Q: "b2@15 ~",
  R: "e3@4 ~@2 e3 ~ e3@4 e3@4", S: "d#3@4 ~@2 d#3 ~ d#3@4 d#3@4", T: "c#3@4 ~@2 c#3 ~ c#3@4 c#3@4",
  U: "a3@4 a2 g#2 ~ f#2", V: "f#2@3 ~ f#2@3 ~ e2@3 ~ e2@3 ~", W: "d#2@3 ~ d#2@3 ~ c#2@3 ~ c#2@3 ~",
  X: "b1@5 ~ b1@2 f#2@3 ~ f#2@3 ~", Y: "e2@5 ~ e2 ~ a2@2 g#2@2 ~@2 f#2 ~", Z: "c#2 ~ c#2 ~ c#2 ~ c#2@2 b1@4 b2@4",
  AA: "e3", AB: "d#3", AC: "c#3@15 ~", AD: "c#3", AE: "c#3@7 ~ c#3@8", AF: "f#2@7 ~ f#2 ~ f#2@5 ~",
  AG: "f2@7 ~ f2 ~ f2@5 ~", AH: "e2@7 ~ e2 ~ e2@5 ~", AI: "b1@3 ~ b1@3 ~ b1@3 ~ b1@4", AJ: "e3@15 ~", AK: "d#3@15 ~",
  AL: "c#3@7 ~", AM: "a2", AN: "e3@11 ~ e3@3 ~", AO: "d#3@11 ~ d#3@4", AP: "c#3@11 ~ c#3@4", AQ: "b2@2 b1 ~ b1 ~ b2 ~",
  AR: "b1@4 b2@2 ~ b1!2 ~ b1@2 b2@2 ~@2", AS: "b1@4 b2 ~@3 b1@4 b2 ~@3", AT: "b1@3 ~ b2 ~@3 b1@3 ~ b2@2 ~@2",
  AU: "b1@3 ~ b2@3 b1!2 ~ b1@2 b2@3 ~", AV: "b1 ~ b1@2 b2 b1@2 b1!2 ~ b1@2 b2 ~@3",
  AW: "b1@2 ~@2 b2@2 ~ b1!2 ~ b1@2 b2@4", AX: "b1/2",
})).s("gm_electric_bass_finger").gain(0.36)

// chords · acoustic guitar steel · "SteelGuit"
const acoustic_guitar_steel = note(`<
  A B C D@2 E F@2 G E H@2 G E I@2 J K L M G E N@4 O P@3 A Q C Q G E I@2 G E R@2 J K L S@2 E R@2 J T@2 U@5 C Q G V@8 K
  W@2 X@8 Y@7 Z@2
>`.pickRestart({
  A: "[f#3,b3,f#4,b4]@2 [b3,f#4,b4]!2 [f#3,b3,f#4,b4]@2 [b3,f#4,b4]!2, ~ f#3 ~ f#3", // B5
  B: "[b3,f#4,b4]!3 [b3,f#4,b4]@2 [b3,f#4,b4]!3, f#3 f#3@2 f#3", // B5
  C: "[b3,f#4,b4]!4 [f#3,b3,f#4,b4]@2 [b3,f#4,b4]!2, f#3!2 ~ f#3", // B5
  D: "[[b3,f#4,b4]!4 [f#3,b3,f#4,b4]@2 [b3,f#4,b4] b3 [e3,b3,e4]@2 [b2,e3,b3,e4]@2 [e3,b3,e4]!4, f#3!2 ~ f#3@5, ~@7 [f#4,b4]@9, ~ [e2,g#3], ~@6 b2!2]/2", // B5 E5 B5 E
  E: "[b2,f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 [f#3,b3,f#4]!4, ~@2 b2!2", // B5
  F: "[[e2,a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 [c#4,e4,a4]@2 [c#4,e4,a4]!3, ~@2 e3 e3@5, ~ a2, ~@4 a3 a3@2 a3]/2", // A5 A
  G: "[e3,b3,e4]@2 [b2,e3,b3,e4]@2 [e3,b3,e4]!4, [e2,g#3], ~@2 b2!2", // E5 E
  H: "[[a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 [c#4,e4,a4]@2 [c#4,e4,a4]!3, e2, c#4 a2, ~@2 e3 e3@5, ~@4 a3 a3@2 a3]/2", // A5 A
  I: "[[a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 [c#4,e4,a4]@2 [c#4,e4,a4]!3, e2, ~@2 e3 e3@5, ~ a2, ~@4 a3 a3@2 a3]/2", // A5 A
  J: "[f#3,a3,c#4]!4", K: "[f3,a3,c#4]!4", L: "[e3,a3,c#4]!4", M: "[d#3,f#3,b3]!4",
  N: "[[a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 [c#4,e4] [a3,c#4,e4] ~@2 [f#3,a3,c#4] [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2, e2@13 ~@19, ~@4 e3@2 e3@7 [g#3,b3,e4]@16 ~@3, ~@8 a2@5 ~@19, ~@8 a3@2 a3 a4@2 ~@19]/4", // A5 A C#m A F#m E
  O: "[f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4]!2 [f#3,b3,d#4]@2", // B
  P: "[[g#3,b3,e4]@2 [g#3,b3,e4]@2 [a3,c#4,e4] ~@2 [f#3,a3,c#4] [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2, ~@5 [g#3,b3,e4]@16 ~@3]/3", // E A F#m E
  Q: "[b3,f#4,b4]!8, f#3!4", // B5
  R: "[[a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 [c#4,e4] [a3,c#4,e4] [g#3,b3,e4]@2 [f#3,a3,c#4], e2@13 ~@3, ~@4 e3@2 e3@7 ~@3, ~@8 a2@5 ~@3, ~@8 a3@2 a3 a4@2 ~@3]/2", // A5 A C#m A E F#m
  S: "[b3@2 [b3,f#4,b4]@2 [b3,f#4,b4]@2 b3@2 [e3,b3,e4]@2 [b2,e3,b3,e4]@2 [e3,b3,e4]!4, [d#3,f#3], ~@3 [f#4,b4]@5, ~ [e2,g#3], ~@6 b2!2]/2", // B5 E5 D#m B5 E
  T: "[[f#3,a3,c#4]!3 f#3 [f#3,b3,d#4]!4, ~@3 [a3,c#4]@5]/2", // F#m B A
  U: "[[g#3,b3,e4]@2 [g#3,b3,e4]@2 [a3,c#4,e4] ~@2 [f#3,a3,c#4] [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 f#3@2 [f#3,b3,f#4,b4]@2 [b3,f#4,b4]!2 [f#3,b3,f#4,b4]@2 [b3,f#4,b4]!2 [b3,f#4,b4]!8, ~@5 [g#3,b3,e4]@16 ~ [a3,c#4]@16 ~@2, ~@13 f#3 ~ f#3 f#3!4]/5", // E A F#m B5 E A
  V: "[[b2,f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 [f#3,b3,f#4]!3 ~ [a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 [c#4,e4,a4]@2 [c#4,e4,a4]!2 e4 [e3,b3,e4]@2 [b2,e3,b3,e4]@2 [e3,b3,e4]!3 b3 [b2,f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 [f#3,b3,f#4]!3 ~ [a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 c#4@5 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2 [f#3,a3,c#4]@2, ~@4 b2@2 b2@10 a2@12 b2@2 b2 e3@9 c#4@4 e3@2 e3@16 ~@2, ~@7 [f#3,b3,f#4]@9 a3@2 a3@4 a3@9 e4@8 [f#3,b3,f#4]@9 a3@2 a3 [e4,a4]@13, ~@8 e2@15 [c#4,a4]@13 b2@2 b2@10 a2@16, ~@4 c#4@2 e3 e3@5 [e2,g#3]@8 e2@8 ~@4]/8", // B5 A5 A E5 B5 A5 A F#m …
  W: "[[e3,a3,c#4]!3 ~ [d#3,f#3,b3]!4, ~@3 [e3,a3,c#4]@5]/2", // A B A
  X: "[[e3,b3,e4]@2 [b2,e3,b3,e4]@2 [e3,b3,e4]!3 b3 [b2,f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 [f#3,b3,f#4]!3 ~ [a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!4 [c#4,e4,a4]!3 [c#4,e4,a4]@2 [c#4,e4,a4]!2 e4 [e3,b3,e4]@2 [b2,e3,b3,e4]@2 [e3,b3,e4]!3 b3 [b2,f#3,b3,f#4]@2 [b2,f#3,b3,f#4]@2 [f#3,b3,f#4]!3 ~ [a3,e4,a4]@2 [e3,a3,e4,a4]@2 [a3,e4,a4]!3 ~ [f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4]@2 [f#3,b3,d#4]@2, [e2,g#3]@15 [f#3,b3,f#4]@9 a3@2 a3@4 a3@9 e4@8 f#4@16 ~, ~@4 b2@2 b2@2 ~@4 b2@2 b2@10 a2@12 b2@2 b2 e3@9 [e2,c#4]@16, ~@7 e3@9 c#4@4 e3@2 e3@9 [c#4,a4]@13 b2@2 b2@9 [a3,e4,a4]@9, ~@7 e4@9 e2@16 [e2,g#3]@15 [f#3,b3]@5 e3@2 e3@10]/8", // E5 B5 A5 A E5 B5 A5 B …
  Y: "[f#3,b3,d#4]!4", Z: "[f#3,b3,d#4]/2",
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.4)

// chords · piano
const piano = note("<~@78 A B C B D E F G H I@2>".pickRestart({
  A: "~@15 [b1,b2,f#3,b3]", B: "[b1,b2,f#3,b3]@14 ~ [b1,b2,f#3,b3]",
  C: "[b1,b2,f#3,b3] ~ [b1,b2,f#3,b3]@12 ~ [b1,b2,f#3,b3]", D: "[b1,b2,f#3,b3]@14 ~ b2",
  E: "[b1,b2,f#3,b3] ~ b2@12 ~ [b1,b2,f#3,b3], ~ [b1,f#3,b3]@12 ~@3", // B5
  F: "[b1,f#3,b3] ~ [b1,f#3,b3]@12 ~ [b1,b2,f#3,b3], b2@7 ~", // B5
  G: "[b1,f#3,b3] [b1,f#3,b3]@11 ~@3 [b1,b2,f#3,b3], b2@7 ~", H: "b2 ~ b2@12 ~ [b1,b2,f#3,b3], [b1,f#3,b3]@7 ~",
  I: "[b1,b2,f#3,b3]/2", // B5
})).s("gm_piano").gain(0.23).pan(0.3)

// chords · electric guitar clean · "CleanGuit"
const electric_guitar_clean = note("<~@80 [b2@13 ~@3] [b2@7 ~] [b2@13 ~@3]!2 [b2@7 ~] [b2@13 ~@3]!2 ~@2>")
  .s("gm_electric_guitar_clean").gain(0.12).pan(0.8)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<A@5 ~@25 A@5 ~@21 A@5 ~@18 B@8 ~@2>".pickRestart({
  A: "[~@8 b3@8 b4@8 b5@15 ~, b2@4 ~]/5", B: "b2/8",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.1)

// chords · synth strings 2 · "Strings"
const synth_strings_2 = note("<~@4 A B C@2 ~@81>".pickRestart({
  A: "[g#4,b4,e5]", B: "[b4,d#5]@2 ~ f#5, f#4, ~ b4", C: "[e4,a4,e5]/2",
})).s("gm_synth_strings_2").gain(0.04)

// chords · electric guitar clean · "SteelGuit"
const electric_guitar_clean_2 = note(`<
  ~@3 A@5 B ~@2 C@3 D@2 E F G H ~@13 I@3 D@2 I@3 J@2 F G K ~@13 I@3 D@2 L@2 D@2 M N O@2 ~@17
>`.pickRestart({
  A: "[~@16 [b3,e4]@15 ~@23 e4@7 ~@3 [e4,b4]@8 a4@8, ~@15 g#3@16 [f#3,b3]@17 a2@11 ~@3 a2@13 ~@5, ~@32 f#4@18 b3@11 ~@2 b3@16 ~, ~@52 c#4@9 ~@19]/5", // E5 B5
  B: "[g#3,b3,e4,g#4]", C: "[~@17 e4@13 ~@2 f#4@12 ~@4, ~@15 g#3@15 ~ [f#3,b3]@16 ~, ~@8 b3@7 ~@9]/3",
  D: "[~@6 e4@13 ~@13, a2@19 ~@13, ~@2 b3@17 ~@13, ~@4 c#4@15 ~@13]/2",
  E: "~@4 [f#3,a3,c#4,f#4] ~@7 [f#3,a3,c#4,f#4] ~@3", F: "~@4 [f3,a3,c#4,f4] ~@7 [f3,a3,c#4,f4] ~@3",
  G: "~@4 [e3,a3,c#4,e4] ~@7 [e3,a3,c#4,e4] ~@3", H: "[d#3,f#3,b3]",
  I: "[~@8 [b3,e4]@7 ~ f#4@6 ~@2, ~@15 g#3@15 ~ [f#3,b3]@16 ~]/3", // E5 B5
  J: "[~@6 e4@12 ~@2 [f#3,a3,c#4,f#4] ~@7 [f#3,a3,c#4,f#4] ~@3, a2@9 ~@7, ~ b3@8 ~@7, ~@2 c#4@7 ~@7]/2", // F#m
  K: "[d#3,f#3,b3]@15 ~", L: "[~ e4@13 ~@2 f#4@12 ~@4, [g#3,b3]@15 [f#3,b3]@16 ~]/2",
  M: "~@2 [f#3,a3,c#4,f#4] ~@3 [f#3,a3,c#4,f#4] ~", N: "~@2 [f3,a3,c#4,f4] ~@3 [f3,a3,c#4,f4] ~",
  O: "[~@4 [e3,a3,c#4,e4]@2 ~@6 [e3,a3,c#4,e4]@2 ~@2 [f#3,b3]@15 ~, ~@15 d#3@15 ~@2]/2", // A B5
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · electric guitar clean · "SteelGuit" · soft notes
const electric_guitar_clean_3 = note("<~@3 A@3 ~ B ~@3 C@3 ~@19 D@3 ~@2 D@3 ~@18 C@3 ~ E@3 ~@23>".pickRestart({
  A: "[~@7 f#3@8 d#3@9]/3", B: "c#4@13 ~@3", C: "[~@15 f#3@15 d#3@17 ~]/3", D: "[~@14 f#3@14 ~@2 d#3@17 ~]/3",
  E: "[~@15 f#3@14 ~ d#3@17 ~]/3",
})).s("gm_electric_guitar_clean").gain(0.25)

// other · electric guitar muted · "MutGuit"
const electric_guitar_muted = note(`<
  A B C D@2 E F@2 ~@2 G@4 H@2 ~@4 I@4 J K L M N O P Q R S ~@2 T@4 U@2 ~@4 V@4 J K L M N O P Q R S ~@2 W@4 X@2 ~@4 Y@5 E
  Z ~@10
>`.pickRestart({
  A: "b2 ~ b2!3 ~ b2!3 ~ b2!3 ~ b2!2", B: "b2 ~ b2!3 ~ b2 ~ b2 ~ b2!3 ~ b2 ~", C: "b2 ~ b2 ~ b2 ~ b2!3 ~ b2!3 ~ b2!2",
  D: "[b2!5 ~ b3 ~ c#4@4 e4 ~ d4@4 b3@3 ~ f#3 ~ g#3@3 ~ b3 ~ f#3@2]/2", E: "~@2 f#3@3 ~ b2@4 b2 ~ f#3@4",
  F: "[~ e3@2 c#3@7 ~@6]/2",
  G: "[~@4 a3 ~@3 c#4@2 e4 ~ c#4@2 a3@4 ~@2 e3 ~@3 g#3@2 b3 ~ g#3@2 e3@5 ~ e3 ~@3 g#3@2 b3 ~ g#3@2 d#3@8 ~@10]/4",
  H: "[~@4 a3@2 ~@2 c#4@2 e4 ~ c#4 ~ a4@5 ~@13]/2",
  I: "[~@4 e3@2 ~@2 g#3@2 b3 ~ g#3@2 d#3@5 ~ d#3@2 ~@2 g#3@2 b3@2 g#3 ~ c#3@5 ~ a3@2 ~@2 c#4@2 e4@2 c#4@2 a3@8 ~@2 [a2,e3] ~ [g#2,e3]@2 ~@2 [f#2,c#3] ~]/4", // A5 C#m F#5
  J: "[f#2,c#3]@4 [c#3,f#3]@2 [f#2,c#3] ~ [f#2,c#3]@4 [c#3,f#3]@2 f#2 ~", // F#5
  K: "[f#2,c#3]@4 [c#3,f#3]@2 [f#2,c#3] ~ f#2@4 [c#3,f#3]@2 [f#2,c#3] ~, ~@8 c#3@3 ~@5", // F#5
  L: "[b2,f#3]@4 [f#3,b3]@2 [b2,f#3] ~ [b2,f#3]@4 b3@2 [b2,f#3] ~, ~@12 f#3 ~@3", // B5
  M: "[e3,b3]@3 ~ [e3,b3]@3 ~ [a2,e3]@2 [g#2,e3]@2 ~@2 [f#2,c#3] ~", // E5 A5 C#m F#5
  N: "[f#2,c#3]@4 [c#3,f#3]@2 [f#2,c#3] ~ [f#2,c#3]@4 [c#3,f#3] ~ [f#2,c#3] ~", // F#5
  O: "[f#2,c#3]@4 [c#3,f#3] ~ [f#2,c#3] ~ [f#2,c#3]@4 [c#3,f#3] ~ [f#2,c#3] ~", P: "b2 ~ b2!3 ~ b2 ~ b2@2 b2!3 ~ b2 ~",
  Q: "b2 ~@3 b2 ~@3 b2 ~ b2!3 ~@2 b2", R: "b2@2 b2 ~ b2 ~@3 b2 ~@3 b2@2 b2!2", S: "b2 ~@2 b2 b2@2 b2!3 ~ b2!3 ~ b2!2",
  T: "[~@4 a3 ~@3 c#4@2 e4 ~ c#4@2 a3@5 ~ e3 ~@3 g#3@2 b3 ~ g#3@2 e3@5 ~ e3 ~@3 g#3@2 b3 ~ g#3@2 d#3@6 ~@12]/4",
  U: "[~@4 a3@2 ~@2 c#4@2 e4 ~ c#4 ~ a4@8 ~@10]/2",
  V: "[~@4 e3@2 ~@2 g#3@2 b3 ~ g#3@2 d#3@6 d#3@2 ~@2 g#3@2 b3@2 g#3 ~ c#3@5 ~ a3@2 ~@2 c#4@2 e4@2 c#4@2 a3@7 ~@3 [a2,e3] ~ [g#2,e3]@2 ~@2 [f#2,c#3] ~]/4", // A5 C#m F#5
  W: "[~@4 a3 ~@3 c#4@2 e4 ~ c#4@2 a3@5 ~ e3 ~@3 g#3@2 b3 ~ g#3@2 e3@5 ~ e3 ~@3 g#3@2 b3 ~ g#3@2 d#3@5 ~@13]/4",
  X: "[~@4 a3@2 ~@2 c#4@2 e4 ~ c#4@2 a3@5 ~@13]/2",
  Y: "[~@4 e3@2 ~@2 g#3@2 b3 ~ g#3@2 d#3@5 ~ d#3@2 ~@2 g#3@2 b3@2 g#3 ~ c#3@5 ~ a3@2 ~@2 c#4@2 e4@2 c#4@2 a3@7 ~ b3 ~ c#4@4 e4 ~ d4@4 b3@3 ~ f#3 ~ g#3@3 ~ b3 ~ f#3@2]/5",
  Z: "~ e3@2 c#3@5",
})).s("gm_electric_guitar_muted").gain(0.23).pan(0.8)

// other · electric guitar muted · "MutGuit" · soft notes
const electric_guitar_muted_2 = note("<~ A B ~@21 C ~@5 D E F G ~@16 C ~@5 D E F G ~@29>".pickRestart({
  A: "~ b2 ~@5 b2 ~@5 b2 ~ b2", B: "~@3 b2 ~@9 b2 ~@2", C: "~@14 c#3 ~", D: "~@7 b2 ~@7 b2",
  E: "~@2 b2!2 ~@2 b2!2 ~@6 b2 ~", F: "~@3 b2 ~@2 b2!2 ~@2 b2!2 ~@4", G: "~@2 b2 ~@13",
})).s("gm_electric_guitar_muted").gain(0.13).pan(0.8)

// other · electric guitar clean · "CleanGuit"
const electric_guitar_clean_4 = note("<~@80 [b2@13 ~@3] [b2@7 ~] [b2@13 ~@3]!2 [b2@7 ~] [b2@13 ~@3]!2 ~@2>")
  .s("gm_electric_guitar_clean").gain(0.29).pan(0.6)

// drums · kick
const kick = s("bd").struct("<A@4 B@15 C B@10 A@4 B@22 A@4 B@19 A@8 C ~>".pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~ x ~", C: "x",
})).gain(0.57)

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

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@18 B ~@3 B ~@2 A ~@18 B ~@2 A ~@8 B ~@12>".pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@17 B ~@3 B ~@3 A ~@17 B ~@3 A ~@7 B ~@13>".pickRestart({
  A: "~@12 x!2 ~ x", B: "~@8 x!8",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@37 A ~@3 A ~@21 A ~@11 A ~@13>".pickRestart({
  A: "~@4 x!4 ~@8",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@11 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A@9 ~
>`.pickRestart({
  A: "x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  A@4 B@11 C B@3 D E B@2 C B@5 F B@3 G B@3 H B@3 I B@3 C B@3 G J B@5 A@4 B@3 I A@23 ~@2
>`.pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", C: "x ~ x!3 ~ x ~ x ~ x ~@5", D: "x ~ x!3 ~@11",
  E: "~@2 x!6", F: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3", G: "x ~ x!3 ~ x ~@9", H: "x", I: "x!2 ~@6",
  J: "~@2 x!3 ~ x ~ x ~ x ~ x ~ x ~",
})).gain(0.43)

stack(
  bass, acoustic_guitar_steel, piano, electric_guitar_clean, string_ensemble_1, synth_strings_2,
  electric_guitar_clean_2, electric_guitar_clean_3, electric_guitar_muted, electric_guitar_muted_2,
  electric_guitar_clean_4, kick, snare, low_tom, mid_tom, high_tom, crash, ride
)

More by The Kinks