Strudelify

A Different Beat

Boyzone

KeyD♭ majorTempo158 bpm
0:00/0:00
// A Different Beat — Boyzone
// 158 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(158/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
const bass = note(`<
  ~@10 A@2 B@2 C@2 D@2 E@2 F G H@2 I@2 J@2 K@2 C@2 L@2 M@2 N@2 O P Q R S T U@2 V W X Y Z@2 AA@2 AB@2 AC AD AE AF AG AH
  AI AJ AK AL AE AM@3 AN AO AP AQ AR@2 AS AT Z@2 AA@2 AB@2 AC AD Z@2 AA@2 AB@2 AC AD AU@2 AV@2 AW@2 AX@2 AY@2 AZ@2 BA@2
  BB@2 ~@8 Z@2 AA@2 AB@2 AC AD Z@2 AA@2 AB@2 AC AD BC@2 BD BE ~@4
>`.pickRestart({
  A: "[db2@11 ~ db2@16 ab1@4]/2", B: "[eb3@4 f3@7 ~ f3@18 ~@2]/2", C: "[gb1@12 gb1@15 ~ gb1@4]/2",
  D: "[ab2@4 bb2@7 ~ bb2@19 ~]/2", E: "[db2@3 db2@4 ab2]/2", F: "eb3@4 f3@7 ~ f3@2 gb3@2", G: "f3@3 db2",
  H: "[ab2@11 ~ ab2@16 f2@2 eb2@2]/2", I: "[ab1@11 ~ ab1@12 f2@4 eb2@4]/2", J: "[db2@11 ~ db2@19 ~]/2",
  K: "[eb3 f3 eb3 db3@2 db2 f1@2]/2", L: "[ab2 bb2 ab2 gb2@2 gb1 ab1 gb1]/2", M: "[db2@11 ~ db2@16 ab2@4]/2",
  N: "[eb3 f3@2 db3@4 bb2]/2", O: "ab2@3 f2", P: "eb2@4 ab1@11 ~", Q: "ab1@3 bb1", R: "c2 eb2 ab1@2", S: "gb1@3 db2",
  T: "eb2@4 gb2@8 gb1@3 ~", U: "[ab1@3 ab2@2 eb2 f2 ab2]/2", V: "gb2@3 db2", W: "gb1@3 eb2", X: "ab1@6 f2 eb2",
  Y: "ab1@8 bb1@4 c2@3 ~", Z: "[db2@4 ~@2 db2@5 ~ db2@12 ab1@2 bb1@2 db2@2 f1@2]/2",
  AA: "[gb1@5 ~ gb1@5 ~ gb1@11 ~ gb1@4 ab1@4]/2", AB: "[bb1@5 ~ bb1@5 ~ bb1@12 f1@2 ab1@2 bb1@3 ~]/2",
  AC: "ab1@11 ~ ab1@2 ~@2", AD: "ab1@4 bb1@3 ~ ab1@4 c2@3 ~", AE: "db2@11 ~ ab1@2 bb1@2", AF: "db2@15 ~",
  AG: "db2@3 ~ db2@7 ~ ab1@2 bb1@2", AH: "db2 f1", AI: "gb1@6 db2 eb2", AJ: "gb2", AK: "~@2 gb1 ab1 bb1@2 db2 ~",
  AL: "eb2@4 db2@4 eb2@7 ~", AM: "[db2@19 ~ ab1@2 bb1@2 db2@12 f1@8 bb1@4]/3", AN: "ab1@6 eb2 gb2", AO: "ab2@6 f2 eb2",
  AP: "ab1@11 ~ ab1@3 ~", AQ: "ab1 bb1 eb2 ab1", AR: "[gb1@3 gb2@2 eb2 db2 gb1]/2", AS: "ab1@11 ~ eb2@2 f2@2",
  AT: "ab2@8 c2@7 ~", AU: "[f1@2 db2 gb1@2 db2 eb2 gb2]/2", AV: "[ab1@7 ~ ab2@4 bb1@8 ab1@4 bb1@4 ab1@2 gb1@2]/2",
  AW: "[f1@2 f2 gb1@2 db2 eb2 gb2]/2", AX: "[ab1@7 ~ c2@4 db2@8 ab1@2 bb1@2 db2@4 eb1@2 e1@2]/2",
  AY: "[f1@8 f2@4 gb1@8 db2@2 eb2@2 gb2@4 gb1@3 ~]/2", AZ: "[ab1@8 ab2@4 bb1@7 ~ bb1@4 db2@4 f2@4]/2",
  BA: "[b1@14 gb1 ab1]/2", BB: "[b1@24 gb1@2 ab1@2 b1@3 ~]/2", BC: "[gb1@14 bb1 ab1]/2", BD: "gb1", BE: "eb1",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@4 A B C@2 D@2 E@2 F@2 G@4 H@2 I@2 J@2 K L M@2 N@2 O@2 P@2 Q@2 R@2 S T U@2 V W X@2 Y@2 L Z AA@2 AB@2 AC@2 AD AE H@2
  AF@2 AG@3 AH H@2 AI@2 AJ@2 AD L AK@2 X@2 AA@2 AB@2 AC@2 AD AE AA@2 AB@2 AC@2 AD AE AL@2 AM@2 AL@2 AN@2 AO@2 AP@2 AQ@2
  AR@2 Q@2 AS@2 AT@2 AU@2 AA@2 AB@2 AC@2 AD AE AA@2 AB@2 AC@2 AD AE ~@8
>`.pickRestart({
  A: "[ab3,eb4]", B: "[ab3,db4,f4]", C: "[[db4,eb4,ab4]@31 ~]/2", D: "[[ab3,db4,f4]@29 ~@3]/2",
  E: "[[db3,f3,ab3,db4]@31 ~]/2", F: "[[db3,f3,ab3,eb4]@6 [db3,f3,ab3,db4]@9 ~]/2",
  G: "[[db3,gb3,bb3,db4]@43 ~ [gb3,bb3,db4]@11 ~ [gb3,bb3,eb4]@7 ~]/4", H: "[[ab3,db4,f4]@15 ~]/2",
  I: "[[f3,ab3,eb4]@11 ~ [f3,ab3,db4]@18 ~@2]/2", J: "[[ab3,db4,eb4]@31 ~]/2", K: "[ab3,c4,eb4]",
  L: "[c4,eb4,ab4]@15 ~", M: "[[db4,f4,ab4]@31 ~]/2",
  N: "[[ab3,eb4,ab4]@4 [ab3,db4,f4]@7 ~@11 a3 ~@9, ~@12 [ab3,db4,f4]@19 ~]/2", O: "[[bb3,db4,gb4]@31 ~]/2",
  P: "[[bb3,db4,ab4]@4 [bb3,db4,gb4]@7 ~ [bb3,db4,gb4]@18 ~@2]/2", Q: "[[ab3,db4,f4]@31 ~]/2",
  R: "[[ab3,db4,eb4]@3 ~ [ab3,db4,f4]@26 ~@2]/2", S: "[ab3,db4,gb4]", T: "[ab3,eb4,ab4]@15 ~", U: "[ab3,c4,eb4]/2",
  V: "[bb3,db4,gb4]@15 ~", W: "[bb3,db4,ab4]@8 [bb3,db4,bb4]@7 ~", X: "[[c4,eb4,ab4]@15 ~]/2",
  Y: "[[db4,gb4,bb4]@24 [db4,ab4]@7 ~]/2", Z: "[eb4,ab4,c5]@7 ~", AA: "[[f4,ab4,db5]@24 [db4,f4,ab4]@7 ~]/2",
  AB: "[[db4,gb4,bb4]@15 ~]/2", AC: "[[f4,ab4,db5]@31 ~]/2", AD: "[eb4,ab4,c5]@15 ~",
  AE: "[eb4,bb4]@7 ~ [eb4,ab4,c5]@5 ~@3", AF: "[[ab3,db4,gb4]@6 [db4,f4,ab4]@9 ~]/2",
  AG: "[[db4,gb4,ab4]@13 ~ [db4,gb4,bb4]@26 [db4,eb4,ab4]@7 ~]/3", AH: "[db4,gb4,bb4]@7 ~ [bb3,db4,gb4]@7 ~",
  AI: "[[ab3,db4,gb4]@12 [db4,f4,ab4]@19 ~]/2", AJ: "[[db4,eb4,ab4]@23 ~ [eb4,ab4,db5]@7 ~]/2",
  AK: "[[db4,eb4,bb4]@23 ~ [db4,eb4,ab4]@8]/2", AL: "[[db4,f4,ab4]@11 ~ [bb3,db4,gb4]@19 ~]/2",
  AM: "[[ab3,c4,eb4]@11 ~ [f3,bb3,db4]@17 ~@3]/2", AN: "[[ab3,c4,eb4]@11 ~ [ab3,db4,f4]@18 ~@2]/2",
  AO: "[[db4,f4,ab4]@10 ~@2 [bb3,db4,gb4]@19 ~]/2", AP: "[[c4,eb4,ab4]@11 ~ [bb3,db4,f4]@18 ~@2]/2",
  AQ: "[[b3,db4,gb4]@31 ~]/2", AR: "[[b3,eb4,gb4]@31 ~]/2", AS: "[[gb3,bb3,db4,gb4]@15 ~]/2",
  AT: "[[bb2,bb3,db4,f4]@31 ~]/2", AU: "[[ab2,c4,eb4,ab4]@29 ~@3]/2",
})).s("gm_synth_strings_1").gain(0.25)

// other · accordion
const accordion = note(`<
  ~@9 A B@3 C D@2 ~ C E@3 C F@3 C G@2 ~ C H@3 C I@3 C J@4 ~@8 K@2 L@2 M@3 N@3 ~ C O@3 C E@3 C P@4 ~@4 K@2 L@2 M@3 Q R@2
  L@2 M@3 S@2 ~@2 T@3 ~ U@3 ~ V@3 ~@8 W X@5 Y@3 Z@3 AA@2 AB@3 AC@5 ~@4
>`.pickRestart({
  A: "~@4 db4@3 ~ db4@4 c4@3 ~", B: "[db4@7 ~ db4@4 ab3@27 ~@9]/3", C: "~@4 db4@3 ~ db4@4 c4@4",
  D: "[db4@7 ~ db4@4 bb3@20]/2", E: "[db4@7 ~ db4@4 ab3@28 ~@8]/3", F: "[db4@8 eb4@3 ~ eb4@32 ~@4]/3",
  G: "[db4@7 ~ db4@4 ab3@20]/2", H: "[db4@7 ~ db4@4 bb3@26 ~@10]/3", I: "[db4@7 ~ db4@4 ab3@31 ~@5]/3",
  J: "[db4@8 eb4 ~@3 eb4@38 ~@14]/4", K: "[db4@11 ~ ab3@15 ~@5]/2", L: "[db4@11 ~ bb3@14 ~@6]/2",
  M: "[f4@11 ~ db4@11 ~ f4@4 eb4@10 ~@2 eb4@7 ~]/3", N: "[f4@4 ab4@3 ~ f4@2 eb4@2 db4@9 ~@3 db4@4 ab3@18 ~@2]/3",
  O: "[db4@7 ~ db4@4 bb3@24 ~@12]/3", P: "[db4@8 eb4@3 ~ eb4@37 ~@15]/4", Q: "f4@4 ab4@3 ~ f4@2 eb4@2 db4@3 ~",
  R: "[db4@9 ~@3 ab3@15 ~@5]/2", S: "[f4@4 ab4@3 ~ f4@2 eb4@2 db4@9 ~@11]/2",
  T: "[~@8 ab4@3 ~ ab4 ~ ab4@8 gb4 ~ f4@2 eb4@2 db4@15 ~@5]/3",
  U: "[~@8 ab4@3 ~ ab4 ~ ab4@8 gb4 ~ f4@2 eb4@2 db4@16 ~@4]/3", V: "[~@8 ab4@2 ~@2 ab4 ~ ab4@26 ~@8]/3", W: "~@3 eb4",
  X: "[f4@4 ab4@2 ~@2 f4@4 eb4@2 ~@4 f4@24 f4@3 ~@3 gb4@23 ~ gb4@3 ~ gb4@4, ~@14 db4@9 ~@23 f4@4 ~@30]/5",
  Y: "[ab4@35 ~@5 eb4@3 ~ eb4@3 ~]/3", Z: "[f4@3 ~ ab4@3 ~ f4@4 eb4@2 db4@10 f4@24]/3", AA: "gb4/2",
  AB: "[ab4@36 ~@4 eb4@3 ~ eb4@3 ~]/3", AC: "[f4@3 ~ ab4@3 ~ f4@2 eb4 ~ db4@65 ~@3]/5",
})).s("gm_accordion").gain(0.44).pan(0.4)

// chords · accordion
const accordion_2 = note(`<
  A B C@2 ~@46 D@2 E@2 F@3 G@2 ~@19 D@2 E@2 F@3 H@3 E@2 F@3 G@2 ~@2 I@3 ~ J@3 ~ K@3 ~@8 L M@3 N@2 O@2 P@2 Q R S@2 T U V
  W X@4 ~@4
>`.pickRestart({
  A: "~@4 db4 bb3 ab3 bb3", B: "ab3 ~ ab3 f3!2 bb3 ab3 f3", C: "[~ eb3 f3@9 ~@5]/2",
  D: "[[db4,f4,ab4]@3 [ab3,db4,f4]@4 ~]/2", E: "[[db4,gb4,ab4]@3 [bb3,db4,gb4]@3 ~@2]/2",
  F: "[[db4,f4,ab4]@12 [ab3,db4,f4]@11 ~ [db4,f4]@3 ~ [c4,eb4]@10 ~@2 [c4,eb4]@3 ~ [c4,eb4]@3 ~]/3", // Db Cm
  G: "[[db4,f4]@3 ~ [f4,ab4]@3 ~ [db4,f4]@2 [c4,eb4] ~ [ab3,db4]@8 ~@12]/2", // Db Fm Db Cm Db5
  H: "[[db4,f4]@3 ~ [f4,ab4]@3 ~ [db4,f4]@2 [c4,eb4] ~@5 [f4,ab4]@12 [ab3,db4,f4]@16 ~@4, ~@3 [ab3,db4]@2 ~@7]/3", // Db Fm Db Cm Fm Db Db5
  I: "[~@8 ab4@3 ~ ab4 ~ ab4@8 gb4 ~ f4@2 eb4@2 db4@15 ~@5]/3",
  J: "[~@8 ab4@3 ~ ab4 ~ ab4@8 gb4 ~ f4@2 eb4@2 db4@16 ~@4]/3", K: "[~@8 ab4@2 ~@2 ab4 ~ ab4@26 ~@8]/3", L: "~@3 eb4",
  M: "[f4@4 ab4@2 ~@2 f4@4 eb4@2 ~@2 [ab3,f4]@23 ~ [ab3,db4,f4]@3 ~ [ab3,db4,f4]@3 ~, ~@14 db4@9 ~@25]/3", // Db
  N: "[[bb3,db4,gb4]@27 ~ [bb3,db4,gb4]@3 ~]/2", O: "[[bb3,db4,f4]@15 ~]/2",
  P: "[[c4,eb4,ab4]@23 ~ [c4,eb4,ab4]@7 ~]/2", Q: "[db4,f4,ab4]@15 ~", R: "[ab3,db4,f4]@7 ~ [ab3,db4,f4]@7 ~",
  S: "[[bb3,db4,gb4]@23 ~ [bb3,db4,gb4]@3 ~ [bb3,db4,gb4]@3 ~]/2", T: "[bb3,db4,ab4]@7 ~", U: "[bb3,db4,f4]@15 ~",
  V: "[c4,eb4,ab4]@15 ~", W: "[ab3,c4,eb4]@15 ~", X: "[[bb3,db4,gb4]@57 ~@7]/4",
})).s("gm_accordion").gain(0.37)

// other · pad halo
const pad_halo = note("<~@62 A B C D E@2 F@2 G H I J@2 ~@67>".pickRestart({
  A: "~ bb4", B: "ab4@8 gb4@7 ~", C: "f4 eb4", D: "f4 gb4", E: "ab4/2", F: "[gb4@2 ab4 f4@5]/2", G: "eb4@11 ~ bb4@4",
  H: "ab4", I: "eb4@3 bb4", J: "[ab4@29 ~@3]/2",
})).s("gm_pad_halo").gain(0.29).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note("<~@116 A B C@4 D@2 E@2 F@2 G@2 H@2 I@2 J K L M@3 N ~>".pickRestart({
  A: "ab3 bb3 ~ c4 db4 eb4 ~ f4 gb4 ab4 ~ bb4 c5 db5 ~ eb5", B: "f5 gb5 ~ ab5 bb5 c6 ~ db6 eb6 f6 ~ gb6 ab6 bb6 ~ c7",
  C: "[db7@6 db6 db6@7 ab6@6 bb6@2 gb6@6 f6@2 eb6@2]/4", D: "[db6@6 f6 ab6@9]/2", E: "[bb6@4 c7@2 ab6@8 bb6 c7]/2",
  F: "[db7@3 db6@3 f6 ab6]/2", G: "[bb6@6 ab6 gb6]/2", H: "[f6@3 db7@3 c7 bb6]/2", I: "[c7 bb6 ab6@10 eb6@2 c6@2]/2",
  J: "db6 c6 bb5@6", K: "gb5 f5", L: "eb5", M: "[~ f4@2, db5]/3", N: "[db1,db2]@5 ~@11",
})).s("gm_string_ensemble_1").gain(0.31).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@10 A B@2 C D E@2 F G H@2 I J K L@2 M@3 N O P Q R S T U V W X Y Z AA AB AC AD AB AE AF AG AH AI AJ@2 AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG@2 AH AI AJ@2 AK AL AM AN AH AI AJ@2 AK AL AM AN BH@2 BI@2 BJ BK
  BL@2 BM BK BN@2 BO BP BQ@2 BR@2 BS@2 BT BU BV@2 AH AI AJ@2 AK AL AM AN AH AI AJ@2 AK AL AM AN BW BX@2 BY@5
>`.pickRestart({
  A: "[db3,f3]@4 [ab3,db4,f4]@2 [db3,f3] ~ [ab3,db4,f4]@4 [db3,f3]@2 [ab3,db4,f4]@2", // Db
  B: "[[db3,f3] [ab3,db4,f4] [db3,f3]@2 [ab3,db4,f4]@2 [db3,f3] ~ [db3,f3]@2 [ab3,db4,f4] [db3,f3] [ab3,db4,f4]@2 [db3,f3] [ab3,db4,f4], ~@7 [ab3,db4,f4]@2 ~@7]/2", // Db
  C: "[db3,f3] [ab3,db4,f4] ~@2 [ab3,db4,f4]@2 [db3,f3] [ab3,db4,f4], ~@2 [db3,f3]@3 ~@3", // Db
  D: "[db3,gb3]@2 [bb3,db4,gb4] ~ [bb3,db4,gb4]@2 [db3,gb3] [bb3,db4,gb4], ~@6 [db3,gb3]@5 ~@5", // Gb5 Gb Gb5 Gb Gb5
  E: "[[db3,gb3]@2 [bb3,db4,gb4]@2 ~@4 [bb3,db4,gb4]@4 [db3,gb3]@2 ~@2 [db3,gb3]@3 ~ [db3,gb3]@2 ~@2 [db3,gb3]@4 [bb3,db4,gb4]@2 [db3,gb3] ~, ~@4 [db3,gb3]@7 ~@3 [bb3,db4,gb4]@6 ~@2 [bb3,db4,gb4]@5 ~@5]/2", // Gb5 Gb Gb5 Gb Gb5 Gb
  F: "[bb3,db4,gb4] [db3,gb3] [bb3,db4,gb4]@2 [db3,gb3]@2 [bb3,db4,gb4] [db3,gb3]", // Gb Gb5 Gb Gb5 Gb Gb5
  G: "[db3,f3]@2 [ab3,db4,f4] ~ [ab3,db4,f4]@2 [db3,f3] [ab3,db4,f4], ~@6 [db3,f3]@5 ~@5", // Db
  H: "[[db3,f3]@2 [ab3,db4,f4]@2 ~@4 [ab3,db4,f4]@4 [db3,f3]@2 ~@2 [db3,f3]@3 ~ [db3,f3]@4 [ab3,db4,f4]@4 [db3,f3] ~ [ab3,db4,f4]@2, ~@2 [db3,f3]@3 ~@2 [ab3,db4,f4]@3 ~@6]/2", // Db
  I: "[db3,f3] ~@3 [db3,f3] ~@3 [ab3,db4,f4]@4 [db3,f3] ~ [ab3,db4,f4]@2, ~ [ab3,db4,f4]@2 [db3,f3]@2 ~@3", // Db
  J: "~@4 [db4,eb4,ab4] ~@3 [db4,eb4,ab4]@4 [eb3,ab3]@2 [db4,eb4,ab4]@2, [eb3,ab3]@9 ~@7", // Dbsus2 Ab5 Dbsus2 Ab5
  K: "[eb3,ab3] [db4,eb4,ab4] ~@2 [db4,eb4,ab4]@2 [eb3,ab3] [db4,eb4,ab4], ~@2 [eb3,ab3]@3 ~@3", // Ab5 Dbsus2 Ab5 Dbsus2 Ab5
  L: "[[eb3,ab3]@2 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@4 [eb3,ab3]@2 ~@2 [eb3,ab3]@2 ~@6 [c4,eb4,ab4]@4 [eb3,ab3]@2 [c4,eb4,ab4]@2, ~@2 [eb3,ab3]@3 ~@2 [c4,eb4,ab4]@4 ~@5, ~@10 [eb3,ab3]@3 ~@3]/2", // Ab5 Ab Ab5 Ab Ab5 Ab Ab5 Ab …
  M: "[[f3,ab3]@2 [db4,ab4]@2 ~@4 [db4,ab4]@4 [f3,ab3]@2 ~@2 [f3,ab3]@3 ~@5 [db4,ab4]@4 [f3,ab3]@2 ~@6 [db4,ab4]@3 ~ [db4,ab4]@4 [f3,ab3]@2 [db4,ab4]@2, ~@4 [f3,ab3]@7 ~@3 [db4,ab4]@8 ~@8 [db4,ab4]@5 ~@13, ~@10 [f3,ab3]@3 ~@3 [f3,ab3]@5 ~@3]/3", // Fm Db5 Fm Db5 Fm Db5 Fm Db5 …
  N: "[f3,ab3] [db4,ab4] ~@2 [db4,ab4]@2 [f3,ab3] [db4,ab4], ~@4 [f3,ab3]@7 ~@5", // Fm Db5 Fm Db5 Fm
  O: "~@2 [db4,ab4] ~ [db4,ab4]@2 [gb3,bb3] [db4,ab4], [gb3,bb3]@5 ~@3", // Db5 Gb Db5 Gb
  P: "[gb3,bb3] ~ [gb3,bb3]@2 ab4 eb4 ~ eb4, ~ [db4,ab4]@2 ~@3 db4@2", // Gb Db5
  Q: "~@4 [db4,ab4] ~@3 [db4,ab4]@4 [gb3,bb3]@2 [db4,ab4]@2, [gb3,bb3]@5 ~@3", // Db5 Gb Db5 Gb
  R: "[gb3,bb3] [db4,ab4] ~@2 ab4 eb4 db4 eb4, ~@2 [gb3,bb3]@3 ~@3", // Gb Db5 Gb
  S: "~@4 [db4,ab4] ~@3 [db4,ab4]@4 [f3,ab3]@2 [db4,ab4]@2, [f3,ab3]@11 ~@5", // Db5 Fm Db5 Fm
  T: "[f3,ab3] ~ [f3,ab3]@2 ab4 eb4 db4 eb4, ~ [db4,ab4]@2 ~@5", // Fm Db5
  U: "~@4 [db4,ab4] ~@3 [db4,ab4]@4 [f3,ab3]@2 [db4,ab4]@2, [f3,ab3]@5 ~@3", // Db5 Fm Db5 Fm
  V: "[f3,ab3]@2 eb4@2 db4 ~ [f3,ab3]@2 ab4@2 eb4@2 [f3,ab3,db4] ~ eb4 ~", // Fm Db
  W: "~@4 [db4,ab4] ~@7 [eb3,ab3]@3 ~, [eb3,ab3]@5 ~@3, ~ [db4,ab4]", // Db5 Ab5 Db5
  X: "~ ab3 db4 ab4 eb4 ~ ab4 eb4, eb3@5 ~@5 db4@5 ~",
  Y: "~@4 [c4,eb4,ab4] ~@3 [c4,eb4,ab4]@4 [eb3,ab3]@2 [c4,eb4,ab4]@2, eb3@9 ~@7", // Ab Ab5 Ab
  Z: "[eb3,ab3]@2 [c4,eb4,ab4] ~@5 [c4,eb4,ab4]@4 [eb3,ab3] ~ [c4,eb4,ab4]@2, ~@4 [eb3,ab3]@7 ~@5", // Ab5 Ab Ab5 Ab Ab5
  AA: "[db3,bb3]@4 [db4,ab4] ~@3 [db4,ab4]@4 [db3,bb3]@2 [db4,ab4]@2", // Gb Db5 Gb Db5
  AB: "[db3,bb3]@2 [db4,ab4] ~ [db3,bb3]@4 [db4,ab4]@4 [db3,bb3]@2 [db4,ab4]@2", // Gb Db5 Gb Db5 Gb Db5
  AC: "[eb3,ab3] [c4,ab4] [eb3,ab3]@2 [c4,ab4]@2 [eb3,ab3] [c4,ab4]", // Ab5 Fm Ab5 Fm Ab5 Fm
  AD: "[eb3,ab3]@4 [c4,ab4] ~@3 [c4,ab4]@4 [eb3,ab3]@2 [c4,ab4]@2", // Ab5 Fm Ab5 Fm
  AE: "[db3,bb3] [db4,ab4] [db3,bb3]@2 [db4,ab4]@2 [db3,bb3] [db4,ab4]", // Gb Db5 Gb Db5 Gb Db5
  AF: "[eb3,ab3]@4 [c4,eb4,ab4] ~@3 [c4,eb4,ab4]@4 [eb3,ab3]@2 [bb3,eb4,ab4]@2", // Ab5 Ab Ab5 Ebsus4
  AG: "[eb3,ab3] [bb3,eb4,ab4] [eb3,ab3]@2 [c4,eb4,ab4]@2 [eb3,ab3] [c4,eb4,ab4]", // Ab5 Ebsus4 Ab5 Ab Ab5 Ab
  AH: "[f3,ab3]@6 [db4,ab4]@2 [f3,ab3]@3 ~ [f3,ab3]@4", // Fm Db5 Fm
  AI: "[db4,f4,ab4] ~@3 [db4,f4,ab4] ~@3 [db4,f4,ab4]@4 [f3,ab3]@2 [db4,f4,ab4] ~", // Db Fm Db
  AJ: "[[db3,bb3]@6 [db4,ab4]@2 [db3,bb3]@3 ~ [db3,bb3]@6 [db4,ab4]@2 [db3,bb3]@4 [db4,ab4]@4 [db3,bb3]@2 [db4,ab4]@2]/2", // Gb Db5 Gb Db5 Gb Db5 Gb Db5
  AK: "[f3,bb3]@4 [db4,ab4]@2 [f3,bb3] [db4,ab4]", // Bb5 Db5 Bb5 Db5
  AL: "[f3,bb3]@2 [db4,ab4] ~ [f3,bb3]@4 [db4,ab4]@4 [f3,bb3]@2 [db4,ab4]@2", // Bb5 Db5 Bb5 Db5 Bb5 Db5
  AM: "[eb3,ab3]@2 [c4,eb4,ab4] ~ [eb3,ab3]@4 [c4,eb4,ab4]@4 [eb3,ab3]@2 [c4,eb4,ab4] ~", // Ab5 Ab Ab5 Ab Ab5 Ab
  AN: "[eb3,ab3]@2 [c4,f4,ab4] ~ [eb3,ab3]@4 [c4,f4,ab4]@3 ~ [c4,eb4,ab4]@3 ~", // Ab5 Fm Ab5 Fm Ab
  AO: "[db3,f3]@6 [ab3,db4]@3 ~ [ab3,db4]@2 [db3,f3] ~ [ab3,db4]@2", // Db Db5 Db Db5
  AP: "[db3,gb3]@2 ~@2 [db3,f3]@4 [ab3,db4]@4 [db3,f3]@2 [ab3,db4] ~", // Gb5 Db Db5 Db Db5
  AQ: "[db3,gb3]@4 [bb3,gb4]@2 [db3,gb3]@4 [bb3,gb4]@2 [db3,gb3] ~@3", // Gb5 Ebm Gb5 Ebm Gb5
  AR: "[db3,ab3]@2 [db4,f4]@2 [db3,ab3] ~ [db3,ab3]@2 ~@4 [db3,ab3]@3 ~, ~@8 [db4,f4]@7 ~", // Db5 Db Db5 Db
  AS: "[gb3,bb3]@3 ~ [gb3,bb3]@4 [db4,gb4]@4 [gb3,bb3]@2 [db4,gb4]@2", // Gb Gb5 Gb Gb5
  AT: "[gb3,bb3]@2 [db4,gb4] ~ [gb3,bb3] ~ [gb3,bb3]@2 ~@4 [gb3,bb3] ~@3, ~ [db4,gb4]", // Gb Gb5 Gb Gb5
  AU: "[gb3,bb3]@3 ~ [gb3,bb3]@4 [db4,ab4]@4 [gb3,bb3]@2 [db4,ab4]@2", // Gb Db5 Gb Db5
  AV: "[gb3,bb3]@2 ~@2 [gb3,bb3] ~@7 [gb3,bb3]@3 ~, ~ [db4,ab4]@2 [gb3,bb3]@2 ~@3, ~ [db4,gb4]", // Gb Db5 Gb Gb5
  AW: "[f3,ab3]@3 ~ [f3,ab3]@4 [db4,ab4]@4 [f3,ab3] ~ [db4,ab4]@2", // Fm Db5 Fm Db5
  AX: "[f3,ab3]@2 [db4,ab4] ~ [f3,ab3] ~@7 [f3,ab3]@2 ~@2, ~@3 [f3,ab3]@2 ~@3, ~@8 [db4,ab4]@7 ~", // Fm Db5 Fm Db5
  AY: "~@4 [db4,gb4] ~@3 [db4,gb4]@4 [gb3,bb3]@2 [db4,gb4] ~, [gb3,bb3]@5 ~@3", // Gb5 Gb Gb5 Gb
  AZ: "[f3,ab3]@2 [db4,ab4] ~ [f3,ab3] ~@7 [f3,ab3] ~@3, ~@6 [f3,ab3]@5 ~@5, ~ [db4,ab4]", // Fm Db5 Fm Db5
  BA: "[eb3,ab3]@3 ~ [eb3,ab3]@2 ~@2 [db4,f4,ab4]@5 ~ [db4,f4,ab4]@2", // Ab5 Db
  BB: "[eb3,ab3] ~ [db4,f4,ab4] ~ [eb3,ab3] ~ [eb3,ab3] ~@5 [eb3,ab3] ~@3, ~ [db4,f4,ab4]", // Ab5 Db Ab5 Db
  BC: "[eb3,ab3]@8 [c4,eb4,ab4]@4 ab3 ~ [c4,eb4,ab4]@2", // Ab5 Ab
  BD: "[eb3,ab3] ~ [c4,eb4,ab4] ~ [eb3,ab3] ~ [eb3,ab3]@2 ~@4 [eb3,ab3]@3 ~, ~ [c4,eb4,ab4]", // Ab5 Ab Ab5 Ab
  BE: "[gb3,bb3]@2 g3 ~@5 [db4,ab4]@4 [gb3,bb3]@2 [db4,ab4]@2, ~@2 [gb3,bb3]@3 ~@3", // Gb Db5 Gb Db5 Gb
  BF: "[gb3,bb3]@2 [db4,ab4] ~ [gb3,bb3] ~@7 [gb3,bb3]@2 ~@2, ~@3 [gb3,bb3]@2 ~@3, ~@4 [db4,ab4]@3 ~", // Gb Db5 Gb Db5
  BG: "[[ab3,c4,ab4]@19 ~ [ab3,c4,eb4,ab4] ~@3 [ab3,c4,eb4,ab4]@4 ~@4]/2", // Ab
  BH: "[[f3,ab3]@8 [db4,ab4]@4 ~@8 [db4,ab4]@4 [gb3,bb3]@2 ~@2 [gb3,bb3]@3 ~, ~@12 [gb3,bb3]@10 ~@4 [db4,ab4]@5 ~]/2", // Fm Db5 Gb Db5
  BI: "[[eb3,ab3]@8 [c4,ab4]@4 [f3,bb3]@6 [db4,f4]@3 ~ [db4,f4]@2 [f3,bb3]@2 ~@2 [f3,bb3]@3 ~, ~@26 [db4,f4]@5 ~]/2", // Ab5 Fm Bb5 Db Bb5 Db
  BJ: "[f3,ab3]@4 [db4,ab4]@3 [gb3,bb3]", BK: "~@2 [gb3,bb3] ~@9 [gb3,bb3]@3 ~, ~@2 [gb3,bb3]@3 ~@3, ~@8 [db4,ab4]@7 ~",
  BL: "[[eb3,ab3]@8 [c4,eb4,ab4]@4 [f3,ab3]@6 [db4,ab4]@3 ~ [db4,ab4]@2 [f3,ab3]@2 ~@2 [f3,ab3]@3 ~, ~@13 [db4,ab4]@3]/2", // Ab5 Ab Fm Db5 Fm Db5
  BM: "[f3,ab3]@8 [db4,f4,ab4]@5 ~ [gb3,bb3]@2", // Fm Db Gb
  BN: "[[eb3,ab3]@3 ~ [eb3,ab3]@4 [c4,eb4,ab4]@4 ~@6 [db4,f4,ab4]@3 ~ [db4,f4,ab4]@2 [f3,bb3]@4 [db4,f4,ab4]@4, ~@3 [f3,bb3]@2 ~@3]/2", // Ab5 Ab Db Bb5 Db Bb5
  BO: "[gb3,b3]@3 ~@5 [eb4,ab4]@5 ~ [eb4,ab4]@2, ~@2 [gb3,b3]@5 ~", // B5 Ab5 B5
  BP: "[gb3,b3]@2 [eb4,gb4]@2 [gb3,b3] ~@3 [eb4,gb4]@7 ~, ~@6 [gb3,b3]@9 ~", // B5 Ebm B5 Ebm B5
  BQ: "[~@4 [gb4,b4]@11 ~, [gb3,b3]@29 ~@3]/2", BR: "[~@6 db5@9 ~, f3@7 ~, ~@4 ab3@25 ~@3, ~@8 db4@21 ~@3]/2",
  BS: "[[db4,bb4]@5 ~ [db4,ab4]@5 ~ [db4,bb4]@11 ~ [bb3,db4,ab4]@7 ~, gb3@25 ~@7]/2", BT: "~@6 f3 ab3, [db4,f4]@15 ~",
  BU: "~@2 [db4,f4]@11 ~@3, bb3@7 ~", BV: "[[ab3,c4,eb4]@25 ~@7]/2",
  BW: "[db3,gb3]@3 ~@5 [bb3,gb4]@5 ~ [bb3,gb4]@2, ~@2 [db3,gb3]@5 ~", // Gb5 Ebm Gb5
  BX: "[[db3,gb3]@2 [bb3,gb4]@2 ~@4 [bb3,gb4]@6 ~@2 [db3,gb3]@3 ~@5 [bb3,db4,gb4]@3 ~ [bb3,db4,gb4] ~ [bb3,db4,gb4]@2, ~@2 [db3,gb3]@5 [bb3,gb4]@3 [db3,gb3]@4 ~@2]/2", // Gb5 Ebm Gb5 Gb Gb5 Ebm Gb5
  BY: "[[db3,gb3]@2 [bb3,db4,gb4]@2 ~@4 [bb3,db4,gb4]@5 ~@4 [db4,ab4]@62 ~, ~@4 [db3,gb3]@9 ~@2 [db3,f3]@64 ~, ~@16 ab3@63 ~]/5", // Gb5 Gb Db5 Gb5 Db
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.6)

// chords · epiano2
const epiano2 = note(`<
  ~@26 A@2 B@2 C@4 D@4 E F G@2 H@2 I@2 J K L M N O P@2 Q R S@2 ~@20 N O P@2 Q R S@2 N O P@2 Q R S@2 ~@14 T U V@2 W@2 X@2
  Y@2 N O P@2 Q R S@2 N O P@2 Q R S@2 Z AA K AB AC@2 ~@2
>`.pickRestart({
  A: "[[db4,f4]@12 [db4,f4]@15 ~ [db4,f4]@4]/2", B: "[[bb3,eb4]@4 [f3,ab3,db4]@7 ~ [f3,ab3,db4]@19 ~]/2",
// … 102 more lines

More by Boyzone