Strudelify
Suddenly cover art

1984 · Suddenly

Suddenly

Billy Ocean

KeyB♭ minorTempo67 bpm
0:00/0:00
// Suddenly — Billy Ocean
// 67 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 56, 4/4 at bar 57) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 63 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(67/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 · "Fingered Bass"
const bass = note(`<
  ~@8 A B C D E F G H I J K B L B M B C N O B P Q R S G H I J K T U V W X Y G H I J K B L B Z AA AB AC AD@4 ~ AE@3
>`.pickRestart({
  A: "~@3 f2", B: "bb2 ab2", C: "gb2@3 f2", D: "~ eb3, eb2", E: "f2@2 a2 f2", F: "bb1@5 ~ bb1 ~ bb1@6 ~ bb1",
  G: "eb2@5 ~ eb2 ~ ab1@6 ab2 ab1", H: "bb1@5 ~ bb1 ~ bb1@6 eb2@2", I: "eb2 ~@5 eb2 ~ ab1@6 eb2 ab1",
  J: "db2@5 ~ db2 ~ gb1@8", K: "f1@3 c2 f2@3 g2 a2@8", L: "gb2@3 ab2", M: "gb2@3 ab2, [ab3,db4]",
  N: "eb2@8 ab2@6 eb2 d2", O: "db2@2 f2 a2", P: "gb2@13 f2@3", Q: "eb2@7 bb2 db3@7 eb2", R: "f2@2 a2 c4",
  S: "bb1@5 ~ bb1 ~ bb1@7 bb1", T: "bb2@2 bb2@2 ~ bb1 [ab1,ab2]@2, ~@2 bb2 ~", U: "gb1@5 ~ gb1 ~ gb1@6 db2 gb2",
  V: "f2 db2 f1@3 ~ f1@2 db2@6 ab1 db2", W: "eb2@5 bb2 eb3@2 f2@6 db2@2", X: "gb1@5 db2 gb2 db2 ab1@4 ab1@2 ab2 a2",
  Y: "bb2 f2 bb1@4 bb1 ~ bb1@8", Z: "gb2@4 eb2 d2 db2 c2 b1 bb1 a1 ab1 g1 gb1 f1 e1",
  AA: "eb1@3 bb1 eb2 bb1 gb1 g1 ab1@3 eb2 ab2 eb2 ab1 ab2", AB: "bb1@5 f2 bb2@5 f2 bb1@2 f2 bb1",
  AC: "eb2@5 ~ eb2 ~ ab1@6 eb2 ab1", AD: "[db2@5 ~ db2 ~ gb1@16 f1@32 ~@8]/4", AE: "[~@15 bb1@32 ~]/3",
})).s("gm_electric_bass_finger").gain(0.23)

