Strudelify

Miracle

Erasure

KeyD majorTempo120 bpm
0:00/0:00
// Miracle — Erasure
// 120 bpm, 4/4, key D 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 3 "Orchestral Harp" orchestral harp (copy of ch 2 "Orchestral Harp" orchestral harp); ch 3 "Orchestral Harp" synth bass 1 (copy of ch 2 "Orchestral Harp" synth bass 1)
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · pad warm · "Pad 2 (warm)"
const pad_warm = note(`<
  ~@4 A B C@2 A B C@2 A B C@2 D E F@2 G H I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R S T@2 R S U@2 D V W@2 X V W@2 N@2 O@2
  P@2 Q@2 N@2 O@2 P@2 Q@2 A Y E Z AA@2 E Z ~@8 AB B AC@2 AB B AC@2 N@2 O@2 P@2 Q@2 N@2 O@2 P@2 Q@2 N@2 O@2 P@2 Q@2 N@2
  O@2 P@2 Q@2 ~@2
>`.pickRestart({
  A: "[d4,f#4,a4]", B: "[d4,g4,b4]", C: "[a3,c#4,e4]/2", D: "[c4,e4,g4]", E: "[b3,d4,g4]", F: "[a3,d4,f#4]/2",
  G: "[g3,c4,e4]", H: "[g3,b3,d4]", I: "[f#3,a3,d4]/2", J: "[c4,e4,g4]/2", K: "[c4,f4,a4]/2", L: "[d4,g4,c5]/2",
  M: "[e4,g4,c5]/2", N: "[c3,c4,e4,g4]/2", O: "[f3,c4,f4,a4]/2", P: "[g3,d4,g4,c5]/2", Q: "[c4,e4,g4,c5]/2",
  R: "[d4,f#4,a4]@15 ~", S: "[d4,g4,b4]@15 ~", T: "[[e4,a4,c#5]@15 ~]/2", U: "[[e4,a4,c#5]@31 ~]/2",
  V: "[b3,d4,g4]@15 ~", W: "[[a3,d4,f#4]@31 ~]/2", X: "[c4,e4,g4]@15 ~", Y: "[b3,d4,f#4,a4]", Z: "d4 c#4, [e4,a4]",
  AA: "[a3,c#4,f#4]", AB: "[e4,g4,c5]", AC: "[d4,f#4,a4]/2",
})).s("gm_pad_warm").gain(0.45)

