Strudelify
One More Night cover art

1985 · No Jacket Required

One More Night

Phil Collins

KeyB♭ majorTempo65 bpm
0:00/0:00
// One More Night — Collins Phil
// 65 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  A B A B ~@7 C A B A D A B A D E F E ~ E G E C A B A D A B A D A B A H I J K L@6 M N O@2 P Q R@8 S@8 T@3
>`.pickRestart({
  A: "bb1@7 eb2@9", B: "bb1@4 d2@3 eb2@9", C: "f2", D: "f2@7 bb1@9", E: "~ bb2", F: "~@8 eb2@6 f2 g2",
  G: "~@6 bb1 c2 eb2@6 f2 g2", H: "f2@5 ab2 c3 bb2@9", I: "c2@7 c2 db2@5 ab2@2 db2",
  J: "c2@5 c2 db2 f2 eb2@5 bb2 eb3 eb2", K: "c2@6 c2!2 db2@7 bb1",
  L: "[c2@5 c2 db2 eb2@4 bb2@4 eb3@9 bb1@7 eb2@9 bb1@4 d2@3 eb2@9 bb1@7 eb2@9 f2@7 bb1@9 ab2@8]/6",
  M: "bb2@7 eb2 f2@7 f2", N: "eb2@6 g2 eb2 ab2@7 ab2", O: "[bb2@8 f2@14 g2 eb2 ab2@8]/2", P: "bb2@8 f2@7 c2",
  Q: "eb2@7 g2 ab2@8",
  R: "[bb2@8 f2@16 bb1@7 eb2@9 bb1@4 d2@3 eb2@9 bb1@7 eb2@9 f2@7 bb1@9 bb1@7 eb2@9 bb1@4 d2@3 eb2@9 bb1@7 eb2]/8",
  S: "[~@8 f2@7 bb1@9 bb1@7 eb2@9 bb1@4 d2@3 eb2@9 bb1@7 eb2@9 f2@7 bb1@9 bb1@7 eb2@9 bb1@4 d2@3 eb2@9 bb1@7 eb2]/8",
  T: "[~@8 f2@7 bb1@9 eb2@16 ~@8]/3",
})).s("gm_synth_bass_2").gain(0.58)

// bass · synth bass 2 · "SYN BASS 2" · soft notes
const bass_soft = note("<~@4 A B A C A D A ~@9 E F E C E G E ~@47>".pickRestart({
  A: "ab2 bb2", B: "f2 eb2", C: "f2", D: "f2@7 bb1 eb2@8", E: "ab2 ~", F: "f2 ~", G: "f2@3 ~@5",
})).s("gm_synth_bass_2").gain(0.29)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D E F G H E I J H C K C L A B C L M N O P M Q J R C K C L S B C T U V U W X Y X Z@6 AA AB AC@2 AD AE AF@5 AG@4
  AH@8 AI@2
>`.pickRestart({
  A: "[bb2,f3,bb3,d4,f4]@7 [eb3,bb3,eb4,g4]@9", B: "[d4,f4]@4 bb4@2 d4 [eb3,bb3,eb4,g4]@8 eb3, [bb2,bb3]@7 ~@9",
  C: "[f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 [eb3,bb3,eb4,g4]@9, bb2@7 ~@9", // Bb Eb
  D: "[d4,f4]@4 bb4@2 d4 [eb3,bb3,eb4,g4]@9, [bb2,bb3]@7 ~@9", // Dm Eb Bb
  E: "[ab3,ab4,c5,eb5]@7 ~ [bb4,eb5]@2 ~ [bb4,d5]@2 [bb4,eb5]@2 ~, ~@8 [bb3,g4]@7 ~", // Ab Eb5 Bb Eb5 Eb
  F: "[f3,eb4,f4,ab4,c5] [eb3,eb4,g4,bb4]", G: "[ab3,ab4,c5,eb5]@7 ~ eb5@4 d5@4, ~@8 [bb3,g4,bb4]@7 ~",
  H: "[f3,eb4,f4,ab4,c5]@15 ~", I: "[f3,eb4,f4,ab4,c5]@8 [eb4,g4]@5 g4 f4@2, ~ [eb3,bb4]",
  J: "c5@2 c5 eb5 eb5@2 d5@2, [ab3,eb4,ab4,eb5]@7 ~ [bb3,eb4,g4,bb4]@7 ~", // Ab5 Eb
  K: "[d4,f4]@4 [f4,bb4]@2 d4 [eb3,bb3,eb4,g4]@8 eb3, [bb2,bb3]@7 ~@9", // Dm Bb5 Eb Bb
  L: "[eb4,ab4]@4 [eb4,g4]@2 ~@3 bb4@7, [f2,ab3,c4]@7 [bb2,bb3,d4,f4]@9", // Ab5 Eb Fm Bb
  M: "[ab3,eb4,ab4,c5,eb5]@7 ~ [bb4,eb5]@2 ~ [bb4,d5]@2 [bb4,eb5]@2 ~, ~@8 [bb3,eb4,g4]@7 ~", // Ab Eb5 Bb Eb5 Eb
  N: "[f3,eb4,f4,ab4,c5]@4 g4@2 g4 eb4, ~ [eb3,bb4], ~@4 eb4@3 ~", // Fm7 Eb5
  O: "[ab3,eb4,ab4,c5,eb5]@7 ~ eb5@4 d5@4, ~@8 [bb3,eb4,g4,bb4]@7 ~", // Ab Eb
  P: "eb4@9 ~@2 c5@5, [f3,f4]@15 ~, [ab4,c5]@5 ab4@3, ~@9 eb4@7", // F Ab
  Q: "[f3,eb4,f4,ab4,c5]@8 [eb4,g4]@3 [d4,f4] ~ [bb3,eb4]@3, ~ [eb3,bb4]", // Fm7 Eb Dm Eb5
  R: "ab4@5 g4 ~ eb5@9, [f3,eb4,f4,c5]@15 ~, ~@3 ab4@5", S: "[bb2,bb3,d4,f4]@7 [eb3,bb3,eb4,g4]@9",
  T: "[eb4,ab4]@4 [eb4,g4]@2 ~ f4@2 bb4@2 ~ bb4@4, [f2,ab3,c4]@7 [bb2,bb3,d4]@9, ~@11 f4@5", // Ab5 Eb Fm Bb
  U: "[bb3,d4,f4,d5]@4 [bb3,d4,f4,d5]@3 eb5@2 eb5!5 eb5@2, bb2@7 [eb3,bb3,eb4,g4]@9", // Bb Eb
  V: "[d4,f4,d5]@4 [bb4,f5]@2 d4 eb5@2 eb5!5 ~ eb3, [bb2,bb3]@7 [eb3,bb3,eb4,g4]@9, ~@4 f4 ~@9 eb5@2", // Dm Bb5 Bb Eb
  W: "[eb4,ab4,ab5]@4 [eb4,g4,g5]@2 ~@3 bb4@7, [f2,c4]@7 [bb2,bb3,d4,f5]@9, ~@7 f4@4 ~@5", // Ab5 Eb F5 Bb
  X: "[c3,bb3,c4,eb4,g4]@5 [eb4,g4] ~ [db3,eb4,g4,bb4]@8 ~", Y: "[c3,bb3,c4,eb4,g4]@5 [eb4,g4] ~ [eb3,db4,f4,ab4]@8 ~",
  Z: "[[c3,bb3,c4,eb4,g4]@5 [eb4,g4] ~@9 eb5@8 ~ [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 g4@5 g4@4 [d4,f4]@4 bb4@2 d4 g4@5 g4@3 eb3 [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 [eb4,g4]@5 [eb4,g4]@4 [eb4,ab4]@4 [eb4,g4]@2 ~ f4@2 bb4@2 ~ bb4@4 [ab3,eb4,ab4,c5]@7 ~, ~@7 [eb3,db4,f4,ab4]@16 ~ bb2@7 [eb3,bb3,eb4]@9 [bb2,bb3]@7 [eb3,bb3,eb4]@9 bb2@7 [eb3,bb3]@9 [f2,ab3,c4]@7 [bb2,bb3,d4]@9 ~@8, ~@83 f4@5 ~@8]/6", // Cm7 Eb Bb Dm Bb Eb Ab5 Eb …
  AA: "bb4@2 ~ [bb4,d5]@2 [bb4,eb5]@2 eb4 [f3,eb4,f4,ab4,c5]@8, [bb3,eb4,g4]@7 ~@9", // Bb Eb5 Fm7 Eb
  AB: "g4@4 g4@2 eb4@2 [ab3,eb4,ab4,c5]@7 ~, [eb3,bb4] ~, eb4@3 ~@5", // Ab Eb5
  AC: "[eb5@4 d5@4 [f4,ab4]@6 ~ [f4,ab4]@8 ~ [ab3,eb4,ab4,c5]@7 ~, [bb3,eb4,g4,bb4]@7 ~ [f3,eb4,c5]@16 ~@8]/2", // Fm Ab Eb F7
  AD: "bb4@2 ~ [bb4,d5]@2 [bb4,eb5]@2 ~ [f3,eb4,f4,ab4,c5]@8, [bb3,eb4,g4]@7 ~@9", // Bb Eb5 Fm7 Eb
  AE: "[eb4,g4]@3 [d4,f4] ~ [bb3,eb4]@3 c5@4 c5@2 eb5@2, [eb3,bb4]@8 [ab3,eb4,ab4]@7 ~", // Eb Dm Eb5 Ab5
  AF: "[eb5@4 d5@4 ab4@5 g4 ~ eb5@9 [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 [eb3,bb3,eb4,g4]@9 [d4,f4]@4 [f4,bb4]@2 d4 [eb3,bb3,eb4,g4]@8 eb3 [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 [eb3,bb3,eb4,g4]@9 [eb4,ab4]@4 [eb4,g4]@2 ~ [bb2,bb3,d4,f4], [bb3,eb4,g4,bb4]@7 ~ [f3,eb4,f4,c5]@15 ~ bb2@7 ~@9 [bb2,bb3]@7 ~@9 bb2@7 ~@9 [f2,ab3,c4]@7 ~, ~@7 ab4@5 ~@28]/5", // Bb Eb Dm Bb5 Eb Bb Eb Ab5 …
  AG: "[~@2 bb4 f4 bb4@3 ~ [bb2,bb3,d4,f4]@7 ~@2 eb5 bb4!2 eb5!2 bb4!2 [d4,f4]@4 bb4@2 d4 ~@2 eb5 bb4!2 eb5!2 bb4 [eb3,bb4] [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 ~@2 eb5 bb4!2 eb5!2 bb4!2 [eb4,ab4]@4 [eb4,g4]@2 ~ [bb2,bb3,d4,f4], ~ f5@2 ~@12 [eb3,bb3,eb4,g4]@9 [bb2,bb3]@7 [eb3,bb3,eb4,g4]@9 bb2@7 [eb3,bb3,eb4,g4]@9 [f2,ab3,c4]@7 ~]/4", // Bb Dm Eb5 Bb Ab5 Eb Bb Eb …
  AH: "[~ f5 bb4!2 bb5!4 [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 ~@2 eb5 bb4!2 eb5!2 bb4!2 [d4,f4]@4 [f4,bb4]@2 d4 ~@2 eb5 bb4!2 eb5!2 bb4 [eb3,bb4] [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 ~@2 eb5 bb4!2 eb5!2 bb4!2 [eb4,ab4]@4 [eb4,g4]@2 ~@3 f5 bb4 [f4,bb4] bb5!4 [bb2,bb3,d4,f4]@7 ~@2 eb5 bb4!2 eb5!2 bb4!2 [d4,f4]@4 bb4@2 d4 ~@2 eb5 bb4!2 eb5!2 bb4 [eb3,bb4] [f3,bb3,d4,f4]@4 [f3,bb3,d4,f4]@3 ~@2 eb5 bb4!2 eb5!2 bb4!2 [eb4,ab4]@4 [eb4,g4]@2 ~ [bb2,bb3,d4,f4], ~@8 bb2@7 [eb3,bb3,eb4,g4]@9 [bb2,bb3]@7 [eb3,bb3,eb4,g4]@9 bb2@7 [eb3,bb3,eb4,g4]@9 [f2,ab3,c4]@7 [bb2,bb3,d4]@9 ~@7 [eb3,bb3,eb4,g4]@9 [bb2,bb3]@7 [eb3,bb3,eb4,g4]@9 bb2@7 [eb3,bb3,eb4,g4]@9 [f2,ab3,c4]@7 ~, ~@63 f4@4 ~ bb4@3 ~@57]/8", // Bb Dm Bb5 Eb5 Bb Ab5 Eb Bb5 …
  AI: "[~ f5 bb4!2 bb5!4 [eb2,eb3,g3,bb3,eb4]@16 ~@8]/2", // Eb
})).s("gm_epiano2").gain(0.34).pan(0.4)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  A@4 ~@8 A@3 B A@3 B C D C E C D C E A@3 B A@3 B A@3 B F G F H@6 I J K@2 I J I L@16 M@2
>`.pickRestart({
  A: "[bb3,d4,f4]@7 [bb3,eb4,g4]@9", B: "ab4@4 g4 ~@2 [bb3,d4,f4]@9, [f3,eb4]@7 ~@9", C: "[ab4,c5] [g4,bb4]",
  D: "[f4,ab4] [eb4,g4]", E: "[f4,ab4]", F: "[c3,c4,eb4,g4]@7 [db3,eb4,g4,bb4]@9",
  G: "[c3,c4,eb4,g4]@7 [eb3,db4,f4,ab4]@9", // Cm Db
  H: "[[c3,c4,eb4,g4]@7 [eb3,db4,f4,ab4]@17 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 ab4@4 g4 ~@2 [bb3,d4,f4]@9 [ab4,c5]@8, ~@72 [f3,eb4]@7 ~@17]/6", // Cm Db Bb Eb Bb Eb Bb Eb …
  I: "[g4,bb4] [f4,ab4]", J: "[eb4,g4] [ab4,c5]", K: "[[g4,bb4] [eb4,ab4]@2 [ab4,c5]]/2",
  L: "[~@8 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 ab4@4 g4 ~@2 [bb3,d4,f4]@9 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 [bb3,d4,f4]@7 [bb3,eb4,g4]@9 ab4@4 g4 ~@2 [bb3,d4,f4], ~@56 [f3,eb4]@7 ~@57 [f3,eb4]@7 ~]/8", // Bb Eb Bb Eb Bb Eb Bb Eb …
  M: "[~ [eb3,g3,eb4]@2 ~]/2", // Eb
})).s("gm_pad_warm").gain(0.2).pan(0.6)

// chords · pad warm · "WARM PAD" · soft notes
const pad_warm_soft = note("<~@4 A B A C A B A C ~@62>".pickRestart({
  A: "[ab4,c5] [g4,bb4]", B: "[f4,ab4] [eb4,g4]", C: "[f4,ab4]",
})).s("gm_pad_warm").gain(0.13).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B A B ~@8 C D E F E B G F H I H J H K H L C D E F E M N F C D E O P Q P R@6 S T U@2 S T V@8 W@8 X@3
>`.pickRestart({
  A: "[bb3,d4,f4]@7 [bb3,eb4,g4]@8 ~", B: "~@4 bb4@2 d4 [bb3,eb4,g4]@9, [bb3,d4,f4]@3 ~@5",
  C: "~@4 c5@2 d4 [bb3,eb4,g4]@9, [bb3,d4,f4]@3 ~@5", D: "~@4 bb4@3 [bb3,eb4,g4]@9, [bb3,d4,f4]@3 ~@5",
  E: "f4@4 f4@3 [bb3,eb4,g4]@8 ~, [bb3,d4]@7 ~@9", F: "~@4 g4@3 [bb3,d4,f4]@9, [c4,eb4,ab4]@3 ~@5",
  G: "f4@4 f4@2 d4 [bb3,eb4,g4]@8 ~, [bb3,d4]@7 ~@9", H: "c5 bb4", I: "~@6 c4 ~ g4@5 ~ f4@2, ab4@7 bb3@4 ~@5", J: "ab4",
  K: "ab4@8 g4@5 ~ f4@2", L: "ab4@5 g4 ab4 eb5@8 ~",
  M: "~@4 bb4@2 d4 [eb4,g4]@2 eb4@2 bb3 [eb4,g4]@4, [bb3,d4,f4]@6 ~ bb3@4 ~@5, ~@9 g4 ~@6", // Eb Bb
  N: "f4@4 f4@2 d4 [eb4,g4]@2 eb4@2 bb3 [eb4,g4]@4, [bb3,d4]@7 bb3@4 ~@5, ~@9 g4 ~@6", // Eb Bb
  O: "~@4 g4@3 f4@2 bb4@2 bb4 d5@2 bb4@2, [c4,eb4,ab4]@6 ~ [bb3,d4]@9", P: "~ eb4 c4 g3 eb4 c4 ~ [bb3,eb4]@9, ~@3 g3@5",
  Q: "~ eb4 c4 g3 eb4 c4 g3 [db4,f4]@9", // Db
  R: "[~ eb4 c4 g3 eb4 c4 g3 [db4,f4,ab4]@16 ~ f4@4 f4@3 [bb3,eb4,g4]@8 ~@5 bb4@2 d4 [eb4,g4]@2 eb4@2 bb3 [eb4,g4]@4 f4@4 f4@2 d4 [eb4,g4]@2 eb4@2 bb3 [eb4,g4]@4 ~@4 g4@3 [bb3,d4,f4]@7 ~@2 c5@8, ~@24 [bb3,d4]@7 ~@9 [bb3,d4,f4]@6 ~ bb3@4 ~@5 [bb3,d4]@7 bb3@4 ~@5 [c4,eb4,ab4]@6 ~@18, ~@49 g4 ~@15 g4 ~@30]/6", // Db Eb Bb Ab
  S: "bb4 ab4", T: "g4@5 ~ f4@2 c5@8", U: "[bb4 ab4@2 c5]/2",
  V: "[bb4@8 ab4@5 g4 ab4 eb5@8 ~@5 c5@2 d4 [bb3,eb4,g4]@9 ~@4 bb4@3 [bb3,eb4,g4]@9 f4@4 f4@3 [bb3,eb4,g4]@8 ~@5 g4@3 [bb3,d4,f4]@9 f4@4 f4@3 [bb3,eb4,g4]@8 ~@5 bb4@2 d4 [eb4,g4]@2 eb4@2 bb3 [eb4,g4]@4 f4@4 f4@2 d4 [bb3,eb4,g4], ~@24 [bb3,d4,f4]@6 ~@10 [bb3,d4,f4]@6 ~@10 [bb3,d4]@7 ~@9 [c4,eb4,ab4]@6 ~@10 [bb3,d4]@7 ~@9 [bb3,d4,f4]@6 ~ bb3@4 ~@5 [bb3,d4]@7 ~, ~@113 g4 ~@14]/8", // Eb Bb Eb Bb Ab Bb
  W: "[~ eb4@2 bb3 [eb4,g4]@4 ~@4 g4@3 [bb3,d4,f4]@9 ~@4 c5@2 d4 [bb3,eb4,g4]@9 ~@4 bb4@3 [bb3,eb4,g4]@9 f4@4 f4@3 [bb3,eb4,g4]@8 ~@5 g4@3 [bb3,d4,f4]@9 f4@4 f4@3 [bb3,eb4,g4]@8 ~@5 bb4@2 d4 [eb4,g4]@2 eb4@2 bb3 [eb4,g4]@4 f4@4 f4@2 d4 [bb3,eb4,g4], ~ g4 ~@6 [c4,eb4,ab4]@6 ~@10 [bb3,d4,f4]@6 ~@10 [bb3,d4,f4]@6 ~@10 [bb3,d4]@7 ~@9 [c4,eb4,ab4]@6 ~@10 [bb3,d4]@7 ~@9 [bb3,d4,f4]@6 ~ bb3@4 ~@5 [bb3,d4]@7 ~, ~@113 g4 ~@14]/8", // Eb Bb Eb Bb Eb Ab Bb Ab …
  X: "[~ eb4@2 bb3 [eb4,g4]@4 ~@4 g4@3 [bb3,d4,f4]@9 [eb3,g3,eb4]@16 ~@8, ~ g4 ~@6 [c4,eb4,ab4]@6 ~@34]/3", // Eb Bb Eb Ab
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.7)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@28 A@2 B C A@2 B C A@2 B C ~@4 D@4 E@6 F@6 G@12 H@2>".pickRestart({
  A: "[bb5,bb6]/2", B: "[bb5,bb6]", C: "[ab5,ab6] [bb5,bb6]", D: "[~ [bb5,bb6]@4 [bb5,bb6]@2 [ab5,ab6]]/4",
  E: "[[bb5,bb6]@4 [ab3,c5]@4 [g3,bb4]@4 ab4 g4 f4 bb4 [eb3,g4]@4 ab4 g4 f4 bb4 [g3,c5]@4 [f3,bb3,eb4,ab4,c5]@8 ab4 g4 f4 c5 bb4@2 d5 eb5 ab4 g4 f4 eb4, ~@4 eb4@8 eb4@8 eb4@8 ~@8 eb4@8 eb4@3 ~, ~@3 f3 ~ ab3 ~@3 ab3 g3 f3]/6", // Bb Ab Gm Eb C5 Fm7
  F: "[g4@2 ab4 bb4 [ab3,c5]@4 [g3,bb4]@4 [f3,ab4,eb5]@8 [bb5,bb6]@16 [bb5,bb6]@8 [ab5,ab6]@4, [eb3,eb4] eb4@2 ~@9]/6", // Ab Gm Fm7 Bb Ab Eb
  G: "[[bb5,bb6] [bb5,bb6]@4 [bb5,bb6]@2 [ab5,ab6]]/4", H: "[[bb5,bb6] [eb5,eb6]@2 ~]/2",
})).s("gm_string_ensemble_2").gain(0.21).pan(0.4)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@40 A B A C@2 ~@29>".pickRestart({
  A: "[eb5,g5]@7 [g5,bb5]@9", B: "[eb5,g5]@7 [f5,ab5]@9", C: "[[eb5,g5]@7 ~@9 c6@8 ~@8, ~@7 [f5,ab5]@17 ~@8]/2",
})).s("gm_rock_organ").gain(0.18).pan(0.3)