// chords · epiano2 · "E.Piano 2"
const epiano2 = note(`<
  ~ A B A C D E@2 F G H I J K L M N O ~ P Q R S ~@2 T U ~@6 M N O ~ V ~ W ~@4 M X O ~ A B Y Z ~@2 N AA@2 ~ AB AC@4
>`.pickRestart({
  A: "~ bb4 ~ bb4 ~ bb4 ~ bb4, [bb2,bb3] [ab2,ab3], [c5,db5,f5]!4", // Bb Ab Dbmaj7
  B: "[bb4,db5,f5]@2 [bb4,db5,f5] [ab2,ab3,ab4,c5,eb5], [gb2,gb3]@3 ~", // Bbm Ab Gb
  C: "db5@7 ~ db5@4 [ab2,ab3,ab4,c5,eb5]@4, [gb2,gb3,gb4,bb4,f5]@3 ~, ~@7 bb5@5 ~@4", // Ab Gbmaj7
  D: "c5 ~ bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4@2, [bb2,bb3] [ab2,ab3], [db5,f5] [c5,db5,f5]!3", // Bb Ab Db Dbmaj7
  E: "[db5@8 db5@4 [f2,f3,f4,ab4,db5]@3 ~@7 bb5@2 ~@3 eb5@3 db5 eb5, [gb2,gb3,gb4,bb4,f5]@12 ~@3 db5@9 bb5@6 ~@2, ~@2 [eb2,eb3,gb4,bb4] [ab2,ab3], ~@25 c5@5 ~@2, ~@13 ab5@3]/2", // Db Gbmaj7 Ebm Ab
  F: "~@3 ab3 db4@3 [eb3,e3] [c5,f5,bb5]@4 [f2,a4,f5,c6]@4, [db3,f5] f3, db4 db5@3 ~@4, ~ ab4@7 ~@8", // Emaj7 Fsus4 F Db
  G: "f5 ~ bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4@2, [bb2,bb3] [ab2,ab3], [c5,db5] [c5,db5,f5]!3", // Bb Ab Dbmaj7
  H: "~ db6, [gb2,gb3,gb4,bb4,db5], ~@7 bb6@9", // Gb
  I: "[gb4,bb4]@7 ~@7 db5@2, [eb2,db4], eb3@11 gb3@5, ~@7 gb4@9, ~@4 bb4@3 ~", // Gb Eb7
  J: "[bb4,c5,eb5,f5]@5 ~@2 c5 c5@4 c5@4, [f2,f3], ~@5 f4@3 ~@8, ~@3 bb4 [a4,f5]@4", // Bbsus4 F Dm
  K: "[c5,f5] ~ bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4@2, d5 [c5,d5,f5]!3", // F5 Dm7
  L: "~ eb4 ~ eb4 ~ eb4 ~ eb4, [gb4,bb4,db5]!2 [ab4,c5,eb5]!2", M: "~@6 f5 ~ bb5@8, ~@5 bb4@2 d5@9",
  N: "~@6 gb4@2 ~@3 eb5 ab5@4, ~@2 db5@2 ~ c5@3, ~@5 bb4@3 ~ ab4@7", O: "~@4 f5 c5 ab4@2 bb4@8",
  P: "~ bb4 ~ bb4 ~ bb4 ~ bb4, [bb2,bb3] ab2, [c5,db5,f5]!2 [c5,f5] [c5,db5,f5]", // Bb Dbmaj7 F5 Dbmaj7
  Q: "[bb4,f5]@2 [bb4,db5,f5] [ab2,ab3,ab4,c5,eb5], [gb2,gb3]@3 ~", // Bb5 Bbm Ab Gb
  R: "~ bb4 ~ bb4 ~ bb4 ~ bb4, bb2 [ab2,ab3], [c5,f5] [c5,db5,f5]!3", // Ab F5 Dbmaj7
  S: "~@2 db5 [ab2,ab4,eb5], [gb2,gb4,f5]@3 ~, ~@7 bb5@5 ~@4", T: "~@12 [eb5,c6] [db5,bb5] ~ [c5,ab5]", U: "[ab4,f5] ~",
  V: "~ bb4 ~ bb4 ~ bb4 [ab4,c5,eb5]@2, [c5,d5,f5]!3 ~", W: "~@7 gb5 f5 db5 ab4 gb4 f4@4",
  X: "~@6 gb4@2 ~@3 eb5 ab5@4, ~@4 db5@4 ~@2 c5@3 ~@3, ~@5 bb4@3 ~ ab4@7",
  Y: "~ bb4 ~ bb4 ~ bb4 ~ bb4, bb2 ab2, [c5,f5] [c5,db5,f5] [c5,f5] [c5,db5,f5]", // F5 Dbmaj7 F5 Dbmaj7
  Z: "db5@7 ~ db5@4 [db4,db5] [eb4,eb5] [f4,f5]@2, [gb2,gb4,f5]@3 ~, ~@7 bb5@5 ~@4", // Db Eb F Gbmaj7
  AA: "[~@4 f5 c5 ab4@2 bb4@16 ~@8]/2", AB: "~@5 bb4 ~ bb4, ~ bb2, ~@2 [c5,f5] [c5,db5,f5]",
  AC: "[~@2 bb4@2 ~@2 bb4@2 [bb4,db5,f5]@10 [bb4,db5,f5]@6 [ab2,eb5]@5 ~@2 f5@32 ~, ab2@8 gb2@16 ~@6 [c5,d5]@33 ~, [c5,db5,f5]@4 [c5,db5,f5]@4 ~@21 bb4@33 ~@2]/4", // Bbm Ab5 Csus2 Dbmaj7
})).s("gm_epiano2").gain(0.18)