// chords · orchestral harp
const orchestral_harp = note("<A@7 B@8 C@8 D@8 E@2 F@6 G@8 C@8 H@8 E@2 F@6 I@3 ~@22 J K@24 L@7 ~@2>".pickRestart({
  A: "[~@111 e6, d4@22 g5 d6 g5@31 e6@2 e6 a6 e6 a6 e6 a6 e6 a6 [a4,e6] [d5,a6] [a4,e6] [d5,a6] a4@17 g5 d6 g5@8 g6 [e5,d6] [a5,g6] [e5,d6] [a5,g6] e5 a5 e6 a5 e6 a6 e6 a6 e6 a6@2, ~ a4@2 a4@2 a4@20 d6 g6 d6 g6 d6 g6 d6 [a4,g6] [e5,d6] [a5,g6] [e5,d6] [a5,g6] e5@4 e6 a6 e6 a6 e6 a6 e6 a4@16 d4@25 d6 g6 d6 g6 d6 g6 d6 a4@16, ~@2 d5@2 d5@2 d5@2 d5@8 g4@22 a5 e6 a5@8 a6 [e5,e6] [a5,a6] [e5,e6]@2 e5@27 d6 [d5,a5] [g5,d6] [d5,a5] [g5,d6] d5@27, ~@7 a5@2 a5 d6 a5 d6 a5 d6 a5 d6 [d5,a5] [g5,d6] [d5,a5] [g5,d6] d5@31 [a5,a6]@2 a5@2 a5@14 d5 a5 d5 a5 d6 a5 d6 a5 d6 a5 g4@32]/7", // A5 D5 A5 D5 E7 A7 E7 A7 …
  B: "[~@127 e6, a4@16 d4@22 g5 d6 g5@31 e6@2 e6 a6 e6 a6 e6 a6 e6 a6 [a4,e6] [d5,a6] [a4,e6] [d5,a6] a4@17 g5 d6 g5@8 g6 [e5,d6] [a5,g6] [e5,d6] [a5,g6] e5 a5 e6 a5 e6 a6 e6 a6 e6 a6@2, a6@2 [a5,a6]@2 [a5,a6]@2 a5@2 a5@14 d5 a5 d5 a5 d6 a5 d6 a5 d6 a5 g4@16 g6 [e5,d6] [a5,g6] [e5,d6] [a5,g6] e5@4 e6 a6 e6 a6 e6 a6 e6 a4@16 d4@25 d6 g6 d6 g6 d6 g6 d6 a4@16, ~ [e5,e6]@2 [e5,e6]@2 e5@27 d6 [d5,a5] [g5,d6] [d5,a5] [g5,d6] d5@31 [a5,a6]@2 a5@2 a5@14 d5 a5 d5 a5 d6 a5 d6 a5 d6 a5 g4@32, ~@7 e6@2 e6 a6 e6 a6 e6 a6 e6 a6 [a4,e6] [d5,a6] [a4,e6] [d5,a6] a4@20 d6 g6 d6 g6 d6 g6 d6 a4@6 a5 e6 a5@8 a6 [e5,e6] [a5,a6] [e5,e6]@2 e5@27 d6 [d5,a5] [g5,d6] [d5,a5] [g5,d6] d5@27]/8", // A5 D5 A5 D5 E7 A7 E7 A7 …
  C: "[~@49 d5!4 ~ d5 ~@58 d5!4 ~ d5 ~@8 a5, a4@16 a6 [g4,e6] [c5,a6] [g4,e6] [c5,a6] g4 c5 g5 c5@24 g5 a4 g5 a4 g5 a4@11 d4@16 d6 [g4,a5] [c5,d6] [g4,a5] [c5,d6] g4 c5 g5 c5@24 g5 a4 g5 a4 g5 a4@2 a5 d5 a5 d6 a5 d6 a5 d6@2, a6@2 [a5,a6]@2 [a5,a6]@2 a5@2 a5@24 c6 [d4,g5] [g4,c6] [d4,g5] [g4,c6] d4 g4 d5 g4@31 a5@2 a5 d6 a5 d6 a5 d6 a5 c4@22 g4 d5 g4@24, ~ [e5,e6]@2 [e5,e6]@2 e5@20 g5 c6 g5 c6 g5 c6 g5 g3@23 a5 d5@9 [a4,a5]@2 [a4,a5]@2 a4@20 g5 c6 g5 c6 g5 c6 g5 g3@32, ~@7 e6@2 e6 a6 e6 a6 e6 a6 e6 c4@25 d5 g5 d5 g5 d5 g5 d5 d4@9 a5 d6 a5 d6 a5 d6 a5 d6@2 [d5,d6]@2 [d5,d6]@2 d5@2 d5@24 c6 [d4,g5] [g4,c6] [d4,g5] [g4,c6] d4@4 d5 g5 d5 g5 d5 g5 d5 d4@16]/8", // C F C F Gsus2 Csus2 Gsus2 Csus2 …
  D: "[~@127 g6, d4@16 d6 [g4,a5] [c5,d6] [g4,a5] [c5,d6] g4@4 g5 c6 g5 c6 g5 c6 g5 c4@22 f5 c6 f5@9 [c5,c6]@2 [c5,c6]@2 c5@31 [g5,g6]@2 g5@2 g5@8 c5@6 c6 g6 c6 g6 c7 g6 c7 g6 c7@2, d6@2 [d5,d6]@2 [d5,d6]@2 d5@2 d5@31 g5@2 g5 e6 g5 e6 g5 e6 g5 e6 [c5,g5] [f5,e6] [c5,g5] [f5,e6] c5@11 f4@16 f6 [d5,c6] [g5,f6] [d5,c6] [g5,f6] d5@4 d6 g6 d6 g6 d6 g6 d6 g4@32, ~ [a4,a5]@2 [a4,a5]@2 a4@31 [c5,c6]@2 c5@2 c5@8 f4@9 c6 f6 c6 f6 c6 f6 c6 f6@2 [f5,f6]@2 [f5,f6]@2 f5@2 f5@31 d6@2 d6 g6 d6 g6 d6 g6 d6 g6 [g5,d6] [c6,g6] [g5,d6] [c6,g6] g5@11, ~@7 a5@2 a5 d6 a5 d6 a5 d6 a5 c4@6 c5 g5 c5@8 c6 [g4,g5] [c5,c6] [g4,g5]@2 g4@32 ~@2 c6@2 c6 f6 c6 f6 c6 f6 c6 g4@6 g5 d6 g5@8 g6 [d5,d6] [g5,g6] [d5,d6]@2 d5@27]/8", // Gsus2 Csus2 Gsus2 Csus2 C G D C5 …
  E: "[~@31 g5, c5@16 c7 [g4,g6] [c5,c7] [g4,g6] [c5,c7] g4@11, c7@2 [c6,c7]@2 [c6,c7]@2 c6@2 c6@17 g5 c6 g5 c6 g5 c6@2, ~ [g5,g6]@2 [g5,g6]@2 g5@17 c5 g5 c5@8, ~@7 g6@2 g6 c7 g6 c7 g6 c7 g6 c4@16]/2", // G C G C G
  F: "[~@95 g6, c4@22 f5 c6 f5@9 [c5,c6]@2 [c5,c6]@2 c5@31 [g5,g6]@2 g5@2 g5@8 c5@6 c6 g6 c6 g6 c7 g6 c7 g6 c7@2, c6@2 [c5,c6]@2 [c5,c6]@2 c5@2 c5@8 f4@9 c6 f6 c6 f6 c6 f6 c6 f6@2 [f5,f6]@2 [f5,f6]@2 f5@2 f5@31 d6@2 d6 g6 d6 g6 d6 g6 d6 g6 [g5,d6] [c6,g6] [g5,d6] [c6,g6] g5@11, ~ [g4,g5]@2 [g4,g5]@2 g4@32 ~@2 c6@2 c6 f6 c6 f6 c6 f6 c6 [g4,f6] [d5,c6] [g5,f6] [d5,c6] [g5,f6] d5@4 d6 g6 d6 g6 d6 g6 d6 g4@32, ~@7 g5@2 g5 e6 g5 e6 g5 e6 g5 e6 [c5,g5] [f5,e6] [c5,g5] [f5,e6] c5@11 f4@22 g5 d6 g5@8 g6 [d5,d6] [g5,g6] [d5,d6]@2 d5@27]/6", // C G C F G5 C5 G5 C5 …
  G: "[~@127 e6, c5@15 g6@7 d5 a5 d5 a5 d6 a5 d6 a5 d6 a5 g4@16 g6 [e5,d6] [a5,g6] [e5,d6] [a5,g6] e5@4 e6 a6 e6 a6 e6 a6 e6 a4@16 d4@22 g5 d6 g5@8 g6 [e5,d6] [a5,g6] [e5,d6] [a5,g6] e5 a5 e6 a5 e6 a6 e6 a6 e6 a6@2, c7@2 [c6,c7]@2 [c6,c7]@2 c6@2 c6@8 a6 [a4,e6] [d5,a6] [a4,e6] [d5,a6] a4@17 g5 d6 g5@31 e6@2 e6 a6 e6 a6 e6 a6 e6 a6 [a4,e6] [d5,a6] [a4,e6] [d5,a6] a4@20 d6 g6 d6 g6 d6 g6 d6 a4@16, ~ [g5,g6]@2 [g5,g6]@2 g5@11 d4@25 d6 g6 d6 g6 d6 g6 d6 a4@6 a5 e6 a5@8 a6 [e5,e6] [a5,a6] [e5,e6]@2 e5@27 d6 [d5,a5] [g5,d6] [d5,a5] [g5,d6] d5@27, ~@7 g6@2 g6 c7 g6 c7 g6 c7@18 d6 [d5,a5] [g5,d6] [d5,a5] [g5,d6] d5@31 [a5,a6]@2 a5@2 a5@14 d5 a5 d5 a5 d6 a5 d6 a5 d6 a5 g4@32]/8", // E7 A7 E7 A7 E7 A7 E7 A7 …
  H: "[~@127 g6, d4@15 a5@26 g5 e6 g5 e6 g5 e6 g5 e6 [c5,g5] [f5,e6] [c5,g5] [f5,e6] c5@11 f4@16 f6 [d5,c6] [g5,f6] [d5,c6] [g5,f6] d5@4 d6 g6 d6 g6 d6 g6 d6 g4@22 c6 g6 c6 g6 c7 g6 c7 g6 c7@2, d6@2 [d5,d6]@2 [d5,d6]@2 d5@2 d5@24 c6 [g4,g5] [c5,c6] [g4,g5] [c5,c6] g4@32 ~@2 c6@2 c6 f6 c6 f6 c6 f6 c6 g4@6 g5 d6 g5@8 g6 [d5,d6] [g5,g6] [d5,d6]@2 d5@27, ~ [a4,a5]@2 [a4,a5]@2 a4@11 [c4,c7] [g4,g6] [c5,c7] [g4,g6] [c5,c7] g4 c5 g5 c5 g5 c6 g5 c6 g5 c6 g5 c4@22 f5 c6 f5@9 [c5,c6]@2 [c5,c6]@2 c5@31 [g5,g6]@2 g5@2 g5@8 c5@16, ~@7 a5@2 a5 d6 a5 d6 a5 d6@24 c5 g5 c5@8 f4@9 c6 f6 c6 f6 c6 f6 c6 f6@2 [f5,f6]@2 [f5,f6]@2 f5@2 f5@31 d6@2 d6 g6 d6 g6 d6 g6 d6 g6 [g5,d6] [c6,g6] [g5,d6] [c6,g6] g5@11]/8", // C5 Fmaj7 C5 Fmaj7 D7 G7 D7 G7 …
  I: "[~@15 g6@32 ~, c5@2 ~, c7 [c6,c7]!2 c6 c6@16 ~@4, ~ [g5,g6]@2 [g5,g6]@2 g5@32 ~@11, ~@7 g6@2 g6 c7 g6 c7 g6 c7@32 ~@2]/3", // C G
  J: "~@15 g5, c4, c7 [c5,c7]!2 c5 c5@4, ~ [g4,g6]@2 [g4,g6]@2 g4@11, ~@7 g5@2 g5 c6 g5 c6 g5 c6@2", // C G
  K: "[~@127 g5, c4@22 f5 c6 f5@9 [c5,c6]@2 [c5,c6]@2 c5@31 [g5,g6]@2 g5@2 g5@8 c5@6 c6 g6 c6@9 [g5,g6]@2 [g5,g6]@2 g5@17 c5 g5 c5@8, c6@2 [c5,c6]@2 [c5,c6]@2 c5@2 c5@8 f4@9 c6 f6 c6 f6 c6 f6 c6 f6@2 [f5,f6]@2 [f5,f6]@2 f5@2 f5@31 d6@2 d6 g6 d6 g6 d6 g6 d6 g6 [g5,d6] [c6,g6] [g5,d6] [c6,g6] g5@11 c5@16 c7 [g4,g6] [c5,c7] [g4,g6] [c5,c7] g4@11, ~ [g4,g5]@2 [g4,g5]@2 g4@32 ~@2 c6@2 c6 f6 c6 f6 c6 f6 c6 [g4,f6] [d5,c6] [g5,f6] [d5,c6] [g5,f6] d5@4 d6 g6 d6 g6 d6 g6 d6 g4@25 g6 c7 g6 c7 g6 c7 g6 c7@2 [c6,c7]@2 [c6,c7]@2 c6@2 c6@17 g5 c6 g5 c6 g5 c6@2, ~@7 g5@2 g5 e6 g5 e6 g5 e6 g5 e6 [c5,g5] [f5,e6] [c5,g5] [f5,e6] c5@11 f4@22 g5 d6 g5@8 g6 [d5,d6] [g5,g6] [d5,d6]@2 d5@32 ~@2 g6@2 g6 c7 g6 c7 g6 c7 g6 c4@16]/8", // C G C F G5 C5 G5 C5 …
  L: "[~@111 g6, c4@22 f5 c6 f5@9 [c5,c6]@2 [c5,c6]@2 c5@31 [g5,g6]@2 g5@2 g5@8 c5@6 c6 g6 c6@9 [g5,g6]@2 [g5,g6]@2 g5@11, c6@2 [c5,c6]@2 [c5,c6]@2 c5@2 c5@8 f4@9 c6 f6 c6 f6 c6 f6 c6 f6@2 [f5,f6]@2 [f5,f6]@2 f5@2 f5@31 d6@2 d6 g6 d6 g6 d6 g6 d6 g6 [g5,d6] [c6,g6] [g5,d6] [c6,g6] g5@11 c5@16, ~ [g4,g5]@2 [g4,g5]@2 g4@32 ~@2 c6@2 c6 f6 c6 f6 c6 f6 c6 [g4,f6] [d5,c6] [g5,f6] [d5,c6] [g5,f6] d5@4 d6 g6 d6 g6 d6 g6 d6 g4@25 g6 c7 g6 c7 g6 c7 g6 c7@2 [c6,c7]@2 [c6,c7]@2 c6@2 c6@8, ~@7 g5@2 g5 e6 g5 e6 g5 e6 g5 e6 [c5,g5] [f5,e6] [c5,g5] [f5,e6] c5@11 f4@22 g5 d6 g5@8 g6 [d5,d6] [g5,g6] [d5,d6]@2 d5@32 ~@2 g6@2 g6 c7 g6 c7 g6 c7@2]/7", // C G C F G5 C5 G5 C5 …
})).s("gm_orchestral_harp").gain(0.12).pan(0)

