Strudelify

Everlasting Love

David Essex

KeyE♭ majorTempo200 bpm
0:00/0:00
// Everlasting Love — David Essex
// 200 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/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.

// other · timpani
const timpani = note(`<
  ~@20 A B ~@2 C B ~@2 C B ~@2 C B ~@11 C B ~@2 C B ~@2 C B ~@2 A B ~@2 A D@3 E D@3 E ~@8 F G ~@2 H G ~@2 H G ~@2 H G
  ~@2 H G ~@2 H G ~@2 H G
>`.pickRestart({
  A: "~@13 bb2!3", B: "[bb2,eb3] ~@15", C: "~@14 bb2!2", D: "bb2 ~@13 bb2!2", E: "bb2 ~@15", F: "~@14 c3!2",
  G: "[c3,f3] ~@15", H: "~@13 c3!3",
})).s("gm_timpani").gain(0.25)

// other · timpani · soft notes
const timpani_soft = note(`<
  ~@20 A ~@3 B ~@3 B ~@3 B ~@12 B ~@3 B ~@3 B ~@3 A ~@3 A ~@16 C ~@3 D ~@3 D ~@3 D ~@3 D ~@3 D ~@3 D ~
>`.pickRestart({
  A: "~@12 bb2 ~@3", B: "~@12 bb2!2 ~@2", C: "~@12 c3!2 ~@2", D: "~@12 c3 ~@3",
})).s("gm_timpani").gain(0.05)

// bass · electric bass finger
const bass = note(`<
  ~@3 A B@3 C B@3 C B@3 C B@3 D E F G H I F G H J F G H J K@2 L K B@3 C B@3 D E F G H I F G H J F G H J K@2 L K M@3 E
  M@3 E M@3 E M@3 N O P Q G R P Q G S P Q G S P Q G R P Q G S P Q G S T
>`.pickRestart({
  A: "~@3 eb2", B: "ab1 ~ ab1 ~@2 ab1 ~@2 ab1@3 ~@3 eb2@2", C: "ab1 ~ ab1 ~@2 ab1 ~@2 ab1@3 ~ bb1@2 c2@2",
  D: "f1 ~ f1 ~@2 f1 ~@2 f1@3 ~ g1@2 a1@2", E: "bb1 ~ bb1 ~@2 bb1 ~@2 bb1@3 ~ c2@2 d2@2",
  F: "eb2 ~ eb2 ~@2 eb2 ~@2 eb2@3 ~ eb2@2 eb2@2", G: "d2 ~ d2 ~@2 d2 ~@2 d2@3 ~ d2@2 d2@2",
  H: "c2 ~ c2 ~@2 c2 ~@2 c2@3 ~ c2@2 c2@2", I: "f2 ~ f2 ~@2 f2 ~@2 f2@4 bb2@4", J: "f1 ~ f1 ~@2 f1 ~@2 f1@4 bb1@4",
  K: "eb2 ~ eb2 ~@2 eb2 ~@2 eb2@3 ~ eb2@4", L: "b1 ~ b1 ~@2 b1 ~@2 b1@3 ~ b1@4",
  M: "bb1 ~ bb1 ~@2 bb1 ~@2 bb1@3 ~@3 f2@2", N: "g1 ~ g1 ~@2 g1 ~@2 g1@3 ~ a1@2 b1@2",
  O: "c2 ~ c2 ~@2 c2 ~@2 c2@3 ~ d2@2 e2@2", P: "f2 ~ f2 ~@2 f2 ~@2 f2@3 ~ f2@2 f2@2",
  Q: "e2 ~ e2 ~@2 e2 ~@2 e2@3 ~ e2@2 e2@2", R: "g2 ~ g2 ~@2 g2 ~@2 g2@4 c3@4", S: "g1 ~ g1 ~@2 g1 ~@2 g1@4 c2@4",
  T: "f2 ~@3",
})).s("gm_electric_bass_finger").gain(0.45)

