Strudelify

So the Story Goes

Erasure

KeyA minorTempo105 bpm
0:00/0:00
// So the Story Goes — Erasure
// 105 bpm, 12/8, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 69 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/6)

// 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 · synth strings 1 · "SynthStrings 1"
const synth_strings_1 = note("<A@3 B C D E F G D E H I J K L M N O P Q R S ~@46>".pickRestart({
  A: "[~@10 a2@14 f2@9 [g2,g3,b3,d4]@3, ~@10 [c4,e4,a4]@23 ~@3]/3", // G Am
  B: "e4@2 e4@2 e4@2 e4@4 e4!2 e4@2 e4@2 e4@2 e4@4 d4 c4, [a2,a3,c4]", C: "g4@3 e4@6 e4 d4 c4, [f2,a3], c4@11 ~",
  D: "a3@8 c4 a3@2 g3, [d2,f3]", E: "[c3,f3,g3]@2 [a3,c4,f4] [g2,b3,d4,g4], f2@3 ~",
  F: "e4@2 e4@2 e4@2 e4@4 d4 ~ e4@2 e4@2 e4@2 e4@4 d4 c4, [a2,a3], c4@11 c4@12 ~", // A
  G: "g4@3 e4@5 ~ e4 d4 c4, f2, c4@11 ~, a3@2 a3", H: "~ f4!3 e4 d4 ~ f4!3 e4 d4, d2, [f3,a3]!2",
  I: "~ f4!3 e4 d4 ~ f4!3 e4 d4, f2, [a3,c4]!2", J: "~ e4!3 d4 c4 ~ e4!3 d4 c4, c3, [e3,g3]!2",
  K: "~ e4!3 d4 c4 ~ e4!3 f4 g4, [a2,e3,a3] [a2,f3,a3]", // A5 Dm
  L: "f2 ~ c3 ~ a4@4 b4@2 c5@2 [g4,b4]@4 d4@2 [g4,b4] d4 [a4,c5]@2 [b4,d5]@2, f5 ~, c5@5 ~ d5@3 ~@3, a5 f3@2 g2@3", // G Am Bm
  M: "c3 g2 g4@2 a4 b4 c5@3 c5 b4 a4, [c5,e5]@6 a4@5 ~, g5 c3@2 [f2,f4]@3", // C F
  N: "d2@2 a2@2 f4@4 g4@2 a4@2 [d4,g4,b4]@4 d4@2 [g4,b4] d4 [a4,c5]@2 [b4,d5]@2, d5 ~, a4@5 ~@7, f5 d3@2 g2@3", // G Am Bm
  O: "[g#4,b4,e5]@3 [g#4,b4] e4!2 [e4,g#4,c5]@3 [e4,g#4,b4]@3, e2", // E G#m Eaug E
  P: "a5@4 a4@4 b4@2 c5@2 [g4,b4]@4 d4@2 [g4,b4] d4 [a4,c5]@2 [b4,d5]@2, f2, f5@2 d5 ~, c5@5 ~ g2@6", // G Am Bm
  Q: "g5@2 g4@2 a4 b4 c5@3 c5 b4 a4, [c3,c5,e5] [f2,f4], ~@6 a4@5 ~", // C F
  R: "f5@2 f4@2 g4 a4 [d4,g4,b4]@2 d4 [g4,b4] [a4,c5] [g4,b4], [d2,d5] g2, a4@5 ~@7", // G Am G D
  S: "[e4,g#4,b4]@3 [g#4,b4] e4!2 [e4,g#4,c5]@3 [e4,g#4,b4]@3, e2", // E G#m Eaug E
})).s("gm_synth_strings_1").gain(0.28)

// chords · synth brass 2 · "SynthStrings 1" · Am A Asus2 F5 F Fdim C5 A …
const synth_brass_2 = note(`<
  ~@23
  [a2 a3@2 a2 a3@2 ~@2 a2@2 [a2,c5]@2 a2 a3@2 a2 [a3,a4]@2 ~@2 a2@2 [a2,b4]@2, b4@3 a4@2 ~ b4@2 ~ c5@2 ~]
  [f2 f3@2 f2 [f3,c5]@2 ~@2 f2@2 [f2,a4]@2 f2 f3@2 f2 [f3,b4]@2 ~@2 g2@2 [g2,c5]@2, a4@2 ~ b4@2 ~ c5@2 ~ a4@2 ~]
  [a2 a3@2 a2 [a3,a4]@2 ~@2 a2@2 [a2,b4]@2 a2 a3@2 a2 [a3,c5]@2 ~@2 a2@2 [a2,a4]@2, b4@2 ~ c5@2 ~ a4@2 ~ b4@2 ~]
  [f2 f3@2 f2 [f3,b4]@2 ~@2 f2@2 [f2,c5]@2 f2 f3@2 f2 [f3,a4]@2 ~@2 g2@2 [g2,f4]@2, c5@2 ~ a4@2 ~ b4@2 ~ g4@2 ~]
  ~@42
>`).s("gm_synth_brass_2").gain(0.36)