// chords · orchestral harp · soft notes
const orchestral_harp_soft = note("<~ A B@6 C@8 D@8 E@8 F@8 C@8 D@8 F@16 ~@24 F@32 ~@2>".pickRestart({
  A: "~@6 d6 a5@9, ~@5 a5@2 ~@9",
  B: "[~@22 a6@4 ~@28 d6 a5@11 ~@20 a6@4 ~@6, ~@5 d6@2 d6@32 ~@14 a5@2 ~@14 d6@2 d6@25, ~@3 g6@16 a6@16 g6@13, ~@21 e6@2 ~@14 e6@2 e6@32 ~@14 e6@2 ~@9]/6",
  C: "[~@22 d6 a5@11 ~@20 a6@4 ~@28 d6 a5@11 ~@20 a6@4 ~@6, ~@5 e6@2 e6@32 ~@14 e6@2 ~@14 e6@2 e6@32 ~@14 e6@2 ~@9, ~@3 a6@16 g6@16 a6@16 g6@13, ~@21 a5@2 ~@14 d6@2 d6@32 ~@14 a5@2 ~@14 d6@2 d6@25]/8",
  D: "[~@23 g5@3 ~@11 d5 ~ d5 ~@14 d6@4 ~@29 g5@3 ~@11 d5 ~ d5 ~@14 d6@4 ~@6, ~@5 e6@2 e6@32 ~@14 a5@2 ~@14 a5@2 a5@32 ~@14 a5@2 ~@9, ~@3 a6@16 ~@24 c6@16 ~@5, ~@21 g5@2 ~@15 g5@32 ~@15 g5@2 ~@15 g5@26, ~@11 c6@16 ~@8 d6@16 ~@13]/8",
  E: "[~@54 f6@4 ~@28 g6@4 ~@12 g6 ~@15 c7@4 ~@6, ~@5 a5@2 a5@32 ~@46 d6@2 ~@14 d6@2 d6@25, ~@6 d6@32 e6@32 f6@32 ~@15 g6@2 ~@9, ~@21 g5@2 ~@14 g5@2 g5@27 ~@62, ~@22 c6@17 ~@14 c6@2 ~@14 c6@2 c6@27 ~@30]/8",
  F: "[~@54 f6@4 ~@28 g6@4 ~@12 g6 ~@15 c7@4 ~@6, ~@5 g6@2 g6@32 ~@46 d6@2 ~@14 d6@2 d6@25, ~@6 c7@32 e6@32 f6@32 ~@15 g6@2 ~@9, ~@21 g5@2 ~@14 g5@2 g5@27 ~@62, ~@22 c6@17 ~@14 c6@2 ~@14 c6@2 c6@27 ~@30]/8",
})).s("gm_orchestral_harp").gain(0.07).pan(0)