// other · distortion guitar
const distortion_guitar = note(`<
  A@2 B@2 C@15 ~@14 D@2 E D C@7 ~@14 D@2 E D ~@8 F@7 ~@10 G H I J K L M N G H I J G H I J O
>`.pickRestart({
  A: "[[ab2,eb3,ab3]@29 ~ [ab2,eb3,ab3]!2]/2", B: "[ab2,eb3,ab3]/2", C: "~@8 ab4!2 f4 eb4 ab4!2 f4 eb4",
  D: "[eb3,bb3,eb4]", E: "[eb3,b3,eb4]", F: "~@8 bb4!2 g4 f4 bb4!2 g4 f4", G: "f4@7 ~ f4!2 d4 c4 f4!2 d4 c4",
  H: "g3 c4!2 a3 c4!2 a3 g3 c4 d4 e4 f4 c4 d4 f4!2", I: "c4 d4 f4 f4@3 d4 c4!2 d4 f4 f4@3 d4 f4",
  J: "a4@3 ~ a4@4 c5 d5 f5 g5 f5 g5 a5 bb5", K: "a5@8 ~@6 a5!2", L: "a5 g5!4 f5!4 e5!4 d5!3",
  M: "d5 c5!4 bb4!4 a4!4 g4!3", N: "a4@4 g4 f4 d4@2 f4@4 g4@4", O: "f5 ~@15",
})).s("gm_distortion_guitar").gain(0.3)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A@3 B A@3 B A@3 B A@3 ~@14 C D@2 C A@3 B A@3 ~@14 C D@2 C ~@8 E@3 F E@3 ~@27
>`.pickRestart({
  A: "~@2 eb3 f3 ab3!2 f3 ~ ab3!2 f3 ~@5", B: "~@2 eb3 f3 ab3!2 f3 ~ ab3!2 f3 eb3 ab3!2 f3 eb3", C: "[g3,eb4]@15 ~",
  D: "[gb3,eb4]@15 ~", E: "~@2 f3 g3 bb3!2 g3 ~ bb3!2 g3 ~@5", F: "~@2 f3 g3 bb3!2 g3 ~ bb3!2 g3 f3 bb3!2 g3 f3",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.3)

// other · lead 5 charang
const lead_5_charang = note("<~@4 [ab2!16]!17 ~@16 [ab2!16]!9 ~@24 [bb2!16]!7 ~@27>").s("gm_lead_5_charang").gain(0.25)

// chords · harpsichord
const harpsichord = note(`<
  A@2 B@2 C D E C@2 D E C@2 D E C@2 D E F G ~@12 H I J K C D E C@2 D E F G ~@12 H I J K ~@8 L M N L@2 M N O P ~@25