// other · string ensemble 1 · "SynthStrings 1"
const string_ensemble_1 = note("<~@60 A@8 ~>".pickRestart({
  A: "[~@7 a6@2 ~@2 a6@4 ~@4 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@4 ~@4 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@4 ~@4 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@4 ~@4 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@2 ~@2 a6@3 ~@5 a6@3 ~ a6]/8",
})).s("gm_string_ensemble_1").gain(0.36)

// other · string ensemble 1 · "SynthStrings 1" · soft notes
const string_ensemble_1_soft = note("<~@23 a6 [f6@3 g6] a6 [f6@17 ~ g6@6] ~@42>").s("gm_string_ensemble_1").gain(0.24)

// bass · synth bass 1
const bass = note("<~@23 A B A B A C D B A C D B D C E F G@8 H@8 I@8 J@6>".pickRestart({
  A: "a1 a2@2 a1 a2@2 ~@2 a1@2 a1@2 a1 a2@2 a1 a2@2 ~@2 a1@2 a1@2",
  B: "f1 f2@2 f1 f2@2 ~@2 f1@2 f1@2 f1 f2@2 f1 f2@2 ~@2 g1@2 g1@2",
  C: "f1 f2@2 f1 f2@2 ~@2 f1@2 f1@2 f1 f2@2 f1 f2@2 ~@2 f1@2 f1@2",
  D: "d2 d3@2 d2 d3@2 ~@2 d2@2 d2@2 d2 d3@2 d2 d3@2 ~@2 d2@2 d2@2",
  E: "c2 c3@2 c2 c3@2 ~@2 c2@2 c2@2 c2 c3@2 c2 c3@2 ~@2 c2@2 c2@2", F: "a1 a2@2 a1 a2@2 ~@2 a1@2 a1@2 ~@12",
  G: "[~@3 f1@2 ~@2 c2@2 ~@2 f2@16 g1@24 c2@4 g1@4 c2@16 f1@24 d1@4 a1@4 d2@16 g1@24 e1@48 f1@2 ~@2 c2@2 ~@2 f2@16 g1@24 c2@4 g1@4 c2@16 f1@24 d1@4 a1@4 d2@16 g1@24 e1@45]/8",
  H: "[~@3 a2@96 f2@48 a2@96 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2]/8",
  I: "[~@3 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2]/8",
  J: "[~@3 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 ~@45]/6",
})).s("gm_synth_bass_1").gain(0.6)