// chords · synth bass 1 · "Orchestral Harp"
const synth_bass_1 = note("<~@72 A@2 B@8 ~@48>".pickRestart({
  A: "[~@11 b4@5, ~ f#4@9 f#4@6, ~ a4@7, ~@3 d5@13, ~@9 d4@7]/2",
  B: "[~@43 c#5@16 ~@5, ~ d4@7 d4@11 c#5@14 g4@9 a5@16 ~@6, ~@2 f#4@8 a4 c#5@6 f#4@8 f#4@15 a4@16 ~@8, ~@3 b4@15 a4@8 a4@9 d5@6 d5@16 ~@7, ~@9 e4@16 ~@2 d5@7 b4@16 ~@14]/8",
})).s("gm_synth_bass_1").gain(0.18).pan(0)

// other · oboe
const oboe = note("<~@16 A@3 B C D E@2 ~@24 A@3 B C D E@2 ~@74>".pickRestart({
  A: "[g5@5 f#5]/3", B: "d5@6 a4 b4", C: "c5 b4", D: "a4 g4", E: "[d5@7 ~]/2",
})).s("gm_oboe").gain(0.4)

// bass · fretless bass
const bass = note(`<
  ~@32 A B C@2 D@2 E@2 F G H@2 F G H@2 I J K@2 I J K@2 I L M@2 N@2 I@3 L M@2 N@2 I@2 O P Q R S@2 Q R ~@16 I L M@2 N@2
  I@3 L M@2 N@2 I@3 L M@2 N@2 I@3 L M@2 N@2 I@2 ~@2
>`.pickRestart({
  A: "c1@15 ~", B: "e1@15 ~", C: "[f1@31 ~]/2", D: "[g1@31 ~]/2", E: "c1/2", F: "d2@2 ~@2 d2 ~@2 d2!4 ~@3 d2 ~",
  G: "g1 ~@3 g1 ~@2 g1!4 ~@3 g1 ~", H: "a1 ~@3 a1 ~@2 a1!4 ~@3 a1 ~", I: "c2@2 ~@2 c2 ~@2 c2!4 ~@3 c2 ~",
  J: "g1@2 ~@2 g1 ~@2 g1!4 ~@3 g1 ~", K: "d2 ~@3 d2 ~@2 d2!4 ~@3 d2 ~", L: "e2@2 ~@2 e2 ~@2 e2!4 ~@3 e2 ~",
  M: "f2@2 ~@2 f2 ~@2 f2!4 ~@3 f2 ~", N: "g2@2 ~@2 g2 ~@2 g2!4 ~@3 g2 ~", O: "d2@3 d2 d2@4", P: "b1@3 b1 b1@4",
  Q: "g1@3 g1 g1@4", R: "a1@3 a1 a1@4", S: "f#1@3 f#1 f#1@4",
})).s("gm_fretless_bass").gain(0.5)