>`.pickRestart({
  A: "[[ab2,eb3]@31 ~]/2", B: "[ab2,eb3]/2", C: "~@4 [ab3,c4]@3 ab3 [ab3,c4] ~ [ab3,c4]@3 ab3 [ab3,c4] ~",
  D: "~@4 [ab3,db4]@3 ab3 db4 ~ [ab3,db4]@3 ab3 [ab3,db4] ~", // Db5
  E: "~@4 [ab3,db4]@3 ~ db4 ~ [ab3,db4]@3 ab3 [ab3,db4] ~, ~@7 ab3@2 ~@7", // Db5
  F: "~@2 [f3,a3] ~@2 [f3,a3] ~ [f3,a3] [f3,a3]@3 ~ [f3,a3] ~@3", // F
  G: "~@2 [f3,bb3] ~@2 [f3,bb3] ~ [f3,bb3] [f3,bb3]@3 ~ [f3,bb3] ~@3", H: "[bb3,eb4,g4]@15 ~", I: "[bb3,eb4,gb4]@7 ~",
  J: "[b3,eb4,gb4]@15 ~", K: "[bb3,eb4,g4]", L: "~@4 [bb3,d4]@3 bb3 [bb3,d4] ~ [bb3,d4]@3 bb3 [bb3,d4] ~",
  M: "~@4 [bb3,eb4]@3 bb3 eb4 ~ [bb3,eb4]@3 bb3 [bb3,eb4] ~", // Eb5
  N: "~@4 [bb3,eb4]@3 ~ eb4 ~ [bb3,eb4]@3 bb3 [bb3,eb4] ~, ~@7 bb3@2 ~@7", // Eb5
  O: "~@2 [g3,b3] ~@2 [g3,b3] ~ [g3,b3] [g3,b3]@3 ~ [g3,b3] ~@3", // G
  P: "~@2 [g3,c4] ~@2 [g3,c4] ~ [g3,c4] [g3,c4]@3 ~ [g3,c4] ~@3", // C5
})).s("gm_harpsichord").gain(0.35)

// other · clavinet
const clavinet = note("<A B C D ~@29 E F@2 G ~@21 E F@2 H ~@42>".pickRestart({
  A: "~@2 ab2!4 ~ ab2!2 ~ ab2 ~ ab2!2 ~ ab2, ab1", B: "~@2 ab2!3 eb3 ~ ab2!2 ~ ab2 ~ ab2!2 ~ ab2, ab1@15 ~",
  C: "~@2 ab2!4 ~ ab2!2 ~ ab2 ~ ab2!2 ~ ab2, ab1@15 ~", D: "~ ab2!5 ~ ab2 ab2@3 ab2 eb2 f2 ab2 ~, ab1", E: "g3",
  F: "gb3@15 ~", G: "eb3", H: "eb3@15 ~",
})).s("gm_clavinet").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@12 A B C D A B E F G H I J K L I J K L I M N O@2 ~@2 A B C P@2 B E F G Q R S T U R S T U R V W X@2 ~@2 Y Z AA AB AC
  AD@2 AE AF AG AH AI@2 AG AJ AK AL AM AN AO AP AQ AN AO AP AQ AN AO AP AQ AN AO AP AQ AN AO AP AQ AN AR AS AT
>`.pickRestart({
  A: "~ [ab2,c4,eb4,ab4] [ab2,c4,eb4,g4] [ab2,c4,eb4,ab4]", // Ab Abmaj7 Ab
  B: "[ab2,db4,f4,bb4]@10 [ab2,db4,f4,bb4]@3 [ab2,eb4,g4,c5]@3", // Bbm7 Abmaj7
  C: "[ab2,f4,ab4,db5]@8 [ab2,f4,ab4,bb4]@4 bb2@2 bb2 a2, ~@3 [eb4,g4,c5]", D: "[ab2,c4,eb4,ab4]",
  E: "[ab2,f4,ab4,db5]@2 [ab2,f4,ab4,bb4] [bb2,eb4,ab4,c5]", F: "[f2,a3,c4,f4]",
  G: "eb4@2 d4 [bb3,d4,f4], bb2, [bb3,f4]@3 ~", H: "~@3 [eb5,eb6]@2 [d5,d6]!2 [c5,c6], eb2@15 ~",
  I: "[c5,c6]@2 [bb4,bb5] ~@3 [eb5,eb6]@4 [d5,d6]@2 [d5,d6]@2 [c5,c6]@2, d2@15 ~", // C Bb Eb D C
  J: "[c5,c6]@2 [bb4,bb5] ~@3 [eb5,eb6]@2 [eb5,eb6]@2 [d5,d6]@2 [d5,d6]@2 [c5,c6]@2, c2@15 ~", // C Bb Eb D C
  K: "[c5,c6]@2 ~@2 [eb5,eb6]@2 [c5,c6]@2 [f2,eb5,eb6]@3 ~ [bb2,f5,f6]@3 ~, f2@7 ~@9", // C Eb C F7 Bb5
  L: "[eb5,eb6] ~@2 [eb5,eb6]@2 [d5,d6]!2 [c5,c6], eb2@15 ~", // Eb D C
  M: "[c5,c6]@2 [bb4,bb5] ~@3 [ab4,ab5,ab6]@2 [ab4,ab5,ab6]@2 [g4,g5,g6]@2 [g4,g5,g6]@2 [ab4,ab5,ab6]@2, c2@15 ~", // C Bb Ab G Ab
  N: "[ab4,ab5,ab6]@2 ~@2 [ab4,ab5,ab6]@2 [ab4,ab5,ab6]@2 [f2,ab4,ab5,ab6]@3 ~ [bb2,ab4,ab5,ab6]@3 ~, f2@7 ~@9", // Ab Fm Bb7
  O: "[g4,g5,g6]/2", P: "[[ab2,c4,eb4,ab4]@9 ~ [ab2,c4,eb4,ab4]@2 [ab2,c4,eb4,g4]@2 [ab2,c4,eb4,ab4]@2]/2",
  Q: "~@3 eb6@2 d6!2 c6, eb2@15 ~", R: "c6@2 bb5 ~@3 eb6@4 d6@2 d6@2 c6@2, d2@15 ~",
  S: "c6@2 bb5 ~@3 eb6@2 eb6@2 d6@2 d6@2 c6@2, c2@15 ~", T: "c6@2 ~@2 eb6@2 c6@2 [f2,eb6]@3 ~ [bb2,f6]@3 ~, f2@7 ~@9",
  U: "eb6 ~@2 eb6@2 d6!2 c6, eb2@15 ~",
  V: "c6@2 bb5 ~@3 [ab5,ab6]@2 [ab5,ab6]@2 [g5,g6]@2 [g5,g6]@2 [ab5,ab6]@2, c2@15 ~", // Ab G Ab
  W: "[ab5,ab6]@2 ~@2 [ab5,ab6]@2 [ab5,ab6]@2 [f2,ab5,ab6]@3 ~ [bb2,ab5,ab6]@3 ~, f2@7 ~@9", X: "[g5,g6]/2",
  Y: "~ [bb3,bb4,bb5] [a3,a4,a5] [bb3,bb4,bb5], bb2@15 ~", Z: "[c4,c5,c6]@9 ~@2 [c4,c5,c6]@2 [d4,d5,d6]@3, bb2@15 ~",
  AA: "[eb4,eb5,eb6]@2 [c4,c5,c6] [d4,d5,d6], bb2@15 ~", AB: "[bb2,bb3,bb4,bb5]",
  AC: "~ [bb4,bb5] [a4,a5] [bb4,bb5], bb2@15 ~", // Bb A Bb
  AD: "[[c5,c6]@10 ~ [c5,c6]@2 [d5,d6]@3 [eb5,eb6]@8 [c5,c6]@4 [d5,d6]@4, bb2@31 ~]/2", AE: "[bb2,bb4,bb5]",
  AF: "~ [bb2,d4,f4,bb4] [bb2,d4,f4,a4] [bb2,d4,f4,bb4]", AG: "[bb2,eb4,g4,c5]@10 [bb2,eb4,g4,c5]@3 [bb2,f4,a4,d5]@3",
  AH: "[bb2,g4,bb4,eb5]@8 [bb2,g4,bb4,c5]@4 c3@2 c3 b2, ~@3 [f4,a4,d5]", // Eb C7 Dm
  AI: "[[bb2,d4,f4,bb4]@9 ~ [bb2,d4,f4,bb4]@2 [bb2,d4,f4,a4]@2 [bb2,d4,f4,bb4]@2]/2", // Bb Bbmaj7 Bb
  AJ: "[bb2,g4,bb4,eb5]@2 [bb2,g4,bb4,c5] [c3,f4,bb4,d5]", AK: "[g2,b3,d4,g4]",
  AL: "f4@2 e4 [c4,e4,g4], c3, [c4,g4]@3 ~", AM: "~@3 f6@2 e6!2 d6, f2@15 ~",
  AN: "d6@2 c6 ~@3 f6@4 e6@2 e6@2 d6@2, e2@15 ~", AO: "d6@2 c6 ~@3 f6@2 f6@2 e6@2 e6@2 d6@2, d2@15 ~",
  AP: "d6@2 ~@2 f6@2 d6@2 [g2,f6]@3 ~ [c3,g6]@3 ~, g2@7 ~@9", AQ: "f6 ~@2 f6@2 e6!2 d6, f2@15 ~",
  AR: "d6@2 c6 ~@3 [bb5,bb6]@2 [bb5,bb6]@2 [a5,a6]@2 [a5,a6]@2 [bb5,bb6]@2, d2@15 ~", // Bb A Bb
  AS: "[bb5,bb6]@2 ~@2 [bb5,bb6]@2 [bb5,bb6]@2 [g2,bb5,bb6]@3 ~ [c3,bb5,bb6]@3 ~, g2@7 ~@9", AT: "[f3,f5,f6] ~@7",
})).s("gm_string_ensemble_1").gain(0.35)

