Strudelify
Unchained Melody cover art

Unchained Melody

Leo Sayer

KeyC majorTempo69 bpm
0:00/0:00
// Unchained Melody — Leo Sayer
// 69 bpm, 4/4, key C 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 67 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(69/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.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A@2 B C D E F G H I J C K L M N O P Q C R S T U V W X@2 Y@2 Z ~ AA AB AC AD AA AE AF AG AH AI@4 AJ@2 AK AL AM@4 AN AO
  AP AQ@2 AR@2 AS@2 AT AU@3 ~
>`.pickRestart({
  A: "c5@11 d5", B: "e5@2 c5@9 a4", C: "g4@6 b4@6 d5@9 ~ d5 e5", D: "c5@4 ~ d5", E: "c5@13 ~@5 e4@4 f4@2", F: "g4@3 ~",
  G: "~@3 g4", H: "c5@21 ~ c5 d5", I: "c5@19 ~@3 d5@2", J: "e5@3 ~ c5@12 ~@6 a4@2", K: "c5@20 ~@2 d5 e5",
  L: "d5 c5@18 ~ e4@2 f4@2", M: "g4@11 ~", N: "~@18 g4@5 a4", O: "c5@18 ~@2 d5 e5 d5@2, b4 ~@23", P: "c5@21 ~ d5@2",
  Q: "e5@3 c5@18 ~ a4@2", R: "c5@7 ~ [e5,c6] ~ [f5,d6] ~ [g5,e6]@8 ~@2 d5@2",
  S: "c5@8 [e5,c6]@2 ~ b5 ~ a5@7 c5@4, ~@10 d5@2 c5@7 ~@5", T: "g5@2 ~", U: "~@22 f5 [f5,g5]", V: "e5@10 c5@2 g4@11 ~",
  W: "~@8 b4@2 c5 d5", X: "[c5@10 g4@2 e4@14 ~@20 a4 b4]/2", Y: "[a4@10 f4@2 d5@28 ~@2 d5 e5 g4@2 a4@2]/2", Z: "c5",
  AA: "f4@2 g4@2 a4 c5 b4@4 g4 b4", AB: "a4@4 f4 a4 g4@6", AC: "f4@4 g4@4 a4@2 c5@2 d5@8 b4 [b4,c5] a4@2", AD: "g4 ~",
  AE: "a4@8 f4@2 g4 a4 g4@12", AF: "f4@4 g4@4 a4@2 c5@2 d5@7 ~ d5 e5 d5@2", AG: "c5@15 ~@4 g5@5, ~@3 g4",
  AH: "[c5,c6]@10 ~ [d5,d6]", // C D
  AI: "[[c5,c6]@19 ~@5 [e5,e6]@4 ~@32 [d5,d6]@10 ~@2 c6@8 ~@4 [g5,e6]@10 [c5,c6] [d5,d6], ~@22 [d5,d6]@6 [c5,c6]@42 [d5,d6] e6@2 ~@23, ~@23 [a4,a5]@13 c5@11 ~, ~@48 [g4,g5]@25 ~@9 [f5,d6]@13 ~, ~@54 [b4,b5]@19 ~@7 [e5,c6]@15 ~]/4", // C E D C D C D A …
  AJ: "[c6@4 ~@8 g5@9 ~@3, c5@12 [c5,a5]@11 f5@2 ~@23, ~@8 c6@17 ~@23, ~@8 e5@14 e5@3 ~@23, ~@10 [d5,b5]@15 ~@23]/2", // F G
  AK: "~@18 [g4,g5]@5 ~, ~@2 f4@8 f4@6 d5@7 ~, ~@4 a4@4 a4@15 ~, ~@6 c5@17 ~, ~@12 g4@2 b4@9 ~", // G
  AL: "~@11 [d5,d6], [c5,c6], ~@3 [e5,e6]", // D C E
  AM: "[~@24 [e5,e6]@4 ~@32 [d5,d6]@10 ~@2 c6@8 ~@15 d6, c5@28 [c5,c6]@42 [d5,d6] e6@2 ~@7 c6@14 [d5,c6]@2, ~ c6@27 ~@20 [g4,g5]@24 c5@24, ~@22 [d5,d6]@7 ~@17 [a4,a5]@27 ~@9 [d6,f6]@14, ~@54 [b4,b5]@19 ~@7 e6@4 [e6,g6]@12]/4", // E D C D D7 G D A …
  AN: "c6@5 ~ c5@5 [c5,c6], c5@11 [d5,b5]@13, ~@5 e5@7, ~@5 c6@6 ~, ~ a5", // C G
  AO: "~ g6@11 ~@4 d5@2 ~@2 d5@2 b4@2, g5@12 g4@11 ~, ~@7 b4@3 ~@2, ~@18 g5@5 ~",
  AP: "~@4 c5@2 ~@2 c5@2 a4 ~ [f4,b4]@8 [g5,a5] g5 f#5 g5, f4@11 ~@13, ~ a4@3 ~@8, ~ f5 ~@2", // Fdim Gsus2
  AQ: "[~ e6@9 c6@2 ~@13 d4@12 ~@3 b4@4 c5@2 d5 c5, ~@12 g5@8 e4@3 c4@4 ~@21, ~@7 e5@6 ~@11, ~@8 c5@5 ~@11, ~@9 g4@4 ~@11]/2",
  AR: "[d5 c5@9 g4@2 ~@11 [c5,a5]@2 b4@7 ~@5 d4@7 a4 b4@3, ~@12 e4@13 ~@8 b4@11 ~@4, ~@20 [e5,c6]@5 g5@20 ~@3, ~@11 [d5,b5]@2 ~@3 d5@6 ~@2, ~@35 g4@10 ~@3]/2", // F C G
  AS: "[~@10 f4@2 c5 d5@23 d5 e5@2 ~@7 a5@2, a4@13 ~@26 d5@9, ~@5 e5, ~@11 g5]/2",
  AT: "e5 d5 ~@14 c4@2 ~@4 [e4,e5]@2, ~ c5@8 [c4,c5]@3, ~@5 [d4,d5]", // E C D
  AU: "[~@9 [d4,d5]@3 ~ a4@7 [a3,a4]@8 ~@11 g5@24 ~@9, [e4,a4]@12 c4@15 ~@3 c3@4 e4@4 e5@24 ~@10, ~ [c5,e5]@12 [f4,c5]@15 ~@3 g3@4 g4@24 ~@13, ~@8 c4 c5@6 ~@3, ~@33 d4@4 d5@24 ~@11]/3", // D A A5 C F5
})).s("gm_piano").gain(0.35)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D A E F G A B C D A E F G A B C D A E F G H I J K L M N O P Q R S P Q R T A B C D A E F G A B C D A E F G H I J
  K L M U V@4
>`.pickRestart({
  A: "c2@5 g1 c2@5 b1", B: "a1@5 e1 a1@5 g1", C: "f1@9 ~ f1 ~ f1@10 a1@2", D: "g1@9 ~ g1 ~ g1@8 g2@2 g1@2",
  E: "a1@9 ~ a1 ~ a1@8 g1@2 f1@2", F: "e1@9 ~ e1 ~ e1@12", G: "d1@9 ~ d1@2 g1@9 ~ g1@2", H: "c2@5 g2 c2@4 e2 f2",
  I: "g2@5 d2 g1@5 g#1", J: "a1@5 e2 a2@4 g2 f2", K: "e2@5 b1 e2@4 d2 e2", L: "f2@9 ~ f2@2 d2@8 e2@2 f2@2",
  M: "g2@10 g1 ~ g1@12", N: "c2@9 ~ c2@2 c2@10 g1@2", O: "c2@9 ~ c2 ~ c2@10 e1@2", P: "f2@5 a2 g2@5 e2",
  Q: "f2@5 d2 d#2@5 g2", R: "f2@5 a2 g2@5 g1", S: "c2@5 g1 c2@3 e2@3", T: "c2@5 c2 c2@4 a2 g2",
  U: "c2@9 ~ c2 ~ c2@10 e2@2", V: "[f2@9 ~@2 f2 ~ g2@7 g2@8 c2@47 ~@21]/4",
})).s("gm_acoustic_bass").gain(0.48)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D E F G H@2 B C D E F G H@2 B C D E F G I J@8 K L M@2 N@5 B C D E F G H@2 B C D E F G I O P Q R S T U V@4
>`.pickRestart({
  A: "~@11 d4, [c3,c4]!2, ~ d4@4 d4@2 d4@4 ~, ~ e4 e4@2 e4!2, ~ g4@2 g4", // C
  B: "~@11 c4, a2, c4@5 d4 c4@4 e4@2, ~ d4@3 e4@3 d4@5, ~@2 e4 a4@5 e4 a4@3",
  C: "~@11 c4, [f3,a3]!2, ~ c4@4 c4@2 c4@4 ~, ~ f4 f4@2 f4!2, ~ a4@2 a4", // F
  D: "~@11 d4, g2, b3@5 d4 b3@6, ~ d4@3 f4@3 d4@3 f4@2, ~@2 f4 g4@5 f4 g4@3",
  E: "~@5 d4 ~@5 d4, [c3,c4]!2, ~ d4@4 ~@2 d4@4 ~, ~@4 e4@4 e4@5 ~@3 e4@4 e4@4, ~@6 g4@7 ~@5 g4@6", // C
  F: "~@11 d4, [a2,c4]!2, ~ d4@4 d4@2 d4@4 ~, ~ e4 e4@2 e4!2, ~ a4@2 a4", // Am
  G: "~@5 d4 ~@5 d4, [e3,b3]!2, ~ d4@4 ~@2 d4@4 ~, ~@4 e4@4 e4@5 ~@3 e4@4 e4@4, ~@6 g4@7 ~@5 g4@6", // E5
  H: "[~@5 c4 ~@17 d4, [d3,a3]@13 ~@5 g4@4 d4@2 [c3,c4]@2 d4@2 e4@2 g4@2 e4@2 d4@2 [c3,c4]@2 d4@2 e4@2 g4@2 e4@4, ~ c4@4 ~ [g2,g3]@18, ~@4 d4@4 d4@5 ~ b3@34, ~@6 f4@7 ~@3 d4@4 f4@28]/2", // D5 C G
  I: "~@5 c4 ~@5 d4, [d3,a3]@13 ~@5 g4@6, ~ c4@4 ~ [g2,g3]@6, ~@4 d4@4 d4@5 ~ b3@10, ~@6 f4@7 ~@3 d4@4 f4@4", // D5 G
  J: "[~@95 e4, c4@6 c4@16 g4@12 e4 c4@8 d4 e4 g4 e4@18 g4 f4 d4@19 e4 g4 c5@4 e4@3 g4@2, ~ d4@4 d4@2 d4@4 d4 b3@4 g4 d4 b3@6 a3 c4 e4 a4 e4 c4 a3@18 c4 f4 g4 a4 g4 f4 c4@13 f4 g4 b4@23 g4 c5@3, ~@2 e4@2 e4@4 e4@2 e4@13 d4@8 c4 e4 a4@14 d4@8 f4 g4 a4@15 c4 e4 g4 c5 g4 e4 c4 e4 g4 c5 g4 e4 c4@4 g4 e4 c4@6, ~@3 g4@6 g4@4 d4 g4 b4@4 d4 g4 b4@15 b3 d4 e4 g4 e4 d4 b3@16 g4 f4 d4 f4 g4 c5@7 g4 f4@24 ~]/8",
  K: "~@11 b3, f3@5 c4@2 b3 d4 g4@3, ~ a3@5 g3@6, ~ c4 f4@3 d4, ~@6 a4@17 ~",
  L: "~@11 g3, f3@11 ~ d#3@12, ~ a3@4 a3@5 a#3@2, ~@2 c4@2 c4@2 ~ g3 a#3 d#4@3, ~@6 f4@17 ~",
  M: "[~@5 a3 ~@5 b3 ~@10 d4 c4, f3@12 g3@12 c3@12 c3@11 ~, ~ a3@4 ~@3 d4 g4@6 g4@6 g4@3, ~@2 c4@2 c4@2 ~ b3@3 d4@2 ~ c4@4 c4@2 c4@4 ~, ~@3 f4@9 ~@2 d4@2 d4@4 d4@2 ~@2]/2",
  N: "[~@17 a3 ~@11 a3 ~@17 c4 ~@11 d4, f3@6 g3@4 d4 b3@7 ~ g3@3 [g3,a#3]@2 f3@6 g3@6 c3@4 d4 c4 c3@4 d4@2 [c3,c4]@5 d4 [c3,c4]@6, ~ a3@4 a3@7 f3@6 d#3@6 ~ a3@3 c4@2 ~ b3@4 b3@23 e4@2, ~@2 c4@2 c4@2 ~ b3 d4 g4@3 ~@2 c4 f4@3 ~@3 d#4@3 ~@2 c4 f4@3 ~@3 g4@3 ~@2 d4 e4@10 d4@3 e4@3 d4@4 ~, ~@6 f4@18 ~@2 a3@6 c4@4 ~@4 a#3@4 ~@2 d4@13 ~@5 d4@4 d4@4 ~@2 c4@4 g4@8 c4@2 d4@2 g4@10 e4@2 g4@10 e4@2 g4@6]/5", // Gm C
  O: "~@11 d4, c4@12 c4@11 ~, ~ d4@4 d4@2 d4@4 ~, ~ e4 e4@2 e4!2, ~ g4@2 g4",
  P: "~@11 d4, b3@12 b3@11 ~, ~ d4@4 d4@2 d4@4 ~, ~ g4 g4@2 g4!2, ~@6 b4@12 b4@5 ~",
  Q: "~@11 c4, a3!2, ~ c4@4 c4@2 c4@4 ~, ~ e4 e4@2 e4!2, ~ a4@2 a4",
  R: "~@10 e4 d4, b3!2, ~ d4@4 d4@2 d4@4 ~, ~ e4 e4@2 e4 ~, ~ g4@2 g4",
  S: "~@11 f4, c4!2, ~ f4@4 f4@2 f4@4 ~, ~ g4 g4@2 g4!2, ~ a4@2 a4",
  T: "~@11 f4, d4!2, ~ f4@4 f4@2 f4@3 g4@2, ~@2 g4@2 g4@4 g4 b4@3, ~ c5@3",
  U: "~@11 d4, c4!2, ~ d4@4 d4@2 d4@4 ~, ~ e4 e4@2 e4!2, ~ g4@2 g4",
  V: "[~@25 d5@3 [c4,g4,c5,e5]@47 ~@21, c4@13 c4@7 a4@9 ~@67, ~@2 d4@8 ~ d4@4 d4@14 ~@67, ~@2 e4@2 e4@7 c5@3 ~@34, ~@6 a4@11 f4@12 ~@67]/4", // C
})).s("gm_epiano2").gain(0.24).pan(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C@2 D E@2 F A B C@2 D E@2 F A B C@2 D E@2 F G@2 H@2 I@4 J K L M@3 N O A B C@2 D E@2 F A B C@2 D E@2 F G@2 E@2 P@2
  Q R@4
>`.pickRestart({
  A: "[c3,c4,e4]@11 [b2,b3,d4], g3", B: "[a2,e3,a3,c4]@11 [g2,g3,b3,d4]", C: "[[f2,a3,c4] [g2,b3], f3]/2",
  D: "~@2 e4 [b2,b3,d4,g4], [c3,g3,c4]@3 ~", E: "[[a2,a3,c4] [e2,g3,b3], e3]/2", F: "[d2,a3,c4] [g2,b3,d4], f3",
  G: "[[c3,e4]@4 ~@3 g#3, g3@7 ~, ~ [b2,d4]]/2", H: "[~ [e2,g3,b3], [a2,a3,c4] ~, ~ e3@7]/2",
  I: "[[f2,c3]@6 ~@3 c4@3 ~@3 c4@3 b3@5 ~ [c2,e3]@24, f3 ~, a3@3 ~@5, ~ d2 g2@6, ~@12 d4@11 c4@25]/4", // F5 C
  J: "[f2,c3,f3]@5 [a2,e3,c4] [g2,d3,g3,b3]@6, a3 ~", K: "[f2,c3,f3,a3]@2 [d#2,f3] d#3, ~ [a#2,g3]",
  L: "~ f3 ~ g3, a3@3 ~, [f2,c3,g3] [g2,d3,b3]", // Fsus2 G
  M: "[[c2,g2,e3,c4]@9 [e2,g3]@3 ~@3 f3@3 ~@15 d#3@2 d3, ~@9 c3@9 ~@12 a#2@5 ~, ~@4 a3@3 g3@2 f3@2 ~, ~@2 f2 [g2,d3,b3] [f2,c3,a3] [d#2,g3]]/3", // C Em G F D#
  N: "[f2,c3,a3] [g2,d3,g3,b3]", O: "[c2,g2,e3,c4]",
  P: "[f2@6 ~@3 c4@3 ~@3 c4@3 b3@5 c4, f3, a3@3 ~, c3 g2, ~@6 d2@6 d4@11 ~]/2", Q: "[e3,c4]@3 [g3,d4], [c2,g2]",
  R: "[[f2,c3,a3,e4]@13 [g2,f3,a3,c4]@15 [c2,g2,e3,c4]@47 ~@21]/4", // Fmaj7 F C
})).s("gm_string_ensemble_1").gain(0.24)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  A B C D E F G H A B C D E F G H I B J D E F G H K L M N O P Q@2 R S T U V W X@2 A B J D E F G H A B J D E F G H Y Z M
  N O P AA AB@3 ~