// bass · slap bass 2 · "Fretless Bass"
const bass_2 = note("<~@88 [c2!16] [g1!16] [d2!16]!2 [c2!16] [g1!16] [d2!16]!2 ~@34>").s("gm_slap_bass_2").gain(0.4)

// other · ocarina
const ocarina = note(`<
  ~@25 A B@2 C@2 D@2 ~ A B@2 C@2 D@2 ~@25 A B@2 C@2 D@2 ~@10 E F G H I J K L M N O P Q@2 ~@9 A B@2 C@2 D@2 ~ A B@2 C@2
  D@2 ~ A B@2 C@2 D@2 ~@2
>`.pickRestart({
  A: "~ e4 g4 d5", B: "[c5@5 f4 a4 e5]/2", C: "[d5@5 g4 b4 f5]/2", D: "[e5@29 ~@3]/2", E: "~@2 f#5 a5 d6 ~@3",
  F: "a5 d6 f#6 ~@5", G: "e5", H: "~@2 b5 d6 g6 ~@3", I: "a5@3 d6", J: "f#6@2 e6 d6", K: "e6@2 d6 c6 e6@2 d6 c6",
  L: "d6 b5", M: "f#6@2 e6 d6 f#6@2 e6 d6", N: "d6", O: "g6 f#6 e6 g6", P: "f#6 d6 b5 g5", Q: "a5/2",
})).s("gm_ocarina").gain(0.43).pan(1)