// chords · piano · "Piano 2"
const piano = note(`<
  ~@13 A B C B D E ~@4 F G H I J K L M N O C B D E P Q R S T U O C V W@2 ~@3 X Y Z AA AB@2 AC@2 ~ AD@3
>`.pickRestart({
  A: "~ bb4 ~ bb4 ~ bb4 ~ bb4, [c5,d5,f5]!4", B: "~ eb4 ~ eb4 ~ eb4 ~ eb4, [gb4,bb4,db5]!2 [ab4,c5,eb5]!2",
  C: "c5 ~ bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4@2, [d5,f5] [c5,d5,f5]!3", // Dm Dm7
  D: "c5 ~ f4@2 ~@2 f4@2 [f4,bb4,db5]@8, [ab4,f5] [ab4,c5,f5] ~@2", E: "[c4,f4,bb4] [c4,f4,a4]",
  F: "~ bb4 ~ bb4 ~ bb4 ~ bb4, [c5,db5,f5]!4", G: "db5@2 db5 [f4,ab4,db5], [gb4,bb4,f5]@3 ~",
  H: "~@6 bb5@2 ~@3 eb5@3 db5 eb5, [gb4,bb4,db5] ab3, ~@4 bb5@3 ~, ~@9 c5@5 ~@2, ~@5 ab5@3", // Gb
  I: "~@3 ab3 db4@3 [eb3,e3] [c5,f5,bb5]@4 [a4,f5,c6]@4, [db3,f5] f3, db4 db5@3 ~@4, ~ ab4@7 ~@8", // Emaj7 Fsus4 F Db
  J: "f5 ~ bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4@2, [c5,db5] [c5,db5,f5]!3", // Dbmaj7
  K: "~@13 [db4,f4,ab4]@3, [gb4,bb4,db5], ~@7 db7@9, ~ db6", // Db Gb
  L: "[gb4,bb4]@7 ~@7 db5@2, db4, ~@7 gb4@9, ~@4 bb4@3 ~, ~@11 gb3@5", // Gb
  M: "[bb4,c5,eb5,f5]@5 ~@2 c5 c5@4 c5@4, ~@5 f4@3 ~@8, ~@3 bb4 [a4,f5]@4", // Bbsus4 Dm
  N: "[c5,f5] ~ bb4@2 ~@2 bb4@2 ~@2 bb4@2 ~@2 bb4@2, d5 [c5,d5,f5]!3", // F5 Dm7
  O: "~ eb4 ~ eb4 ~ eb4 ~ eb4, [gb4,db5] [gb4,bb4,db5] [ab4,c5,eb5]!2", // Gb5 Gb Ab
  P: "~ bb4 ~ bb4 ~ bb4 [ab4,c5,eb5]@2, [c5,d5,f5]!3 ~", Q: "~ f4 ~ f4 ~ eb4 ~ eb4, [gb4,bb4,db5]!2 [ab4,c5,eb5]!2",
  R: "~ f4 ~ f4 ~ f4 ~ f4, [ab4,db5,f5]!4", // Db
  S: "db5 ~ gb4@2 ~@2 gb4@2 ab4@2 ab4@2 ab4@2 ab4@2, [bb4,gb5] [bb4,db5,gb5] [db5,f5]!2", // Ebm Gb Db
  T: "db4!4 gb4!2 ab4!2, [gb4,bb4]!2 [bb4,db5] [c5,eb5]", U: "~ bb4 ~ bb4 ~ bb4 ~ bb4, [c5,d5,f5]!3 [c5,f5]",
  V: "~ eb4 ~ eb4 ~ eb4 ~ eb4, [gb4,db5] [gb4,bb4,db5] [ab4,eb5]!2", // Gb5 Gb Ab5
  W: "[~@2 f4@2 ~@2 f4@2 [f4,bb4,db5]@6 ~@2 [eb5,f5]@7 ~ [a3,f4,a4]@8, [ab4,c5,f5]@4 [ab4,c5,f5]@4 ~@7 [bb5,c6,f6]@8 c5@9]/2", // Bbm Ebsus2 Dm Fm Bbsus2
  X: "~@12 [db4,db6] [eb4,eb6] [f4,f6]@2", // Db Eb F
  Y: "[db4,gb4,bb4]@4 gb4@2 ~ db5 eb4@2 eb4@2 ab4@2 ab4@2, ~ [bb4,db5] c5 [c5,eb5], ~@3 gb4 ~@4", // Gb Bbm Cm
  Z: "[f4,bb4,d5]!3 [f4,d5]", AA: "~ eb4 ~ eb4 ~ eb4 ~ eb4, [gb4,bb4,db5]!2 [ab4,eb5] [ab4,c5,eb5]",
  AB: "[~ f4 ~ f4 [f4,bb4,db5]@8 [bb3,eb4]@4, [ab4,f5]@4 [ab4,c5,f5]@4 ~@16 [f4,bb4] ~@7]/2", AC: "[[c4,f4,a4]@3 ~]/2",
  AD: "[~@15 bb4@32 ~]/3",
})).s("gm_piano").gain(0.24)