>`.pickRestart({
  A: "~@3 e4 ~@4 g3 ~@2 g3, c3@10 g3@4 e3@9 ~, ~@2 e3@10 c3@11 ~, ~@4 g3@4 c4@7 ~@3 e4@6, ~@5 c4",
  B: "~@2 a3 ~@5 a3 ~@2 a3, a2@5 a3@2 e3@5, ~@2 e3@10 a2@11 ~, ~@3 e4@4 ~@2 e4@2 ~, ~@4 c4@3 ~@3 c4@2",
  C: "~@2 a3 ~@8 f3, f2@10 f3@4 c3@9 ~, ~ f3@2 c4@4 ~@2 c4@3, ~@4 a3@3 ~ f3@2 a3@2, ~@6 f2@5 ~",
  D: "~@11 g3, g2@10 g3@4 d3@9 ~, ~ d3@5 g2@5 ~, ~@4 g3@4 b3@7 ~ g3@4 b3@4, ~@2 d4@3 ~ d4@2",
  E: "~@11 g3, c3@10 g3@4 e3@9 ~, ~@2 e3@9 ~ c3@11 ~, ~@2 g3@2 c4@3 ~ g3@2 c4@2, ~@3 e4@4 ~@2 e4@3",
  F: "~@2 a3 ~@2 a3 ~@2 a3 ~ c4 a3, a2@10 ~@2 a2@11 ~, ~@2 e3@9 ~@3 e3@9 ~, ~@6 e4@6 ~@6 e4@5 ~, ~@2 c4 ~@3",
  G: "~@2 b3 ~@2 g3 ~@2 b3 ~@2 g3, e3@11 ~ e3@11 ~, ~ g3@3 b3@3 g3@3 b3@2, ~@2 d4@3 ~ d4@2",
  H: "~@4 a3@2 ~@4 f3@2 ~@4 b3@2 ~@2 b3@2 f3 ~, d3@12 g2@11 ~, ~@2 f3@6 a3@4 ~@2 f3@7 ~@3, ~@6 c4@6 ~@6 d4@5 ~",
  I: "~@3 e4 ~@4 g3 ~@2 g3, c3@10 g3@4 e3@9 ~, ~@2 e3@10 c3@11 ~, ~@2 g3@2 c4@3 ~@2 e4@3, ~@5 c4",
  J: "~@2 a3 ~@8 f3, f2@10 f3@4 c3@9 ~, ~@2 f3@4 c4@9 ~@3 c4@6, ~@8 a3@7 ~ f3@4 a3@4, ~@6 f2@5 ~",
  K: "~@11 g3, c3@5 g3@2 e3@4 ~, ~@2 e3@9 ~ c3@10 ~@2, ~@2 g3@2 c4@3 ~ g3@2 c4@2, ~@3 e4@4 ~@2 e4@3",
  L: "~@5 g3 ~@2 g3 ~@2 g#2, g2@10 ~@2 g2@9 ~@3, ~@2 d3@9 ~@3 d3@8 ~@2, ~@4 g3@4 b3@5 ~@7 b3@4, ~@6 d4@7 ~@5 d4@6",
  M: "~@2 a3 ~@2 e3 ~@2 a3 ~ a3 e3, a2@11 ~ a2@11 ~, ~@2 e3@6 a3@5 ~ e3@7 ~@3, ~@3 c4@4 ~@2 c4@2 ~",
  N: "~@2 g3 ~@8 e3, e2@10 e3@4 b2@9 ~, ~ e3@2 b3@5 ~ b3@3, ~@2 g3@2 e3 g3, ~@6 e2@5 ~",
  O: "~@2 f3 ~@2 f3 ~@2 a3 ~@2 f3, f2@11 ~@13, ~@2 c3@9 ~ d3@12, ~@3 c4@4 ~@2 c4@3, ~@8 a3@5 ~ f3@6 a3@4",
  P: "~@2 f3 ~@2 f3 ~@2 f3 ~@2 d3, g2@11 ~ g2@11 ~, ~@2 d3@9 ~@3 d3@7 ~@3, ~@6 c4@7 ~@5 b3@6, ~@2 g3 ~@2 f3",
  Q: "[~@2 g3 ~@2 e3 ~@2 g3 ~@2 e3 ~@2 g3 ~@2 e3 ~@2 g3 ~ g3 e3, c3@10 ~@2 c3@11 ~ c3@11 ~ c3@11 ~, ~@2 e3@4 c4@7 ~@5 c4@9 ~@3 c4@9 ~@3 c4@5 ~, ~@8 g3@6 e3@6 g3@6 e3@6 g3@6 e3@7 ~@3]/2",
  R: "~@5 f3 ~@5 g3, f2@11 ~ g2@11 ~, ~ c3@5 ~ d3@5, ~@4 f3@4 a3@5 ~@3 g3@4 b3@4, ~@6 c4@7 ~@5 d4@6",
  S: "~@2 f3 ~@2 f3 ~@2 g3 ~@2 d#3, f2@11 ~ d#2@12, ~@2 c3@9 ~@3 d#3@5 ~ g3@4, ~ c4 ~@2, ~@8 a3@4 ~@6 a#3@5 ~",
  T: "~@2 f3 ~@2 f3 ~@2 g3 ~@2 g3, f2@12 g2@11 ~, ~ c3@5 ~ d3@5, ~ c4 ~ d4, ~@8 a3@5 ~@7 b3@4",
  U: "~@2 g3 ~@2 g3 ~@2 g3 ~ c4 g3, c3@11 ~ c3@11 ~, ~@2 e3@6 c4@5 ~ e3@10, ~@3 e4@2 ~@4 e4@2 ~",
  V: "~@2 f3 ~@2 f3 ~@2 g3 ~@2 g3, f2@11 ~ g2@11 ~, ~ c3@5 ~ d3@5, ~@6 c4@7 ~@5 d4@6, ~@8 a3@5 ~@7 b3@4",
  W: "~@2 f3 ~@2 f3 ~@2 g3 ~ g3 d#3, f2@11 ~ d#2@12, ~@2 c3@10 ~@2 d#3@5 ~@5, ~ c4 ~@2, ~@8 a3@4 ~@6 a#3@5 ~",
  X: "[~@2 f3 ~@2 f3 ~@2 g3 ~@5 g3 ~@5 g3 ~ c4 g3, f2@6 g2@5 g3@2 e3@4 g3@2 e3@4 ~, ~@2 c3@10 ~@2 d3@10 c3@11 ~ c3@10 ~@2, ~@6 c4@7 ~@5 d4@6 ~@6 e4@7 ~@5 e4@5 ~, ~@4 a3@2 ~@4 b3@2 ~@4 c4@3 ~@5]/2",
  Y: "~@11 g3, c3@5 g3@2 e3@4 ~, ~@2 e3@9 ~ c3@10 ~@2, ~@2 g3@2 c4@3 ~ g3@2 c4@2, ~@2 e4@3 ~ e4@2",
  Z: "~@10 g3@2 ~@4 g3@2 ~@4 g#2 ~, g2@10 ~@2 g2@9 ~@3, ~@2 d3@9 ~@3 d3@8 ~@2, ~@4 g3@4 b3@5 ~@7 b3@4, ~@6 d4@7 ~@5 d4@6",
  AA: "~@2 g3 ~@5 g3 ~@2 g3, c3@4 c4@3 ~@3 c4@2, ~@2 e3@7 ~ g3@4 e3@8 ~@2, ~@3 e4@4 ~@2 e4@3, ~@6 c3@5 ~",
  AB: "[~@4 c4@2 ~@2 c4@3 a3@2 ~@4 a3@3 ~@5 f3@3 ~@4 e4@16 ~@24, f3@10 ~@3 g2@13 ~@2 c3@24 ~@20, ~@2 a3@7 ~@6 f3@7 a3@6 ~ e3@22 ~@21, ~@6 e4@6 ~@8 c4@9 g3@20 ~@23, ~@5 c4@3 ~@4]/3",
})).s("gm_electric_guitar_jazz").gain(0.15).pan(0.9)

// drums · kick
const kick = s("bd").struct("<A@24 B A@7 B A@3 B A@15 B A@3 C A@6 D E ~@2>".pickRestart({
  A: "x ~@4 x!2 ~@5", B: "x ~@4 x!2 ~@4 x", C: "x ~ x ~@2 x!2 ~@5", D: "x ~@10 x ~ x ~@10", E: "~ x ~@4",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!39 [~ x ~@2] ~@27>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@39 A B@7 C B@7 C B@7 D ~@3>".pickRestart({
  A: "~@7 x!5", B: "~ x ~ x", C: "~@3 x ~@3 x!5", D: "~@3 x ~@6 x ~",
})).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@47 [~@7 x!5] ~@13 [~@11 x] ~@5>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<A B@7 A B@7 C B@7 C B@3 C B@3 ~@8 C B@6 D ~@14 E F G ~@2>".pickRestart({
  A: "~ x!11", B: "x!12", C: "~@2 x!10", D: "x!7 ~@5", E: "~@3 x!9",
  F: "x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~@2 x ~ x ~", G: "~ x ~@22",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 [~@7 x!5] ~@15 [~@9 x!3] ~@5 [~@5 x] ~@5>").gain(0.24)

// drums · high tom
const high_tom = s("ht").struct("<~@55 [~@7 x!2 ~@3] ~@11>").gain(0.24)

// drums · crash
const crash = s("cr").struct("<~@40 A ~@7 A ~@6 B A ~ A ~ A@3 ~@4>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.3)

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

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

More by Leo Sayer