// chords · trombone
const trombone = note(`<
  ~@19 A B C@2 D E F G D H I J K L M N O P ~@7 A B C@2 D E F G D H I J K L M N O P Q R S T U V W X ~@7 Y Z AA@2 G AB AC
  AD G AE AF AG J AH AA@2 G AB AC AD G AE AF AG J AH AI
>`.pickRestart({
  A: "f2", B: "bb2", C: "[eb3@4 ~@3 bb3, bb3@27 ~@5, ~@16 d3@15 ~]/2", D: "[c3,ab3]",
  E: "[f2,ab3]@7 ~ [f2,ab3]@4 [bb2,bb3]@4", F: "[eb3,bb3]", G: "[d3,bb3]", H: "[f2,ab3]@7 ~ [f2,ab3]@4 [bb2,bb3]@3 ~",
  I: "eb3@7 ~ eb3@4 eb3@4, bb3@15 ~", J: "d3@7 ~ d3@7 ~, bb3@15 ~", K: "c3@7 ~ c3@7 ~, ab3@15 ~",
  L: "f2@3 ~ eb3@2 c3@2 [eb3,ab3]@3 ~ [f3,bb3]@3 ~, ab3@7 ~@9", M: "[eb3,bb3,eb4]", N: "gb4", O: "b3", P: "eb4",
  Q: "[bb2,f3,bb3]@2 [bb2,f3,bb3,d5] [bb2,f3,bb3]", R: "~@8 c5@2 ~ c5@2 ~ d5@2, [bb2,g3,c4]",
  S: "[bb2,g3,c4]@7 eb5 [bb2,g3,c4]@4 [bb2,g3,c4,f5]@4", T: "[bb2,f3,bb3,f5]",
  U: "[bb2,f3,bb3,bb4]@2 [bb2,f3,bb3,c5] [bb2,f3,bb3,d5]", V: "[bb2,g3,c4]", W: "[bb2,g3,c4]@2 [bb2,g3,c4]!2",
  X: "[bb2,f3,bb3]@15 ~", Y: "g2", Z: "c3", AA: "[f3@4 ~@3 c4, c4@27 ~@5, ~@16 e3@15 ~]/2",
  AB: "[g2,bb3]@7 ~ [g2,bb3]@4 [c3,c4]@4", AC: "[f3,c4]", AD: "[e3,c4]", AE: "[g2,bb3]@7 ~ [g2,bb3]@4 [c3,c4]@3 ~",
  AF: "f3@7 ~ f3@4 f3@4, c4@15 ~", AG: "e3@7 ~ e3@7 ~, c4@15 ~",
  AH: "g2@3 ~ f3@2 d3@2 [f3,bb3]@3 ~ [g3,c4]@3 ~, bb3@7 ~@9", AI: "[f2,f3]@3 ~@13",
})).s("gm_trombone").gain(0.64).pan(0.3)