// bass · fretless bass
const bass_2 = note(`<
  A@2 B C D E B C D E B E D F C G H I J K L M J N O N O P Q R S P Q R S R Q T U V@7 W@8 X@8 Y@7
>`.pickRestart({
  A: "[~@5 a1@7]/2", B: "f1@3 g1", C: "a1", D: "f1", E: "d2", F: "c2", G: "f2 ~ c3 ~ f3@8 [g1,g2]@12, f1 ~",
  H: "c3 g2 c3@4 [f1,f2]@6, c2 ~", I: "~ a2 d3@4 [g1,g2]@6, d2 ~", J: "e2!2", K: "[f1,f2] [g1,g2]",
  L: "[c2,c3] [f1,f2]", M: "d2 [g1,g2]",
  N: "a2 [a2,a3]@2 [a1,a2] [a2,a3]@2 ~@2 [a1,a2]@2 [a1,a2]@2 [a1,a2] [a2,a3]@2 [a1,a2] [a2,a3]@2 ~@2 [a1,a2]@2 [a1,a2]@2, a1 ~@7", // A
  O: "f2 [f2,f3]@2 [f1,f2] [f2,f3]@2 ~@2 [f1,f2]@2 [f1,f2]@2 [f1,f2] [f2,f3]@2 [f1,f2] [f2,f3]@2 g1@2 [g1,g2]@2 [g1,g2]@2, f1 ~@7", // F G
  P: "~ a2@2 a1 a2@2 ~@2 a1@2 a1@2 a1 a2@2 a1 a2@2 ~@2 a1@2 a1@2, a1 ~@7",
  Q: "~ f2@2 f1 f2@2 ~@2 f1@2 f1@2 f1 f2@2 f1 f2@2 ~@2 f1@2 f1@2, f1 ~@7",
  R: "~ d3@2 d2 d3@2 ~@2 d2@2 d2@2 d2 d3@2 d2 d3@2 ~@2 d2@2 d2@2, d2 ~@7",
  S: "~ f2@2 f1 f2@2 ~@2 f1@2 f1@2 f1 f2@2 f1 f2@2 g1@2 g1@2 g1@2, f1 ~@7",
  T: "~ c3@2 c2 c3@2 ~@2 c2@2 c2@2 c2 c3@2 c2 c3@2 ~@2 c2@2 c2@2, c2 ~@7",
  U: "~ a2@2 a1 a2@2 ~@2 a1@2 a1@2 ~@12, a1 ~@7",
  V: "[~@7 c2@2 ~@2 f2@16 g1@24 ~@4 g1@4 c2@16 f1@24 d1@4 a1@4 d2@16 g1@24 e2@24 e2@24 ~@4 c2@2 ~@2 f2@16 g1@24 ~@4 g1@4 c2@16 f1@24 d1@4 a1@4 d2@16 g1@21, ~@3 f1@24 ~@24 c2@8 ~@40 d2@8 ~@40 e1@48 f1@24 ~@24 c2@8 ~@40 d2@8 ~@37]/7",
  W: "[~@3 e2@24 e2@24 a2@96 f2@48 a2@96 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2, ~ e1@16 ~@111]/8",
  X: "[~@3 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2]/8",
  Y: "[~@3 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 a2@4 a2@4 a2@4 a2@4 f2@4 f2@2 f2@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@2 f2@2 f2@4 g2@4 g2@4 g2@4 ~@45]/7",
})).s("gm_fretless_bass").gain(0.4)

// chords · synth strings 1 · "SynthStrings 1"
const synth_strings_1_2 = note(`<
  ~@11 A@2 B@2 C D E F G D E H ~@4 I@2 J@2 K L M N O@2 P@2 Q R S T U V W X@2 ~@4 Y@2 Z@12 AA@3
>`.pickRestart({
  A: "[d5@23 ~ c5@23 ~, [a4,f5]@47 ~]/2", B: "[g4@23 ~ a4@22 ~@2, [c5,e5]@47 ~]/2",
  C: "[f4,a4,c5,f5]@11 ~ [g4,b4,d5]@11 ~", D: "[g4,c5,e5]@11 ~ [f4,a4,c5]@11 ~", E: "[f4,a4,d5]@11 ~ [g4,b4,d5]@11 ~",
  F: "b4@11 ~ c5@6 b4@5 ~, [e4,g#4]@23 ~", G: "[f4,a4,c5]@11 ~ [g4,b4,d5]@11 ~", H: "b4@12 c5@6 b4@5 ~, [e4,g#4]@23 ~",
  I: "[e4@23 ~ f4@23 ~, [a4,c5]@47 ~]/2", J: "[d5@24 c5@17 ~ [g4,b4,d5]@5 ~, [f4,a4]@41 ~@7]/2", K: "[e4,a4,c5]@23 ~",
  L: "[f4,a4,c5]@23 ~", M: "[f4,a4,d5]@23 ~", N: "[f4,a4,c5]@17 ~ [g4,b4,d5]@5 ~",
  O: "[d5@23 ~ c5@23 ~, [f4,a4]@47 ~]/2", P: "[g4@23 ~ a4@22 ~@2, [e4,c5]@23 ~, a4 ~@47]/2",
  Q: "~@3 [f4,a4,c5]@22 ~@2 [g4,b4,d5]@21", R: "~@3 [e4,g4,c5]@22 ~@2 [f4,a4,c5]@21, ~@27 e4@2 ~@19",
  S: "~@3 [f4,a4,d5]@22 ~@2 [g4,b4,d5]@21", T: "~@3 b4@22 ~@2 c5@12 b4@9, ~ [e4,g#4]@15",
  U: "~@3 [f4,a4,c5]@22 ~@2 [g4,b4,d5]@20 ~", V: "~@3 [g4,c5,e5]@22 ~@2 [f4,a4,c5]@21",
  W: "~@3 [f4,a4,d5]@22 ~@2 [g4,b4,d5]@20 ~", X: "[~@3 [e4,g#4,b4]@22 ~@2 [e4,g#4,c5]@10 ~@2 [e4,g#4,b4]@12 ~@45]/2",
  Y: "[~@3 e5@46 ~@2 f5@34 ~@2 [d5,g5,b5]@9, ~@3 [a5,c6]@82 ~@11]/2", // G Am
  Z: "[~@3 e5@46 ~@2 f5@34 ~@2 [d5,g5,b5]@12 e5@46 ~@2 f5@34 ~@2 [d5,g5,b5]@9, ~@3 [a5,c6]@82 ~@14 [a5,c6]@82 ~@11]/4", // G Am
  AA: "[~@3 e5@46 ~@2 f5@34 ~@2 [d5,g5,b5]@12 ~@45, ~@3 [a5,c6]@82 ~@59]/3", // G Am
})).s("gm_synth_strings_1").gain(0.42).pan(0.8)