// drums · kick
const kick = s("bd").struct("<[x ~@7 x ~@6 x]!4 [x ~@6 x!2 ~@6 x]!68 [x ~@6 x!2 ~@7] ~>").gain(0.57)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!72 [~ x ~@2] ~>").gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  A@11 B A B A B A B A@9 B A B A B A B A@3 B A B A@6 C A@9 C A C A C A C A@3 C A C A C A D ~
>`.pickRestart({
  A: "x!16", B: "x!15 ~", C: "x!7 ~ x!8", D: "x!9 ~@7",
})).gain(0.21)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@11 A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@3 A ~ A ~@6 B ~@9 B ~ B ~ B ~ B ~@3 B ~ B ~ B ~@3
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@8",
})).gain(0.21)

// drums · congas
const congas = s("conga:13").struct("<~@28 A@12 ~@4 B C@3 D ~@7 B C@15 D ~>".pickRestart({
  A: "~@3 x ~@5 x ~@6", B: "~@11 x ~@4", C: "~ x ~@9 x ~@4", D: "~ x ~@14",
})).gain(0.91)

// drums · congas
const congas_2 = s("conga:18").struct("<~@28 A@12 ~@4 B C@3 D ~@7 B C@15 D ~>".pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~@3 x", C: "~ x ~@4 x ~", D: "~ x ~@6",
})).gain(0.91)

// drums · congas
const congas_3 = s("conga:33").struct("<~@28 A@12 ~@4 B C@3 D ~@7 B C@15 D ~>".pickRestart({
  A: "~@7 x ~@4 x ~@3", B: "~@15 x", C: "~@4 x ~@10 x", D: "~ x ~@2",
})).gain(0.91)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@28 A ~ A ~ A ~ A ~ B ~ B ~@5 C ~ C ~@9 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@3
>`.pickRestart({
  A: "x", B: "x!2 ~@14", C: "~@8 x!2 ~@6",
})).gain(1.75)

// drums · claves · soft notes
const claves_soft = s("clave:2").struct("<~@28 A ~ A ~ A ~ A ~@39>".pickRestart({
  A: "~ x ~@14",
})).gain(1.05)

stack(
  bass, bass_soft, epiano2, pad_warm, pad_warm_soft, electric_guitar_clean, string_ensemble_2, rock_organ, kick, snare,
  hihat, open_hat, congas, congas_2, congas_3, claves, claves_soft
)

More by Phil Collins