// chords · trombone · soft notes
const trombone_soft = note("<A@2 B@2 C@7 D ~@50 E F G ~@2 H ~@36>".pickRestart({
  A: "[ab4@29 ~ db4!2]/2", B: "[c4@31 ~]/2", C: "ab2@15 ~", D: "ab2", E: "f5@7 ~@7 bb4!2", F: "c5@6 c5!2 ~@8",
  G: "eb5@5 ~ eb5 ~ eb5@3 ~@5", H: "eb5",
})).s("gm_trombone").gain(0.43).pan(0.3)

// other · pad warm
const pad_warm = note("<~@4 A B C D A B E D ~@92>".pickRestart({
  A: "~ ab4 g4 ab4", B: "bb4@9 ~ bb4@3 c5@3", C: "db5@8 bb4@4 c5@3 ~", D: "ab4", E: "db5@7 ~ bb4@4 c5@3 ~",
})).s("gm_pad_warm").gain(0.4)

// chords · brass section
const brass_section = note(`<
  ~@19 A B C@2 D E F G H I F J K L M ~@10 A B C@2 D E F G H I F J K L M ~@3 N O P Q ~@11 R S T@2 U V W X Y Z W AA J AB
  AC@2 U V W X Y Z W AA J AB AD
>`.pickRestart({
  A: "f4@5 ~ f4!2 f4@3 ~ f4@3 ~", B: "f4@5 ~ f4!2 f4@3 ~ f4@4", C: "[g4@16 f4@11 ~ [f4,bb4]@4, bb4@27 ~@5]/2",
  D: "[eb4,ab4]@3 [eb4,ab4]", E: "[f4,ab4]@8 ab4@4 bb4@3 ~, ~ f4", F: "[g4,bb4]@15 ~",
  G: "bb4@8 bb4@3 ~ [bb4,f5]@3 ~, f4@11 ~@5", H: "eb5@8 g4@7 ~, ab4@15 ~", I: "[ab4,c5]@7 ~ [c5,eb5]@3 ~ [bb4,f5]@3 ~",
  J: "[f4,bb4]@15 ~", K: "[eb4,ab4]@15 ~", L: "[f4,ab4]@7 ~ [f4,ab4]@3 ~ [f4,bb4]@3 ~", M: "[g4,bb4]",
  N: "f5@7 ~ d5@5 ~ bb4!2", O: "c5@6 [c5,eb5]!3 ~@2 [c5,eb5]@2 ~ [d5,f5]@2", P: "[eb5,g5]@5 ~ eb5!2 eb5@3 ~ f5@3 ~",
  Q: "f5", R: "g4@5 ~ g4!2 g4@3 ~ g4@3 ~", S: "g4@5 ~ g4!2 g4@3 ~ g4@4", T: "[a4@4 g4@3 [g4,c5], c5@27 ~@5]/2",
  U: "[f4,bb4]@3 [f4,bb4]", V: "[g4,bb4]@8 bb4@4 c5@3 ~, ~ g4", W: "[a4,c5]@15 ~",
  X: "c5@8 c5@3 ~ [c5,g5]@3 ~, g4@11 ~@5", Y: "f5@8 a4@7 ~, bb4@15 ~", Z: "[bb4,d5]@7 ~ [d5,f5]@3 ~ [c5,g5]@3 ~",
  AA: "[g4,c5]@15 ~", AB: "[g4,bb4]@7 ~ [g4,bb4]@3 ~ [g4,c5]@3 ~", AC: "[a4@16 g4@11 ~ [g4,c5]@4, c5@27 ~@5]/2",
  AD: "[a4,f5] ~@7", // Dm
})).s("gm_brass_section").gain(0.43)