// other · piano · "Piano 1"
const piano_2 = note(`<
  ~@19 A@2 B@2 ~ C ~@2 D E F ~ G H I J K ~ L M@2 N O P Q R S T U@4 V W X J Y@2 ~ Z@3 AA@2
>`.pickRestart({
  A: "[~@7 [c6,db6] bb5@5 ~@2 [c6,db6] bb5@12 ~ f6@2 [c6,db6], ~@5 f6@7 ~ f6@15 ~@4]/2", // Dbmaj7
  B: "[bb5@5 ~@2 [c6,db6] bb5@5 ~@2 [c6,db6] bb5@12 ~@4, ~@5 f6@7 ~ f6@15 ~@4]/2", C: "~ bb5, ~@7 bb6@9",
  D: "~@6 bb5@9 f6", E: "db6@7 ~ bb6@5 [ab5,ab6]@3, ~@7 bb5@6 ~@3", F: "~@2 gb5@5 ~ db6@8, gb6@6 ~ gb6@9",
  G: "~@8 [bb4,bb5]@4 [d4,d5]@2 [eb4,eb5] [f4,f5]", H: "[gb4,gb5]@3 [gb4,gb5]@3 [bb3,bb4]@2 [c4,c5]@6 [eb4,eb5]@2",
  I: "[f4,f5]@7 [f5,f6] [d5,d6]@3 [bb4,bb5] [bb4,bb5]@2 [eb5,eb6] [f5,f6]", // F D Bb Eb F
  J: "[gb5,gb6]@3 [gb5,gb6]@3 [bb4,bb5] [c5,c6]@7 [db5,db6] [eb5,eb6]", K: "[f5,f6]@4 [f5,f6]@2 [c5,c6] [db5,db6]@9",
  L: "[f4,g4] [a4,c5] [a4,bb4] [db5,d5] [f5,a5] [b5,c6] [ab5,a5,bb5] [gb5,g5] [d5,f5] [eb5,f5] [bb4,d5,eb5] [a4,c5] bb4 c5 db5 eb5", // Fsus2 Am Bbmaj7 Dmaj7 F Cmaj7 Gmaj7 Dm …
  M: "[~@8 [c4,c5]@2 [bb3,bb4] [ab3,ab4]@3 [eb3,eb4] [f3,f4]@13 [db4,db5] [eb4,eb5] [f4,f5]@2]/2", // C Bb Ab Eb F Db Eb F
  N: "[gb4,gb5]@6 [ab4,ab5] [bb4,bb5] [ab4,ab5]@2 [db5,db6]@3 [ab4,ab5]@3", O: "[bb4,bb5]@2 [db5,db6] [eb5,eb6]",
  P: "[f5,f6]@7 [bb5,bb6] [bb5,bb6]@2 [f5,f6]@2 [d5,d6]@2 [bb4,bb5]@2", // F Bb F D Bb
  Q: "[gb5,gb6]@6 [bb4,bb5] [c5,c6]@3 [ab5,ab6] [eb5,eb6]@2 [c5,c6]@3", // Gb Bb C Ab Eb C
  R: "[f5,f6]@4 [d5,d6]@4 [bb4,bb5]@4 [d5,d6] [eb5,eb6] [f5,f6]@2", // F D Bb D Eb F
  S: "[gb5,gb6]@3 [gb5,gb6]@2 [eb5,eb6]@3 [c5,c6]@2 [bb4,bb5] [ab4,ab5]@2 [gb4,gb5]@3", // Gb Eb C Bb Ab Gb
  T: "[f4,f5] [ab4,ab5] [bb4,bb5]@2", // F Ab Bb
  U: "[~@15 [c6,db6] bb5@5 ~@2 [c6,db6] bb5@5 ~@2 [c6,db6] bb5@12 ~@3 [c6,db6] bb5@5 f6@2 [c6,db6] bb5@5 f6@2 [c6,db6], ~@13 f6@7 ~ f6@7 ~ f6@15 ~ f6@7 ~@12]/4", // Dbmaj7
  V: "bb5@3 ~", W: "[gb5,gb6]@8 [eb5,eb6]@5 ~ [eb5,eb6]@2, ~@13 [db5,db6]@3",
  X: "[bb5,bb6]@3 [d6,d7] [d6,d7]@3 [f6,f7] [f6,f7]@3 [bb6,bb7] [bb6,bb7]@2 [ab6,ab7]@2", // Bb D F Bb Ab
  Y: "[[f5,f6]@4 [f5,f6]@2 [c5,c6] [db5,db6]@17 ~@8]/2", // F C Db
  Z: "[~@5 f6@2 [c6,db6] bb5@5 ~@2 [c6,db6] bb5@5 ~@2 [c6,db6] bb5@16 c6@7 ~, ~@13 f6@7 ~ f6@19 ~@8]/3", // Dbmaj7
  AA: "[~@15 bb7@16 ~, ~@13 [bb5,d6]@17 ~@2, ~@14 [f6,bb6,d7,f7]@17 ~]/2", // Bb
})).s("gm_piano").gain(0.36)