// other · ocarina
const ocarina_2 = note(`<
  ~@65 A B@2 C@2 D@2 ~@10 E F G H I J K L M N O P Q@2 ~@6 R@2 ~@6 S@2 ~@4 T@2 U@3 ~@3 T@2 U@3 ~
>`.pickRestart({
  A: "~ e4 g4 d5", B: "[c5@5 f4 a4 e5]/2", C: "[d5@5 g4 b4 f5]/2", D: "[e5@29 ~@3]/2", E: "~@2 f#5 a5 d6 ~@3",
  F: "a5 d6 f#6 ~@5", G: "e5", H: "~@2 b5 d6 g6 ~@3", I: "a5@3 d6", J: "f#6@2 e6 d6", K: "e6@2 d6 c6 e6@2 d6 c6",
  L: "d6 b5", M: "f#6@2 e6 d6 f#6@2 e6 d6", N: "d6", O: "g6 f#6 e6 g6", P: "f#6 d6 b5 g5", Q: "a5/2",
  R: "[~@3 c5@2 g4@2 e4@8 ~]/2", S: "[~@4 g4@2 c5@4 d5@4 e5@4 c5@4 g4@4 e4@5 ~]/2", T: "[e5@6 f5 e5 d5@22 ~@2]/2",
  U: "[g5@18 e5@4 c5@4 g4@3 ~ e4@4 ~@14]/3",
})).s("gm_ocarina").gain(0.3).pan(0)