// chords · synth brass 1
const synth_brass_1 = note("<~@35 A B C D E@7 F@4 G@8 H@8 I@3>".pickRestart({
  A: "~ f4!3 e4 d4 ~ f4!3 e4 d4, d2, [f3,a3]!2", B: "~ f4!3 e4 d4 ~ f4!3 e4 d4, f2, [a3,c4]!2",
  C: "~ e4!3 d4 c4 ~ e4!3 d4 c4, c3, [e3,g3]!2", D: "~ e4!3 d4 c4 ~ e4!3 f4 g4, [a2,e3,a3] ~",
  E: "[~@3 f2@2 ~@2 c3@2 ~@2 a4@8 b4@4 c5@4 [g4,b4]@8 d4@4 [g4,b4]@2 d4@2 [a4,c5]@4 [b4,d5]@4 c3@4 g2@4 g4@8 a4@4 b4@4 c5@12 c5@4 b4@4 a4@4 d2@4 a2@4 f4@8 g4@4 a4@4 [d4,g4,b4]@8 d4@4 [g4,b4]@2 d4@2 [a4,c5]@4 [b4,d5]@4 [g#4,b4,e5]@12 [g#4,b4]@4 e4@4 e4@4 [e4,g#4,c5]@12 [e4,g#4,b4]@12 f2@2 ~@2 c3@2 ~@2 a4@8 b4@4 c5@4 [g4,b4]@8 d4@4 [g4,b4]@2 d4@2 [a4,c5]@4 [b4,d5]@4 c3@4 g2@4 g4@8 a4@4 b4@4 c5@12 c5@4 b4@4 a4@4 d2@4 a2@4 f4@8 g4@4 a4@4 [d4,g4,b4]@8 d4@4 [g4,b4]@2 d4@2 [a4,c5]@4 [b4,d5], ~@3 f5@24 ~@24 g5@8 ~@40 d5@24 ~@72 f5@24 ~@24 g5@8 ~@40 d5@24 ~@21, ~@3 c5@20 ~@4 d5@12 ~@12 [c5,e5]@24 a4@20 ~@4 a4@20 ~@76 c5@20 ~@4 d5@12 ~@12 [c5,e5]@24 a4@20 ~@4 a4@20 ~@25, ~@3 a5@8 f3@16 g2@24 ~@8 c3@16 [f2,f4]@24 f5@8 d3@16 g2@24 e2@48 a5@8 f3@16 g2@24 ~@8 c3@16 [f2,f4]@24 f5@8 d3@16 g2@21]/7", // G Am Bm G Am Bm E G#m …
  F: "[~@3 [g#4,b4,e5]@12 [g#4,b4]@4 e4@4 e4@4 [e4,g#4,c5]@12 [e4,g#4,b4]@12 [a3,c4]@12 ~@8 a4@4 [a3,c4,d#4]@12 ~@8 b4@4 [a3,c4]@12 [a3,c4]@12 [a3,c4]@12 e4@8 e4@4 f4@16 f4@4 f4@4 f4@4 c4@4 c4@12 g3, ~ e2@16 a1@16 ~@31, ~@51 e4@20 ~@4 g#4@20 ~@4 e4@24 ~@24 c4@28 ~@17, ~@21 [a3,c4]@4 ~@4 [a3,c4]@4 ~@12 [a3,c4]@4 g#3@15]/4", // E G#m Eaug E Am Adim Am
  G: "[~@3 [a3,c4,e4,a4]@96 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3, ~@33 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@3]/8", // Am G Am G Am G
  H: "[~@3 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3, ~ [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@3]/8", // Am G Am G Am G Am G
  I: "[~@3 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 a3@4 a3@2 a3@2 a3@4 a3@4 a3@4 a3@4 f3@4 f3@2 f3@2 f3@4 f3@4 f3@4 f3@4 f3@4 f3@2 f3@2 f3@4 g3@4 g3@4 g3@4 ~@45, ~ [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [a4,c5,e5]@4 [g4,b4,d5]@4 ~@15]/3", // Am G
})).s("gm_synth_brass_1").gain(0.33)