// other · acoustic guitar nylon · "Nylon String Guitar"
const acoustic_guitar_nylon = note(`<
  ~@9 A B C D E F E F G H I J I K A L M N A B O D E F E P G H Q R S T U V P W X G H Y@2 Z AA AB AC AD AE@2 AF@2 AG@2 ~@2
>`.pickRestart({
  A: "f3 bb3 c4 db4 f4 db4 c4 bb3", B: "gb3 bb3 c4 db4 f4@4",
  C: "eb3@2 gb3@2 bb3@2 eb4 [gb3,bb3] [eb4,f4] gb4 d4 f4 eb4 bb3 ab3 gb3", // Gb Ebsus2
  D: "f3@2 c4@2 bb3@2 g3 ab3 a3 c4 eb4 f4 gb4 [gb4,ab4] f4 eb4", // Gbsus2
  E: "d4 f3 bb3 d4 f4 d4 bb3 f3 d4 f3 bb3 d4 f4 d4 bb3 f3",
  F: "eb3 gb3 bb3 eb3 gb3 bb3 db4 d4 eb4 ab4 db4 ab4 c4@3 ab3", G: "f3 ab3 c4 f4 ab4 f4 ab3 c4 db4@8",
  H: "bb3@7 [f3,a3] f4@8, ~@8 c4 ~@7", I: "~@5 f4 ~ [c4,db4] bb3@5 f4@2 [c4,db4]", J: "bb3@12 ~ f4@2 [c4,db4]",
  K: "bb3@3 ~", L: "gb3@2 bb3@2 c4@2 db4@2 f4@3 [f4,gb4] ab4@3 [gb4,g4], ~@12 g4 ~@3",
  M: "[f4,gb4]@2 db4@2 bb3@2 gb3 g3 ab3 c4 eb4 ab4 eb4 c4 ab3 eb3", // Gbmaj7
  N: "f3@2 ab3@2 db4@2 f4@2 bb4 gb4 g4 ab4 a4 bb4 a4 f4",
  O: "~@2 gb3@2 bb3@2 eb4 [gb3,bb3] [eb4,f4] gb4 d4 f4 eb4 bb3 ab3 gb3", // Gb Ebsus2
  P: "~ gb3 bb3 eb3 gb3 bb3 db4 d4 eb4 ab4 db4 ab4 c4@3 ab3",
  Q: "[f3,g3] [a3,c4] [a3,bb3] [db4,d4] [f4,a4] [b4,c5] [ab4,a4,bb4] [gb4,g4] [d4,f4] [eb4,f4] [bb3,d4,eb4] [a3,c4] bb3 c4 db4 eb4", // Fsus2 Am Bbmaj7 Dmaj7 F Cmaj7 Gmaj7 Dm …
  R: "f4 bb4 f4 eb4 db4 eb4 f4 bb4 ab4 gb4 f4 eb4 db4 [db4,eb4] c4 bb3", // Dbsus2
  S: "ab3 gb3 ab3 bb3 c4 db4 eb4 gb4 f4 db4 ab3 gb3 f3@4",
  T: "gb3 bb3 eb4 gb4 bb4 gb4 eb4 bb3 ab3 db4 f4 ab4 db5 ab4 f4 db4",
  U: "gb3 bb3 db4 gb4@2 db4 bb3 gb3!2 bb3 db4 gb4 ab3 c4 eb4 a4",
  V: "bb4 d5 f4 bb4 d4 f4 bb3 d4 f3 bb3 d4 f4 ~ f4 d4 bb3", W: "~ f3 bb3 d4 f4 d4 bb3 f3 d4 f3 bb3 d4 f4 d4 bb3 f3",
  X: "~ gb3 bb3 eb3 gb3 bb3 db4 d4 ~ ab4 db4 ab4 ~@3 ab3",
  Y: "[bb3@5 ~@2 [c4,db4] bb3@5 ~@2 [c4,db4] bb3@12 ~ f4@2 [c4,db4], ~@5 f4@7 ~ f4@15 ~@4]/2", // Dbmaj7
  Z: "bb3@5 f4 ~ [c4,db4] bb3@5 f4 ~ [c4,db4]", AA: "bb3@12 bb3 c4 db4@2",
  AB: "eb3 gb3 bb3 eb3 gb3 bb3 db4 gb4 ~ c4 eb4 ab3 c4 ~ ab4 eb4",
  AC: "~ f4 bb4 d5 ~ f4 d4 bb4 ~ d4 bb3 f4 ~ bb3 f3 bb3", AD: "eb3 gb3 bb3 eb3 gb3 bb3 db4 d4 ~ ab4 db4 ab4 c4@3 ab3",
  AE: "[~ ab3 c4 f4 ab4 f4 ab3 c4 db4@16 bb3@7 [bb3,c4]]/2", AF: "[~@21 f4@2 [c4,db4] bb3@5 f4 ~ [c4,db4], a3@3 ~]/2",
  AG: "[bb3@5 f4 ~ [c4,db4] bb3@16 eb4@7 ~]/2", // Dbmaj7
})).s("gm_acoustic_guitar_nylon").gain(0.14)