// chords · lead 3 calliope · "Lead 3 (calliope lead)"
const lead_3_calliope = note("<~@39 A ~@15 B ~@31 B ~@7 B ~@15 A ~@18>".pickRestart({
  A: "[g5,c6] [e5,g5] [c5,e5] [e5,g5] e5 [g4,c5] [c5,e5] [g4,c5] [e4,g4] [g4,c5] [e4,g4] [c4,e4] [e4,g4] [c4,e4] [g3,c4] [c4,e4]", // C5 Em C Em C5 C C5 Em …
  B: "[a5,d6] [f#5,a5] [d5,f#5] [f#5,a5] f#5 [a4,d5] [d5,f#5] [a4,d5] [f#4,a4] [a4,d5] [f#4,a4] [d4,f#4] [f#4,a4] [d4,f#4] [a3,d4] [d4,f#4]", // D5 F#m D F#m D5 D D5 F#m …
})).s("gm_lead_3_calliope").gain(0.29)

// other · lead 1 square · "Lead 1 (square)"
const lead_1_square = note("<~@80 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@34>".pickRestart({
  A: "g5 ~ g5!3 ~ g5!3 ~ g5!3 ~ g5!2", B: "f#5 ~ f#5!3 ~ f#5!3 ~ f#5!3 ~ f#5!2",
})).s("gm_lead_1_square").gain(0.3).pan(0.6)

