Strudelify

Don't Lose My Number

Phil Collins

KeyE♭ majorTempo164 bpm
0:00/0:00
// Don't Lose My Number — Phil Collins
// 164 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: Full arrangement: all 146 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 28.
setcpm(164/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 · electric bass finger · "Don'tLose"
const bass = note(`<
  ~@5 A B C D E B C F E G H F A B I B E G J K L M N O P Q R@2 S@2 T O U Q V W E B X F E G H F E B X F E B X F E B J K Y
  Z AA O AB AC AD W AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AQ AU AV AW AX AY AZ BA@2 BB BC@2 BD B H F E B H BE
  BD B H BF E B H BG E B H BH E B J BI BJ BK T O AB BL BM AL BN BO BP O AB BQ BM W BR@8 ~
>`.pickRestart({
  A: "c2 ~ g1@2 c2@2 ~@8 g1@2", B: "~ g1 c2 ~@5", C: "c2@2 g1@2 c2@3 ~@7 c3 ~", D: "~@2 g2 ~ c2@3 ~@9",
  E: "c2 g1 c2 ~@4 g1", F: "~@2 g2@2 c2@3 ~@9", G: "~@2 g1@2 c2@3 ~@9", H: "c2@2 g1@2 c2@2 ~@8 c3 ~",
  I: "c2@2 g1@2 c2@2 ~@8 g1 ~", J: "f1 ~ f1 ~ f1@2 ~@8 ab1@2", K: "~@2 ab1 ~ ab1@2 ~@2 bb1 ~ bb1 ~ bb1 ~@3",
  L: "eb2 bb1 eb2 ~@2 bb1 c2 eb2", M: "~@2 eb2@4 ~@2 f2@3 ~ f2@3 ~", N: "db2@2 ~@2 db2@2 ~@4 ab1@2 bb1@2 db2 ~",
  O: "~ db2 c2 bb1 ab1 ~ ab1 bb1", P: "c2 g1 c2 ~@2 g1 bb1 c2", Q: "~ g1 c2@2 ~@4",
  R: "[c2@2 ~@2 bb1@6 ~@4 bb1@5 ~ db2@10 ~@2]/2", S: "[eb2 bb1 eb2 ~@4 eb2@3 ~ eb2 f2 ~ f2 ~]/2",
  T: "db2 ~ ab1@2 db2@2 ~@4 f1@2 ab1@2 db2@2", U: "c2 g1 c2 ~@3 g1 c2", V: "c2@2 ~@2 bb1@8 ~@2 bb1 ~",
  W: "~@4 db2@9 ~@3", X: "c2 g1 c2 ~@4 c3", Y: "eb2 ~ bb1@2 eb2@2 ~@4 bb1@2 c2@2 eb2 ~",
  Z: "~@2 eb2 ~@3 eb2@2 f2@2 ~@2 f2@3 ~", AA: "db2 ab1 db2 ~@2 ab1 bb1 db2", AB: "c2@2 g1@2 c2@2 ~@4 g1@2 bb1@2 c2 ~",
  AC: "~@2 g1@2 c2@3 ~@7 g1@2", AD: "c2 ~@3 bb1@5 ~@5 bb1 ~", AE: "eb2 bb1 eb2 ~@4 eb2", AF: "~ eb2@2 ~ f2 ~ f2@2",
  AG: "db2@2 ab1@2 db2 ~@5 f1@2 ab1@2 db2@2", AH: "~@2 db2 ~ c2@2 bb1@2 ab1 ~@3 ab1@2 bb1@2",
  AI: "c2@2 g1@2 c2 ~@7 g1@2 c2 ~", AJ: "~@2 g1@2 c2@9 ~@3", AK: "c2 ~@3 bb1@8 ~@2 bb1@2", AL: "~@2 db2@5 ~",
  AM: "g1 ~ g1 ~ g1@2 ~@2 g1@2 d2@2 f2@2 g2 ~", AN: "~ g2 f2 d2 c2 d2 c2 bb1",
  AO: "g1 ~ g1 ~ g1@3 ~ d2 ~ f2 ~ d2@2 g2@2", AP: "~ bb2 a2 g2 f2 d2 c2 bb1",
  AQ: "g1 ~ g1 ~ g1 ~@3 g1@2 d2@2 f2@2 g2@2", AR: "~ g2 f2 d2 c2 bb1 c2 d2", AS: "g1 ~ g1 ~ g1 ~@3 g1@2 d2@2 f2@2 g2 ~",
  AT: "~@2 g3@2 f3@2 d3@2 c3 ~ bb2@2 g2@2 f1@2", AU: "~@2 g2 ~@3 bb2@2 a2@2 g2 ~ f2@2 d2@2",
  AV: "g1@3 ~ g1@2 ~@2 g1@2 d2@2 f2@2 g2 ~", AW: "~@2 g2 ~@3 g2@2 f2 ~ c2@2 bb1 ~ f1 ~",
  AX: "g1 ~ g1 ~ g1@2 ~@2 g1@2 d2@2 f2@2 g2@2", AY: "~@2 g2 ~ g2@2 ~@4 g2@2 f2 ~ d2@2",
  AZ: "g1 ~ g1 ~ g1@2 ~@2 g2@2 f2 ~ d2@2 g1@2", BA: "~@2 g1 ~ g1@2 ~@8 g1@2", BB: "~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 ~",
  BC: "[~@2 g1 ~ g2@22 g1@2 bb1@2 b1 ~]/2", BD: "c2@2 g1@2 c2 ~@9 g1@2", BE: "~ g2 c2 ~@2 g1 bb1 b1", BF: "~ g2 c2 ~@5",
  BG: "~@2 g2 ~ eb3@2 d3 ~ bb2@2 g2@2 c3@2 f2@2", BH: "~@2 g2 ~ c2@2 ~@8 g1@2",
  BI: "~@2 ab1 ~@3 ab1@2 bb1 ~ bb1 ~ bb1@2 ~@2", BJ: "eb2@2 bb1@2 eb2 ~@5 bb1@2 c2@2 eb2 ~",
  BK: "~@2 eb2@2 ~@2 eb2@2 f2@3 ~ f2@3 ~", BL: "~ g1 c2@4 ~ g1", BM: "c2 ~@3 bb1@8 ~@2 bb1 ~",
  BN: "eb2 bb1 eb2 ~@3 bb1 eb2", BO: "~@2 eb2@4 ~@2 f2 ~@3 f2@2 ~@2", BP: "db2 ab1 db2 ~@2 f1 ab1 db2",
  BQ: "~ g1 c2@5 ~", BR: "[eb1 ~ eb1@126]/8",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · epiano2
const epiano2 = note(`<
  ~@5 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 G@2 I J K L M N O P Q R S T U V W X Y Z AA@4 AB@2 AC@2 AB@2 AD@2 AB@2 AE@2 AA@2 I
  AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT Y AU ~@14 AV AW AX AY@3 AZ@4 BA@2 BB@2 BC@6 BD@2 BC@2 BD@2 AB@2 BE J BF
  BG BH BI BJ BK BL BM BN BO BP BQ BR BS BL BT BU ~@8
>`.pickRestart({
  A: "[[c4,eb4,g4]@7 [bb3,d4,f4]@9]/2", B: "[[c4,eb4,g4]@7 [bb3,d4,f4]@8 ~]/2",
  C: "[[eb4,g4]@7 [bb3,d4,f4]@9, c4@3 ~@5]/2", D: "[[f3,bb3,d4]@14 [ab3,c4,eb4]@17 ~]/2",
  E: "[eb4@7 [bb3,d4,f4]@9, g4@13 ~@19, c4@11 ~@21]/2", F: "[[f3,bb3,d4]@14 [ab3,c4,eb4]@15 ~@3]/2",
  G: "[[c4,g4]@13 ~ [bb3,d4,f4]@14 ~@4, eb4@7 ~@9]/2", H: "[[f3,d4]@7 [ab3,c4,eb4]@7 ~@2, bb3@3 ~@5]/2",
  I: "[f3,ab3,c4]@15 ~", J: "[ab3,c4,eb4]@8 [bb3,d4,f4]@7 ~",
  K: "[bb4,eb5,g5,bb5]@3 ~ [bb4,eb5,g5,bb5] ~@9 [bb4,eb5,f5,g5,bb5] ~", // Eb
  L: "~@2 [bb4,eb5,g5,bb5]@5 ~ [c5,eb5,ab5,c6]@2 ~@2 [c5,eb5,ab5,c6]@3 ~", // Eb Ab
  M: "[ab4,db5,f5,ab5]@2 ~@2 [db5,f5,ab5]@2 ~@8 [ab4,db5,f5,ab5] ~, ~@4 ab4 ~@11", // Db
  N: "~ [ab4,db5,f5,ab5]@2 ~ [ab4,c5,eb5,ab5] ~ [ab4,c5,eb5,c6] ~, ~@8 c6 ~@3 ab5 ~@3", // Db Ab
  O: "[g4,c5,eb5,g5]@2 ~@2 [c5,eb5,g5]@2 ~@8 [f4,g4,c5,eb5,g5] ~, ~@4 g4 ~@11", // Cm
  P: "~@2 [g4,c5,eb5]@13 ~, ~@2 g5@11 ~@3", Q: "[g4,c5,g5] ~@3 [f4,bb4,d5,f5]@9 ~ [f4,bb4,d5,f5] ~, eb5 ~@7",
  R: "~ [f4,ab4,f5]@3, ~@2 [db5,ab5]@5 ~", S: "[g4,bb4,eb5,g5,bb5]@3 ~ [g4,bb4,eb5,g5,bb5] ~@9 [g4,bb4,eb5,g5,bb5] ~",
  T: "~@2 [bb4,eb5,g5,bb5]@6 [eb5,ab5,c6] ~@3 [ab4,c5,eb5,ab5,c6]@2 ~@2, ~ g4@2 ~ [ab4,c5] ~@3", // Eb Ab
  U: "[f4,ab4,f5,ab5]@3 ~ [f4,ab4,ab5]@2 ~@8 [ab4,db5,f5,ab5] ~, db5 ~@3 [db5,f5] ~@9 f4@2", // Fm Db
  V: "~@2 [f4,ab4,db5,f5,ab5]@4 ~@2 [c5,eb5,ab5,c6] ~@3 [ab4,c5,eb5,ab5,c6]@2 ~@2, ~@4 ab4 ~@3", // Db Ab
  W: "[g4,g5]@2 ~@2 [g4,c5,eb5] ~@9 [g4,c5,eb5,g5] ~, [c5,eb5] ~@3 g5@2 ~@10", X: "~@2 [g4,c5,eb5,g5]@5 ~",
  Y: "[g4,c5,eb5,g5] ~@3 [f4,bb4,d5,f5]@10 [f4,bb4,d5,f5] ~", Z: "~ [f4,ab4,db5,f5,ab5]@3",
  AA: "[[c4,eb4,g4]@13 ~ [bb3,d4,f4]@15 ~@3]/2", AB: "[[c4,eb4,g4]@13 ~ [bb3,d4,f4]@18]/2",
  AC: "[[f3,bb3,d4]@13 ~ [ab3,c4,eb4]@16 ~@2]/2", AD: "[[f3,bb3,d4]@7 [ab3,c4,eb4]@9]/2",
  AE: "[[f3,bb3,d4]@13 ~ [ab3,c4,eb4]@15 ~@3]/2", AF: "[ab3,c4,eb4]@7 ~ [bb3,d4,f4]@8",
  AG: "[bb4,eb5,g5,bb5]@4 [bb4,eb5,g5,bb5]@2 ~@8 [bb4,eb5,g5,bb5] ~", // Eb
  AH: "~@2 [g5,bb5]@6 [c5,ab5,c6] ~@3 [c5,eb5,ab5,c6]@4, ~@2 [bb4,eb5]@5 ~ eb5@2 ~@6", // Gm Fm Ab Eb5
  AI: "[ab4,db5,f5,ab5]@2 ~@2 [ab4,db5,f5] ~@9 [ab4,db5,f5,ab5] ~, ~@2 ab5 ~@5", // Db
  AJ: "~@2 [ab4,db5,f5,ab5]@5 ~ [eb5,ab5]@2 ~@2 [c5,eb5,ab5,c6]@3 ~, ~@8 [c5,c6] ~@7", // Db Ab5 Ab C
  AK: "[c5,eb5,g5]@2 ~@2 [g4,c5,eb5,g5]@2 ~@8 [g4,c5,eb5,g5] ~, g4 ~@15", AL: "~ [g4,c5,eb5,g5]@6 ~",
  AM: "[eb5,g5]@2 ~@2 [f4,bb4,d5,f5]@10 [f4,bb4,d5,f5] ~, [g4,c5] ~@15", AN: "~@2 [ab4,db5,f5,ab5]@5 ~",
  AO: "[eb5,g5,bb5] ~@3 [bb4,eb5,g5,bb5]@3 ~@7 [bb4,eb5,g5,bb5] ~, bb4 ~@7", // Eb
  AP: "~@2 [bb4,eb5,g5,bb5]@6 [eb5,ab5,c6] ~@3 [c5,eb5,ab5,c6]@3 ~, ~@4 c5 ~@3", // Eb Ab
  AQ: "[ab4,db5,f5,ab5] ~@3 [ab4,db5,f5] ~@9 [ab4,db5,f5,ab5] ~, ~@2 ab5 ~@5", // Db
  AR: "~@2 [ab4,db5,f5,ab5]@4 ~@2 [c5,ab5,c6] ~@3 [ab4,eb5,ab5]@2 ~@2, ~@8 [ab4,eb5]@2 ~@2 [c5,c6] ~@3", // Db Fm Ab5 C
  AS: "[g4,c5,eb5,g5]@2 ~@2 [g4,c5,eb5] ~@9 [g4,c5,eb5,g5] ~, ~@2 g5 ~@5", AT: "~@2 [g4,c5,eb5,g5]@13 ~",
  AU: "~@4 [ab4,db5,f5,ab5]@11 ~", AV: "~@7 [a4,c5,f5,a5]", AW: "~@2 [a4,c5,f5,a5] ~ [a4,c5,f5,a5] ~@9 [a4,c5,f5,a5]@2",
  AX: "~@2 [a4,c5,f5,a5] ~ [a4,c5,f5,a5] ~@9 [a4,c5,f5,a5] ~", // F
  AY: "[~@2 [a4,c5,f5,a5] ~@3 [a4,c5,f5,a5] ~@3 [a4,c5,f5,a5] ~@3 [b4,d5,g5,b5]@29 ~@5]/3", // F G
  AZ: "[[c4,eb4,g4]@13 ~ [bb3,d4,f4]@16 ~@2]/2", BA: "[[c4,eb4,g4]@13 ~ [d4,f4]@18, ~@7 bb3@8 ~]/2",
  BB: "[[c4,eb4,g4]@13 ~ [bb3,d4,f4]@11 ~ [c4,d4,f4,bb4]@5 ~]/2", BC: "[[c4,eb4,g4]@13 ~ [bb3,d4,f4]@17 ~]/2",
  BD: "[[eb4,g4]@14 [bb3,d4,f4]@17 ~, c4@3 ~@5]/2", BE: "[f3,ab3,c4]@7 ~",
  BF: "[eb4,g4,bb4]@3 ~ [g4,bb4]@2 ~@8 [g4,bb4] ~, ~@4 eb4 ~@11", BG: "~@2 [g4,bb4]@6 [ab4,c5] ~@3 [ab4,c5]@4",
  BH: "[f4,ab4]@2 ~@2 [f4,ab4]@2 ~@8 [f4,ab4] ~", BI: "~@2 [f4,ab4]@5 ~ [ab4,c5]@2 ~@2 ab4@2 ~@2, ~@12 c5 ~@3",
  BJ: "[eb4,g4] ~@3 [eb4,g4] ~@9 [eb4,g4] ~", BK: "~ [eb4,g4]@6 ~", BL: "eb4@2 ~@2 [d4,f4]@9 ~ [d4,f4] ~, g4 ~@15",
  BM: "~@4 f4@11 ~, ~@4 ab4@9 ~@3", BN: "[g4,bb4]@3 ~ bb4@2 ~@8 [g4,bb4] ~, ~@4 g4 ~@11",
  BO: "~@2 g4@5 ~ [ab4,c5] ~@3 [ab4,c5]@3 ~", BP: "[f4,ab4] ~@3 ab4@2 ~@8 [f4,ab4] ~, ~@4 f4 ~@11",
  BQ: "~@2 [f4,ab4]@4 ~@2 ab4@2 ~@2 [ab4,c5] ~@3, ~@8 c5 ~@7", BR: "eb4@2 ~@2 [eb4,g4] ~@9 [eb4,g4] ~, g4 ~@15",
  BS: "~@4 [eb4,g4]@9 ~@3", BT: "~@4 [f4,ab4]@9 ~@3", BU: "[eb5,g5] ~ [bb4,eb5,g5] ~@13, bb4 ~@7",
})).s("gm_epiano2").gain(0.22)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@5 A B A C A B D C A B A C E ~@7 F ~ G@2 H@2 I J F ~ K@2 L@2 M@2 A B A C ~@3 N@3 ~ O@2 ~@2 P@2 ~@3 F ~ Q@2 R@2 S T F
  ~ U@2 L@2 S V W@2 ~@2 X@2 ~@2 Y@2 ~@2 Z@2 AA ~@5 AB@4 AC@2 AD AE AF AG AH AI@2 AJ AK AL AM@2 AN@2 AO AP AQ ~ F ~ K@2
  AR@2 AS AT AU ~ U@2 AR@2 S AV AW ~@8
>`.pickRestart({
  A: "bb3 ~ bb3 ~ c4 ~@3 d4 ~@3 c4 ~ bb3 ~", B: "~@2 bb3 ~ c4 ~@7 c4 ~ c4 ~", C: "~@2 bb3 ~ c4 ~@11",
  D: "bb3 ~ bb3 ~ c4 ~@3 d4 ~@3 c4@2 bb3 ~", E: "~@3 [bb3,c4,eb4]", F: "~@2 [bb4,eb5] ~",
  G: "[~@10 [f4,ab4]@2 ~@2 [eb4,ab4]@4 db4 ~@13]/2", H: "[~@10 f4@4 eb4@13 ~@5]/2", I: "~@8 f4@2 d4@2 bb3@2 f4 ~",
  J: "~@2 bb3@2 eb4@11 ~", K: "[~@10 [f4,ab4] ~@3 [eb4,ab4]@4 [db4,ab4] ~@13]/2", L: "[~@5 f4@2 eb4@7 ~@2]/2",
  M: "[~@8 f4@2 d4 ~ bb3@2 f4@17 ~]/2", N: "[bb4@7 ~ f4@4 eb4@2 c4@19 ~@15]/3",
  O: "[~@8 f4@4 eb4@2 c4@14 [bb4,c5,eb5]@3 ~]/2", P: "[~@8 f4@4 eb4@2 c4@15 ~@3]/2",
  Q: "[~@10 [f4,ab4] ~@3 [eb4,ab4]@4 db4 ~@13]/2", R: "[~@5 f4@2 eb4@8 ~]/2", S: "~@8 f4@2 d4 ~ bb3@2 f4 ~",
  T: "~@2 bb3 ~ eb4@11 ~", U: "[~@10 [f4,ab4]@2 ~@2 [eb4,ab4]@4 [db4,ab4] ~@13]/2", V: "~@2 bb3 ~ eb4@8 ~@4",
  W: "[[bb3,d4,g4]@13 ~ [c4,f4]@16 ~@2, ~@7 a3@7 ~@2]/2", X: "[[d4,g4]@14 [c4,f4]@17 ~, bb3@6 ~ a3@7 ~@2]/2",
  Y: "[[bb3,d4,g4]@13 ~ [a3,c4,f4]@14 ~@4]/2", Z: "[[bb3,d4,g4]@13 ~ [c4,f4]@18, ~@7 a3@8 ~]/2",
  AA: "[g3,bb3,eb4]@13 ~@3", AB: "[~@12 f4@23 ~ eb4@2 ~@10 c5 ~@11 c4@2 eb4 ~, ~@19 d4@6 ~@7]/4",
  AC: "[f4@2 g4 ~ bb4 ~ g4@3 bb4@3 g4@3 bb4@3 g4@3 bb4@3 c5@3 bb4@2 c5@3]/2",
  AD: "~ eb5@2 f5 ~@2 f5 ~@2 f5 ~@2 f5 ~ f5@2", AE: "~ f5@2 ~ f5@2 ~ f5@2 ~ f5@2 eb5 ~ f5@2",
  AF: "eb5 ~ f5@2 ~ eb5 f5@3 eb5 c5@2 f5@3 eb5", AG: "c5@2 f5@3 eb5 c5@2 f5@3 ~ c5@2 f5@2, ~@11 eb5@2 ~@3",
  AH: "~ eb5 c5@2 f5@3 eb5 c5@2 f5@3 eb5 c5 ~",
  AI: "[f5@3 eb5 c5@2 f5@3 eb5 [c5,f5] ~ eb5 ~ bb5@11 ~ bb5@2 g5 ~ g5@2, ~@13 c5@2 ~@17]/2", // F5
  AJ: "f5 ~ f5@2 eb5 ~ eb5@2 f5 ~ f5@2 eb5 ~ f5 c5", AK: "bb4 c5 bb4 g4 c5 bb4 g4 f4 eb4 bb4 f4 eb4 c4 f4 eb4 bb3",
  AL: "[g3,c4] ~ g3 bb3 c4!2 bb3 c4!2 g3 [a3,bb3] c4 ~ [d4,eb4] ~ f4", // C5 Bbmaj7 Ebmaj7
  AM: "[gb4 g4 bb4 c5 eb5 f5 f5@12 eb5@2 d5@6 eb5@2 d5@4]/2", AN: "[c5@2 bb4@2 c5@6 bb4 ~ c5@6 d5@2 g4@12]/2",
  AO: "~@4 g4 bb4 c5 eb5", AP: "f5 ~ eb5 f5@3 ~@2 f5 ~@2 f5 ~@2 f5@2", AQ: "~ f5@2 ~ eb5@5 ~ bb5 ~ c6@3 ~",
  AR: "[~@10 f4@4 eb4@17 ~]/2", AS: "~@8 f4 ~ d4 ~ bb3@2 f4 ~", AT: "~@2 bb3 ~ eb4@12", AU: "~@8 [bb4,eb5]@3 ~@5",
  AV: "~ bb3 eb4@5 ~", AW: "[bb3,eb4,g4] ~ [bb3,eb4,g4]@2 ~@12",
})).s("gm_overdriven_guitar").gain(0.2)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@28 A B ~@2 C ~@4 D ~@2 E ~@23 A B ~@2 F ~@4 B ~@2 C ~@48 B ~@2 C ~@4 B ~@2 G ~@9
>`.pickRestart({
  A: "~@2 ab4 ~@13", B: "~@5 g4 f4 ~", C: "~@4 f4@11 ~", D: "~@10 g4 ~ f4@2 ~@2", E: "~@2 bb3@2 f4@11 ~", F: "~ f4@2 ~",
  G: "~@4 f4@5 ~@7",
})).s("gm_electric_guitar_muted").gain(0.35)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@5 A ~ A ~@33 A ~ A ~@17 B C D E F G H I B J K L M G N I ~@14 O P Q R@3 ~@24 S T K L M G U I S V K L M W U X ~@9
>`.pickRestart({
  A: "[c5,eb5,g5]@7 ~", B: "[eb5,g5]@3 ~ [eb5,g5] ~@9 [eb5,g5] ~",
  C: "~@2 [eb5,g5]@5 ~ [eb5,ab5]@2 ~@2 [eb5,ab5]@2 ~@2", D: "f5@2 ~@2 [db5,f5] ~@9 [db5,f5] ~, db5 ~@15",
  E: "~@2 [db5,f5]@4 ~@2 [eb5,ab5]@2 ~@2 [eb5,ab5] ~@3", F: "c5@2 ~@2 [c5,eb5] ~@9 [c5,eb5] ~, eb5 ~@15",
  G: "~ [c5,eb5]@6 ~", H: "eb5@2 ~@2 [bb4,d5]@9 ~ [bb4,d5,f5] ~, c5 ~@15", I: "~@4 [db5,f5]@9 ~@3",
  J: "~@2 [eb5,g5]@5 ~ [eb5,ab5] ~@3 eb5@2 ~@2, ~@12 ab5 ~@3", K: "[db5,f5] ~@3 [db5,f5] ~@9 [db5,f5] ~",
  L: "~@2 [db5,f5]@4 ~@2 [eb5,ab5] ~@3 [eb5,ab5] ~@3", M: "[c5,eb5] ~@3 [c5,eb5] ~@9 [c5,eb5] ~",
  N: "[c5,eb5] ~@3 [bb4,d5]@10 [bb4,d5] ~", O: "~@7 [c5,f5]", P: "~@2 [c5,f5] ~ [c5,f5] ~@9 [c5,f5]@2",
  Q: "~@2 [c5,f5] ~ [c5,f5] ~@9 [c5,f5,g5] ~", R: "[~@2 [c5,f5] ~@3 [c5,f5] ~@3 [c5,f5] ~@3 [d5,g5]@32 ~@2]/3",
  S: "[eb5,g5] ~@3 [eb5,g5] ~@9 [eb5,g5] ~", T: "~@2 [eb5,g5]@5 ~ [eb5,ab5] ~@3 [eb5,ab5] ~@3",
  U: "[c5,eb5] ~@3 [bb4,d5]@9 ~ [bb4,d5] ~", V: "~@2 [eb5,g5]@6 [eb5,ab5] ~@3 [eb5,ab5] ~@3", W: "~@2 [c5,eb5]@13 ~",
  X: "~ [db5,f5]@2 ~", // Db
})).s("gm_synth_brass_1").gain(0.3)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@5 A B C D E ~@4 F ~ F ~ G ~@7 H ~ I ~ J@2 K@2 H ~ L ~ M@2 N@2 O E O ~@3 P Q ~@3 R S ~@2 Q ~@4 H ~ T ~ U@2 V@2 H ~ I
  ~ M@2 ~ W@2 ~@2 X@2 ~@2 Y@2 ~@2 Z@2 AA ~@5 AB@2 AC@2 AD@2 AE AF AG AH AI AJ@2 AK AL AM AN@4 AO AP@2 AQ AR@2 ~ AS ~
  AT@2 AU@2 ~@2 AV ~ AW@2 AX AY@8 ~
>`.pickRestart({
  A: "~@8 bb3 ~@3 c4 ~@3", B: "d4 ~@5 bb3 ~@9", C: "~@12 c4 ~@3", D: "d4 ~@3 c4 ~@7 c4 ~@3", E: "~@8 bb3 ~@7",
  F: "d4 ~@15", G: "~ [g3,bb3,c4,eb4] ~@2", H: "[bb4,eb5] ~@3", I: "~@2 [f4,ab4]@2 ~@2 [eb4,ab4]@4 db4 ~@5",
  J: "[~@2 f4@4 eb4@13 ~@13]/2", K: "[f4@2 ~@2 bb3@2 f4 ~@3 bb3@2 eb4@11 ~@9]/2",
  L: "~@2 [f4,ab4] ~@3 [eb4,ab4]@4 [db4,ab4] ~@5", M: "[~ f4@2 eb4@7 ~@6]/2",
  N: "[f4@2 d4 ~ bb3 ~ f4@17 ~ bb3 ~ bb3 ~ c4 ~@3]/2", O: "d4 ~@5 bb3 ~@3 bb3 ~@5", P: "~@8 bb4@7 ~", Q: "f4@3 ~@13",
  R: "f4 ~@3", S: "~@4 [bb4,c5,eb5]@3 ~@9", T: "~@2 [f4,ab4] ~@3 [eb4,ab4]@4 db4 ~@5", U: "[~ f4@2 eb4@8 ~@5]/2",
  V: "[f4@2 d4 ~ bb3@2 f4 ~@3 bb3 ~ eb4@11 ~@9]/2", W: "[[bb3,d4,g4]@13 ~ [c4,f4]@16 ~@2, ~@7 a3@7 ~@2]/2",
  X: "[[d4,g4]@14 [c4,f4]@17 ~, bb3@6 ~ a3@7 ~@2]/2", Y: "[[bb3,d4,g4]@13 ~ [a3,c4,f4]@14 ~@4]/2",
  Z: "[[bb3,d4,g4]@13 ~ [a3,c4,f4]@17 ~]/2", AA: "[g3,bb3,eb4]@13 ~@3", AB: "[~@6 f4@23 ~ eb4@2]/2",
  AC: "[d4@6 eb4 c4@3 ~ c4 eb4 f4 g4 bb4]/2", AD: "[g4@3 bb4@3 g4@3 bb4@3 g4@3 bb4@3 c5@3 bb4@3 c5@3 eb5@3 f5 ~]/2",
  AE: "f5 ~@2 f5 ~@2 f5 ~ f5@2 ~ f5@2 ~ f5@2", AF: "~ f5@2 ~ f5@2 eb5 ~ f5@2 ~ eb5 f5@2 ~ eb5",
  AG: "f5@3 eb5 c5@2 f5@3 eb5 c5@2 f5@3 eb5", AH: "c5@2 f5@3 ~ c5@2 f5@3 eb5 c5@2 f5@2, ~@5 eb5@2 ~@9",
  AI: "~ eb5 c5@2 f5@3 eb5 c5 ~ f5@3 eb5 c5@2",
  AJ: "[f5@3 eb5 c5 f5 eb5 ~ bb5@11 ~ bb5@2 g5 ~ g5@2 f5 ~ f5@2 eb5 ~, ~@7 c5@2 ~@23]/2",
  AK: "eb5@2 f5 ~ f5@2 eb5 ~ f5 c5 bb4 c5 bb4 g4 c5 bb4", AL: "g4 f4 eb4 bb4 f4 eb4 c4 f4 eb4 bb3 g3 c4 g3 bb3 c4!2",
  AM: "bb3 c4!2 g3 a3 bb3 c4 d4 eb4 f4 gb4 g4 bb4 c5 eb5 f5",
  AN: "[f5@12 eb5@2 d5@6 eb5@2 d5@4 c5@2 bb4@2 c5@6 bb4 ~ c5@6 d5@2 g4@13 ~@5]/4",
  AO: "~@2 g4@2 bb4@2 c5@2 eb5@2 f5 ~ eb5 ~ f5@2",
  AP: "[~@2 f5 ~@2 f5 ~@2 f5@2 ~ f5@2 ~ eb5@6 bb5 ~ c6@2 bb5@4 g5@2 eb6@2]/2",
  AQ: "~@2 d6 ~ bb5 ~ c6@2 bb5@2 f5 ~ eb5@2 f5@2", AR: "[~@7 [bb4,eb5]@2 ~@7]/2",
  AS: "[f4,ab4] ~@3 [eb4,ab4]@4 [db4,ab4] ~@7", AT: "[f4@4 eb4@17 ~@9 f4 ~]/2",
  AU: "[~@2 bb3@2 f4 ~@3 bb3 ~ eb4@12 ~@8 [bb4,eb5]@2]/2", AV: "ab4@2 ~@2 [eb4,ab4]@4 [db4,ab4] ~@7",
  AW: "[f4@4 eb4@17 ~@9 f4@2]/2", AX: "~@4 f4 ~@3 bb3@2 eb4@5 ~", AY: "[[eb3,bb3] ~ [eb3,bb3]@126]/8",
})).s("gm_distortion_guitar").gain(0.25)

// other · distortion guitar · soft notes
const distortion_guitar_soft = note(`<
  ~@5 A B C D E F G H I J G J ~@15 K ~@9 L M L ~@4 N@2 ~@2 O ~@3 P@2 ~@13 Q ~@55 R ~@3 S ~@3 T ~@9
>`.pickRestart({
  A: "~@10 bb3 ~@5", B: "~@4 c4 ~@5 bb3 ~ c4 ~@3", C: "~@4 c4 ~ c4 ~ bb3 ~ bb3 ~@5", D: "~@6 bb3 ~@3 bb3 ~@5",
  E: "~@10 bb3 ~ c4 ~@3", F: "d4 ~@3 c4 ~ bb3 ~@3 bb3 ~ c4 ~@3", G: "~@4 c4 ~ c4 ~ bb3 ~ bb3 ~ c4 ~@3",
  H: "d4 ~@3 c4@2 bb3 ~@3 bb3 ~ c4 ~@3", I: "~@8 bb3 ~ bb3 ~ c4 ~@3", J: "~@4 c4 ~ bb3 ~@3 bb3 ~ c4 ~@3", K: "~ d4 ~@6",
  L: "~@4 c4 ~@7 c4 ~@3", M: "~@4 c4 ~ c4 ~@3 bb3 ~ c4 ~@3", N: "[~@4 eb4 ~ c4@19 ~@7]/2", O: "~@2 eb4 c4@5",
  P: "[~@4 eb4 ~ c4@15 ~@11]/2", Q: "~@10 ab4 ~@5", R: "d4 ~@15", S: "f4 ~@7", T: "d4 ~ bb3@2 ~@12",
})).s("gm_distortion_guitar").gain(0.15)

// chords · rock organ
const rock_organ = note(`<
  ~@77 A@2 B@2 C@2 B@2 D@2 E@2 F@2 G H I J@3 ~@24 K L M N O P Q R S T U V W X Y Z AA ~@8
>`.pickRestart({
  A: "[[bb4,d5,g5]@7 [a4,c5,f5]@9]/2", B: "[[bb4,eb5]@7 [a4,f5]@9, g4@13 ~ c5@16 ~@2]/2",
  C: "[[d5,g5]@7 [c5,f5]@9, bb4@6 ~ a4@8 ~]/2", D: "[[d5,g5]@7 [c5,f5]@9, bb4@13 ~ a4@16 ~@2]/2",
// … 128 more lines

More by Phil Collins