// other · electric guitar muted · "Muted Guitar"
const electric_guitar_muted = note(`<
  ~@9 A B ~@2 C D E F G ~@5 A H ~@2 A H ~@2 C D E I G ~ J K L M N O D E I G ~@5 P Q F G ~@7
>`.pickRestart({
  A: "~@3 ab3 bb3!2 ~@5 ab3 bb3!2 ~@2", B: "~@3 ab3 bb3!2 ~@10", C: "~@7 f3 bb3!2 bb2 ~@5",
  D: "eb3!2 db3 eb3 ~@4 c4!2 bb3 ab3 ~@4", E: "~@6 f3 bb3 ~ bb3 bb2 ~@5", F: "eb3!2 db3 eb3 ~@4 ab3!2 bb3 ab3 ~@4",
  G: "~@2 db4 db3 ~ eb3 f3 ab3 ~@8", H: "~@3 ab3 bb3!2 ab3 bb3 ~@8", I: "~ eb3 db3 eb3 ~@4 ab3!2 bb3 ab3 ~@4",
  J: "~@4 bb2 c3 d3 f3 ~ f3 d3 ab3 ~ ab3 ab2 ab3", K: "~@4 bb3!2 ab3 f3 eb3 f3 eb3 ~@5",
  L: "~@3 ab3 ~ ab3 f3 eb3 db3 db4 db3 ~@5", M: "~@2 eb3 eb4 ~ eb4 eb3 eb4 ~@2 f3 f4 f3 f4 f3 f4",
  N: "~@4 gb3!2 f3 db4 ~ db4 db3 eb4 ~ eb4 eb3 eb4", O: "~@4 d3 eb3 f3 bb3 ~ bb3 f3 eb3 d3 ~@3",
  P: "eb3!2 db3 eb3 ~@5 ab3 bb3 ab3 ~@4", Q: "~@2 bb2 bb3 ~ bb3 d3 d4 ~ d4 f3 f4 ~ f4 bb3 bb4",
})).s("gm_electric_guitar_muted").gain(0.16)