// other · electric guitar muted · "Electric Guitar"
const electric_guitar_muted = note(`<
  ~@40 A B C@2 A B C@2 D B E@2 D B E@2 D F G@2 H@2 D@3 F G@2 H@2 D@2 ~@6 A ~@17 D F G@2 H@2 D@3 F G@2 H@2 D@3 F G@2 H@2
  D@3 F G@2 H@2 D@2 ~@2
>`.pickRestart({
  A: "d4!16", B: "g3!16", C: "a3!16", D: "c4!16", E: "d3!16", F: "e4!16", G: "f4!16", H: "g4!16",
})).s("gm_electric_guitar_muted").gain(0.28)

// chords · marimba
const marimba = note("<~@56 A@7 B@8 C@3 ~@22 A@7 B@24 C@3>".pickRestart({
  A: "[~@51 c5@5, ~ c4@16 c4@2 c5@8 c5@7 g4@8 g4@8 g4@6, ~@2 g4@8 g4@16 ~@7 d4@2 c5@8 c5@8 ~@5, ~@3 c5@8 c5@7 f4@8 f4@16 ~@7 e4@7, ~@9 e4@16 c4@16 d4@15]/7",
  B: "[~@59 c5@5, ~ e4@16 e4@10 c5@8 c5@7 g4@8 g4@8 g4@6, ~@2 g4@8 g4@8 g4@16 ~@7 d4@2 c5@8 c5@8 ~@5, ~@3 c5@8 c5@8 c5@7 f4@8 f4@16 ~@7 e4@7, ~@9 c4@16 c4@8 c4@16 d4@15]/8",
  C: "[~@3 c5@16 ~@5, ~ e4@16 ~@7, ~ g4@8 ~@3]/3",
})).s("gm_marimba").gain(0.5).pan(0.8)

// drums · rim
const rim = s("rim").struct("<~@40 [x!16]!32 [~@3 x]!8 [~ x ~ x]!16 [x!16]!32 ~@2>").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@40 A@32 ~@12 B C B ~ A@40 ~@2>".pickRestart({
  A: "x ~ x ~ x ~ x!2", B: "x", C: "~@7 x",
})).gain(0.71)

// drums · clap
const clap = s("cp").struct("<~@40 [~ x ~ x]!32 ~@8 [~ x ~ x]!48 ~@2>").gain(0.71)

// drums · high tom
const high_tom = s("ht").struct("<~@84 x ~@45>").gain(0.71)

// drums · splash
const splash = s("cr").struct("<~@72 x ~@57>").gain(0.71)

// drums · cowbell
const cowbell = s("cb").struct("<~@80 [x ~ x!5 ~ x ~ x!5 ~]!16 ~@34>").gain(0.57)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@72 x ~@57>").gain(8.39)

stack(
  pad_warm, orchestral_harp, orchestral_harp_soft, synth_bass_1, oboe, bass, bass_2, ocarina, ocarina_2,
  lead_3_calliope, lead_1_square, electric_guitar_muted, marimba, rim, kick, clap, high_tom, splash, cowbell, vibraslap
)

More by Erasure