// other · pad choir · "Pad 4 (choir)"
const pad_choir = note("<~@56 A@8 B@5>".pickRestart({
  A: "[~@3 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 g5@4 b5@4 a5@4 g5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 g5@4 b5@4 a5@4 g5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 g5@4 b5@4 a5@4 g5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 g5@4 b5@4 a5@4 g5]/8",
  B: "[~@3 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 g5@4 b5@4 a5@4 g5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 b5@4 a5@4 c6@4 g5@4 b5@4 a5@4 g5@4 ~@45]/5",
})).s("gm_pad_choir").gain(0.4).pan(0.8)

// other · pad halo · "Pad 7 (halo)"
const pad_halo = note(`<
  ~@51
  [~@3 a2!2 c3!2 d3!2 e3!2 g3!2 a3!4 c4!2 d4!2 e4!2 g4!2 a4!4 c5!2 d5!2 e5!2 g5!2 a5!4 c6!2 d6!2 e6!2 g6]
  [g6 a6!2 ~@45]
  ~@16
>`).s("gm_pad_halo").gain(0.4).pan(0)

// other · pad halo · "Pad 7 (halo)"
const pad_halo_2 = note(`<
  ~@51
  [~@4 a2!2 c3!2 d3!2 e3!2 g3!2 a3!4 c4!2 d4!2 e4!2 g4!2 a4!4 c5!2 d5!2 e5!2 g5!2 a5!4 c6!2 d6!2 e6!2]
  [g6!2 a6!2 ~@44]
  ~@16
>`).s("gm_pad_halo").gain(0.4).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~@23
  [x ~@2 x ~@4 x ~ x ~ x ~@2 x ~@4 x ~ x ~]!15
  [x ~@2 x ~@4 x ~ x ~@13]
  [~@3 x ~@5 x ~@9 x ~@3 x ~@3 x ~@5 x ~@9 x ~@3 x]!8
  ~@5
  [~@3 x ~@5 x ~@9 x ~@3 x ~@3 x ~@5 x ~@9 x ~@3 x]!16
  ~
>`).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@23 A@3 B A@12 C@8 ~@4 D E C@15 ~>".pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@11 x ~ x!3 ~", C: "~@5 x ~@7 x ~@2", D: "~@3 x!45", E: "x!3 ~@12 x ~@23 x ~@8",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@23 [~@5 x ~@5 x]!15 [~@5 x ~@6] [~@23 x ~@23 x]!8 ~@5 [~@23 x ~@23 x]!16 ~>")
  .gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@27 x ~@41>").gain(0.4)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@27 x ~@41>").gain(4.72)

// drums · bongos
const bongos = s("bongo:18").struct(`<
  ~@23
  [~@3 x!2 ~@4 x!2 ~]!15
  [~@3 x!2 ~@7]
  [~@15 x ~@3 x ~@19 x ~@3 x ~@4]!8
  ~@5
  [~@15 x ~@3 x ~@19 x ~@3 x ~@4]!16
  ~
>`).gain(1.06)

// drums · congas
const congas = s("conga:33").struct(`<
  ~@23
  [~ x ~@2 x ~@8 x ~@2 x ~@7]!15
  [~ x ~@2 x ~@19]
  [~@5 x ~@5 x ~@17 x ~@5 x ~@12]!8
  ~@5
  [~@5 x ~@5 x ~@17 x ~@5 x ~@12]!16
  ~
>`).gain(1.29)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@23 A@15 B C D@7 E ~@4 C D@15 E>".pickRestart({
  A: "x!24", B: "x!21 ~@3",
  C: "~@3 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", E: "~ x ~@46",
})).gain(2.04)

stack(
  synth_strings_1, synth_brass_2, string_ensemble_1, string_ensemble_1_soft, bass, bass_2, synth_strings_1_2,
  synth_brass_1, pad_choir, pad_halo, pad_halo_2, kick, snare, tambourine, crash, vibraslap, bongos, congas, cabasa
)

More by Erasure