// other · pad halo · "Halo Pad"
const pad_halo = note("<~ A@2 B@3 ~@13 A@2 B@3 ~@24 A@2 C@2 ~@6 D@3 ~@2>".pickRestart({
  A: "c4/2", B: "f4/3", C: "f4/2", D: "[~@8 c4@39 ~]/3",
})).s("gm_pad_halo").gain(0)

// other · acoustic guitar nylon · "Nylon String Guitar"
const acoustic_guitar_nylon_2 = note("<~@19 A B ~@28 C D@2 ~@8 E@3>".pickRestart({
  A: "~@10 ab4 bb4 eb4@4", B: "~ db4 eb4!2 ~ db4 eb4 db4@9", C: "~@2 eb4 ~ eb4 db4 eb4@9 ~",
  D: "[~@3 [bb4,db5] ab4 [eb4,f4] ab4@4 f4 [db4,eb4]@2 eb4 db4 eb4@2 db4@5 [ab3,bb3] f3@4 ~@5]/2", // Bbm Ebsus2 Dbsus2 Absus2
  E: "[~@4 c5@4 c4@6 ~ d4@32 ~]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

// chords · cello
const cello = note("<~@24 A B ~@15 C D ~@5 E F ~@2 G H ~@9>".pickRestart({
  A: "~@2 c4 db4 c4@2 bb3@2", B: "bb3 ~@7 c4@8", C: "~@2 gb4 f4 db4@2 eb4@2", D: "d4",
  E: "~ f3 bb3 c4 eb4@3 db4, ~@6 bb3 ~@9", F: "bb3@13 ~@3",
  G: "[gb3,bb3] [eb3,gb3] [bb3,db4] [gb3,bb3] [db4,gb4] [bb3,db4] [gb4,bb4] [db4,gb4] eb4 db4 c4@3 db4 eb4@2", // Gb Ebm Bbm Gb Gb5 Bbm Gb Gb5
  H: "d4 bb3 f3 d3",
})).s("gm_cello").gain(0.18)

// chords · string ensemble 2 · "Slow Strings"
const string_ensemble_2 = note("<~@13 A B C B D E ~@4 F G H I F J ~ K ~@5 E ~@10 E ~@8 L M@6>".pickRestart({
  A: "[f3,d4,bb4]", B: "[gb3,eb4,bb4] [ab3,eb4,c5]", C: "[bb3,f4,d5]", D: "[ab3,f4,c5] [bb3,f4,db5]",
  E: "[c4,f4,bb4] [f3,c4,a4]", F: "[f3,db4,bb4] [f3,db4,ab4]", G: "[gb3,db4,f4]@3 [ab3,f4,db5]",
  H: "[bb3,gb4,db5] [c4,ab4,eb5]", I: "[db4,ab4,f5]@2 [f4,c5,bb5] [f4,c5,a5]", J: "[gb3,f4]@13 [ab3,f4,db5]@3",
  K: "[c4,f4,bb4] [c4,f4,a4]", L: "~ [c4,f4,bb4]", M: "[[f3,c4,a4]@24 [f3,db4,bb4]@32 ~ [ab3,c5]@6 [bb3,d5]@32 ~]/6",
})).s("gm_string_ensemble_2").gain(0.12)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@18 A@3 B@2 C@2 ~ D@3 E F G H G I J K ~ L M N O P Q P R J K ~ S T U ~ V R W@2 X Y@5
>`.pickRestart({
  A: "[~@2 [bb3,bb5]@16 [c4,c6] [db4,db6] [f3,f5]@4]/3", B: "[[bb3,bb5]@10 [c4,c6] [db4,db6] [f4,f6]@4]/2",
  C: "[bb3,bb5]/2", D: "[~@16 f5@20 [c5,c6]@2 [db5,db6]@2 [bb4,bb5]@5 [f4,ab5]@3, ~@7 f4@11 ~@6]/3", E: "[gb4,bb5]",
  F: "[f4,bb5] [f4,c6]", G: "[bb3,d6]", H: "[bb3,db6] [ab3,c6]",
  I: "[bb3,db6]@8 [ab3,c6]@2 [bb3,db6] [ab3,c6]@2 [gb3,bb5]@3", J: "[f3,ab5] [ab3,c6] [bb3,db6]@2",
  K: "[bb3,bb5] [a3,c6]", L: "[gb3,bb4] [gb3,c5]", M: "[f3,db5]@12 [db3,db5] [eb3,eb5] [f3,f5]@2",
  N: "[gb3,gb5]@6 [ab3,ab5] [bb3,bb5] [ab3,ab5]@6 [db4,db6]@2", O: "[bb3,bb5]@2 [bb3,db6] [c4,eb6]",
  P: "[d4,f6]@12 [bb3,d6] [c4,eb6] [d4,f6]@2", Q: "[eb4,gb6] [c4,eb6]",
  R: "[eb4,gb6]@8 [c4,eb6]@2 [bb3,db6] [ab3,c6]@2 [gb3,bb5]@3", S: "~@2 [bb3,bb4] [c4,c5] [db4,db5]@2 [eb4,eb5]@2",
  T: "[db4,f5]@2 [bb3,bb5] [c4,c6] [eb4,eb6]@3 [db4,db6]", U: "[f4,f6]", V: "[d3,f5] [f3,bb5] [bb3,d6] [d4,f6]",
  W: "[[f3,ab5] [ab3,c6] [bb3,db6]@4 [bb3,bb5]@2]/2", X: "[a3,c6] ~",
  Y: "[~@8 [bb3,bb5]@21 [c4,c6]@2 [db4,db6]@3 [f3,f5]@6 [f4,f6]@6 ~ [d4,bb6]@32 ~]/5", // Bb C Db F Gm
})).s("gm_string_ensemble_1").gain(0.2)

// other · contrabass
// … 76 more lines

More by Billy Ocean