// chords · french horn
const french_horn = note(`<
  ~@19 A B C@2 D E F G H I C@2 D E J ~@10 A B C@2 D E F G H I C@2 D E J ~@3 K L M N ~ O P Q ~@7 R S T@2 U V W X G Y T@2
  U V T@2 U V W X G Y T@2 U V Z
>`.pickRestart({
  A: "[c4,f4]@5 ~ [c4,f4]!2 [c4,f4]@3 ~ [c4,f4]@4", B: "[bb3,eb4]@8 [bb3,d4]@3 ~ [bb3,d4]@3 ~",
  C: "[eb4@4 ~@3 bb4, bb4@7 ~, ~ d4]/2", D: "ab4@3 ab4, c4@15 ~", E: "[c4,c5]@2 [c4,c5] [bb3,bb4]", F: "[eb4,bb4]@15 ~",
  G: "bb4@12 bb4@3 ~, d4@15 ~", H: "ab4@12 ab4@3 ~, c4@15 ~", I: "[f4,ab4]@7 ~ [f4,ab4]@3 ~ [f4,bb4]@3 ~",
  J: "[eb4,bb4]", K: "f4@7 ~ bb4@5 ~ bb4!2", L: "g4@6 g4!2 g4@2 ~ g4@2 ~ g4@2", M: "g4@5 ~ g4!2 g4@3 ~ g4@4", N: "bb4",
  O: "[c4,eb4]@5 ~ f4@2 [eb4,g4]@3 ~ [f4,a4]@3 ~, ~@6 d4 ~@9", P: "[g4,bb4]@7 ~ [a4,c5]@3 ~ [bb4,d5]@3 ~",
  Q: "[bb4,d5]", R: "[d4,g4]@5 ~ [d4,g4]!2 [d4,g4]@3 ~ [d4,g4]@4", S: "[c4,f4]@8 [c4,e4]@3 ~ [c4,e4]@3 ~",
  T: "[f4@4 ~@3 c5, c5@7 ~, ~ e4]/2", U: "bb4@3 bb4, d4@15 ~", V: "[d4,d5]@2 [d4,d5] [c4,c5]", W: "[f4,c5]@15 ~",
  X: "c5@12 c5@3 ~, e4@15 ~", Y: "[g4,bb4]@7 ~ [g4,bb4]@3 ~ [g4,c5]@3 ~", Z: "[c4,a4]@3 ~@13",
})).s("gm_french_horn").gain(0.4).pan(0.7)

// other · orchestra hit
const orchestra_hit = note(`<
  ~@21 A ~@3 A ~@3 A ~@16 A ~@3 A ~@3 A ~@24 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B
>`.pickRestart({
  A: "[eb4,eb5] ~@7", B: "[f4,f5] ~@7",
})).s("gm_orchestra_hit").gain(0.7)

// drums · kick
const kick = s("bd").struct("<[x ~@5 x ~@4 x ~@4]!3 [x ~@2 x ~@4] [x ~ x ~@3 x ~ x ~@2 x ~@4]!99 x>").gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@16 B A@3 B A@3 B A@3 B A@3 B A@8 B A@3 B A@3 B A@3 B A@3 B A@7 B A@8 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@6 x!2 ~@3", C: "~@2 x!3 ~@6 x!2 ~@3",
// … 42 more lines

More by David Essex