Strudelify

Rainbow in the Sky

DJ Paul Elstak

KeyD♭ majorTempo170 bpm
0:00/0:00
// Rainbow in the Sky — DJ Paul Elstak
// 169.9 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 145 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(169.9/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.

// chords · piano · "A.Piano"
const piano = note("<~@47 A@2 B C A@2 B C D@2 E F G H E F G H E F ~@35 I@8 J@5 ~@8 K@8 L@8 M@5 ~>".pickRestart({
  A: "[[db4,f4,ab4]@28 ~@5 [f4,ab4,db5] ~@2 [f4,ab4,db5]@3 ~ [db4,f4,ab4]@3 ~@2 [f4,b4]@2 ~, ~@45 ab4 ~@2]/2", // Db Fdim
  B: "[db4,e4,a4]@11 ~", C: "[b3,eb4,gb4]@10 ~@2 [b3,eb4,ab4]@3 ~ [b3,eb4,gb4]@3 ~@2 [b3,eb4,ab4]@3",
  D: "[f4,ab4,db5]/2", // Db
  E: "db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,ab4]@3 db4 [db4,f4,bb4]@2 ~ db4@2 [db4,f4,ab4]@3", // Db Bbm Db
  F: "db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,bb4]@3 db4 [db4,f4,ab4]@3 db4@2 [db4,f4,bb4]@3", // Db Bbm Db Bbm
  G: "a3@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 a3@2 ~ [a3,db4,e4]@3 a3 [a3,db4,gb4]@3 a3@2 [a3,db4,e4]@2 ~", // A Gbm A
  H: "b3@3 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 b3@2 ~ [b3,eb4,ab4]@3 b3 [b3,eb4,gb4]@3 b3@2 [b3,eb4,ab4]@2 ~", // B Abm B Abm
  I: "[~@23 [db3,db4]@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 [db3,db4]@2 ~ [db4,f4,ab4]@3 [db3,db4]@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 [db3,db4]@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 [db3,db4]@2 ~ [db4,f4,bb4]@3 [db3,db4]@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 [a2,a3]@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 [a2,a3]@2 ~ [a3,db4,e4]@3 [a2,a3]@2 [a3,db4,gb4]@3 a3 [a3,db4,e4]@2 ~ [b2,b3]@3 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 [b2,b3]@2 ~ [b3,eb4,ab4]@3 [b2,b3]@2 [b3,eb4,gb4]@3 b3 [b3,eb4,ab4]@2 ~ [db3,db4]@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 [db3,db4]@2 ~ [db4,f4,ab4]@3 [db3,db4]@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 [db3,db4]@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 [db3,db4]@2 ~ [db4,f4,bb4]@3 [db3,db4]@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 [a2,a3]@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 [a2,a3]@2 ~ [a3,db4,e4]@3 [a2,a3]@2 [a3,db4,gb4]@3 a3 [a3,db4,e4]@2 ~ [b2,b3], ~@43 db3@2 ~@22 db3@2 ~@22 a2@2 ~@22 b2@2 ~@22 db3@2 ~@22 db3@2 ~@22 a2@2 ~@3]/8", // Db Bbm Db Bbm Db Bbm A Gbm …
  J: "[~@2 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 [b2,b3]@2 ~ [b3,eb4,ab4]@3 [b2,b3]@2 [b3,eb4,gb4]@3 b3 [b3,eb4,ab4]@2 ~ [db3,db4]@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 [db3,db4]@2 ~ [db4,f4,ab4]@3 [db3,db4]@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 [db3,db4]@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 [db3,db4]@2 ~ [db4,f4,bb4]@3 [db3,db4]@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 [a2,a3]@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 [a2,a3]@2 ~ [a3,db4,e4]@3 [a2,a3]@2 [a3,db4,gb4]@3 a3 [a3,db4,e4]@2 ~ [b2,b3]@3 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 [b2,b3]@2 ~ [b3,eb4,ab4]@3 [b2,b3]@2 [b3,eb4,gb4]@3 b3 [b3,eb4,ab4]@2 ~@2, ~@19 b2@2 ~@22 db3@2 ~@22 db3@2 ~@22 a2@2 ~@22 b2@2 ~@3]/5", // B Abm B Abm Db Bbm Db Bbm …
  K: "[~@23 db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,ab4]@3 db4@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,bb4]@3 db4@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 a3@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 a3@2 ~ [a3,db4,e4]@3 a3@2 [a3,db4,gb4]@3 a3 [a3,db4,e4]@2 ~ b3@3 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 b3@2 ~ [b3,eb4,ab4]@3 b3@2 [b3,eb4,gb4]@3 b3 [b3,eb4,ab4]@2 ~ db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,ab4]@3 db4@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,bb4]@3 db4@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 a3@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 a3@2 ~ [a3,db4,e4]@3 a3@2 [a3,db4,gb4]@3 a3 [a3,db4,e4]@2 ~ b3]/8", // Db Bbm Db Bbm Db Bbm A Gbm …
  L: "[~@2 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 b3@2 ~ [b3,eb4,ab4]@3 b3@2 [b3,eb4,gb4]@3 b3 [b3,eb4,ab4]@2 ~ db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,ab4]@3 db4@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,bb4]@3 db4@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,ab4]@3 db4@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,bb4]@3 db4@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 a3@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 a3@2 ~ [a3,db4,e4]@3 a3@2 [a3,db4,gb4]@3 a3 [a3,db4,e4]@2 ~ b3@3 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 b3@2 ~ [b3,eb4,ab4]@3 b3@2 [b3,eb4,gb4]@3 b3 [b3,eb4,ab4]@2 ~ db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,ab4]@3 db4@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 db4]/8", // B Abm B Abm Db Bbm Db Bbm …
  M: "[~@2 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,bb4]@3 db4@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 a3@3 [a3,db4,e4] ~@2 [a3,db4,e4]@3 a3@2 ~ [a3,db4,e4]@3 a3@2 [a3,db4,gb4]@3 a3 [a3,db4,e4]@2 ~ b3@3 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@3 b3@2 ~ [b3,eb4,ab4]@3 b3@2 [b3,eb4,gb4]@3 b3 [b3,eb4,ab4]@2 ~ db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,ab4]@3 db4@2 [db4,f4,bb4]@2 ~ db4 [db4,f4,ab4]@3 db4@3 [db4,f4,ab4] ~@2 [db4,f4,ab4]@3 db4@2 ~ [db4,f4,bb4]@3 db4@2 [db4,f4,ab4]@3 db4 [db4,f4,bb4]@3 ~]/5", // Db Bbm Db Bbm A Gbm A B …
})).s("gm_piano").gain(0.34)

// bass · electric bass finger · "Synth.Bas"
const bass = note(`<
  ~@29 A B A C A B A C A@2 D E A@2 D E A F ~@10 A@2 D E A@2 D E A@4 D E A@2 D E A@2 G@2 H@2 I@2 J@2 G@2 H@2 I@2 J@2 A K
  L M N@2 L M N O ~@13 N P N Q N P N ~ N@2 L M N@2 L M N R@8 S@3 ~
>`.pickRestart({
  A: "~@3 db2!2 ~@4 db2!2 ~@4 db2!2 ~@4 db2!2 ~", B: "~@3 db2!2 ~@4 db2!2 ~@2 db2 ~ db2!2 ~@4 e2!2 ~",
  C: "~@3 db2!2 ~@4 db2!2 ~@2 a1 ~ a1!2 ~@4 ab1!2 ~", D: "~@3 a1!2 ~@4 a1!2 ~@4 a1!2 ~@4 a1!2 ~",
  E: "~@3 b1!2 ~@4 b1!2 ~@4 b1!2 ~@4 b1!2 ~", F: "~@9 db2!2 ~@13",
  G: "db1@3 db2!2 ~ db1@3 db2!2 ~ db1@3 db2!2 ~ db1@3 db2!2 ~",
  H: "gb1@3 gb2!2 ~ gb1@3 gb2!2 ~ gb1@3 gb2!2 ~ gb1@3 gb2!2 ~", I: "b0@3 b1!2 ~ b0@3 b1!2 ~ b0@3 b1!2 ~ b0@3 b1!2 ~",
  J: "gb0@3 gb1!2 ~ gb0@3 gb1!2 ~ gb0@3 gb1!2 ~ gb0@3 gb1!2 ~", K: "~@3 db2!2 ~@4 db2!2 ~@4 db2!2 ~@3 db2 ~ db2 ~",
  L: "~@2 a1 ~ a1 ~@3 a1 ~ a1 ~@3 a1 ~ a1 ~@3 a1 ~ a1 ~", M: "~@2 b1 ~ b1 ~@3 b1 ~ b1 ~@3 b1 ~ b1 ~@3 b1 ~ b1 ~",
  N: "~@2 db2 ~ db2 ~@3 db2 ~ db2 ~@3 db2 ~ db2 ~@3 db2 ~ db2 ~", O: "~@8 db2 ~ db2 ~@13",
  P: "~@2 db2 ~ db2 ~@3 db2 ~ db2 ~@2 db2!2 ~ db2 ~@3 e2 ~ e2 ~",
  Q: "~@2 db2 ~ db2 ~@3 db2 ~ db2 ~@2 a1!2 ~ a1 ~@3 ab1 ~ ab1 ~",
  R: "[~@2 db2 ~ db2 ~@3 db2 ~ db2 ~@3 db2 ~ db2 ~@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 a0@3 a1 ~ a1 a0@3 a1 ~ a1 a0@3 a1 ~ a1 a0@3 a1 ~ a1 b0@3 b1 ~ b1 b0@3 b1 ~ b1 b0@3 b1 ~ b1 b0@3 b1 ~ b1 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 a0@3 a1 ~ a1 a0@3 a1 ~ a1 a0@3 a1 ~ a1 a0@3 a1 ~ a1 b0]/8",
  S: "[~@2 b1 ~ b1 b0@3 b1 ~ b1 b0@3 b1 ~ b1 b0@3 b1 ~ b1 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 db1@3 db2 ~ db2 ~]/3",
})).s("gm_electric_bass_finger").gain(0.63)

// other · lead 8 bass lead · "#Saw"
const lead_8_bass_lead = note(`<
  ~ A@2 B C A@2 B C A@4 B C A@2 B C ~@18 A@2 B C A@2 B C A D A@2 B C A@2 B C ~@12 A@2 B C A@2 B C A@2 ~@8 A@2 E@2 C@2
  E@2 A F G H I J G H I K ~@3 L I J G H I J G M ~@8 L I J G H I J G N G H I J G H I J G H I O ~
>`.pickRestart({
  A: "db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~",
  B: "a2 a3 ~ a2 a3 ~ a2 a3 ~ a2 a3 ~ a2 a3 ~ a2 a3 ~ a2 a3 ~ a2 a3 ~",
  C: "b2 b3 ~ b2 b3 ~ b2 b3 ~ b2 b3 ~ b2 b3 ~ b2 b3 ~ b2 b3 ~ b2 b3 ~",
  D: "db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 ~@11",
  E: "gb3 gb4 ~ gb3 gb4 ~ gb3 gb4 ~ gb3 gb4 ~ gb3 gb4 ~ gb3 gb4 ~ gb3 gb4 ~ gb3 gb4 ~",
  F: "db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 ~ db3 db4 db3 ~ db4 db3 ~ db4 a2",
  G: "~ a3 a2 ~ a3 a2 ~ a3 a2 ~ a3 a2 ~ a3 a2 ~ a3 a2 ~ a3 a2 ~ a3 b2",
  H: "~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 db3",
  I: "~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3",
  J: "~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 a2",
  K: "~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~@12", L: "~@23 db3",
  M: "~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 ~",
  N: "~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 b2 ~ b3 a2",
  O: "~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 db3 ~ db4 ~",
})).s("gm_lead_8_bass_lead").gain(0.27).pan(0.6)

// chords · string ensemble 1 · "#St.Strin"
const string_ensemble_1 = note(`<
  ~ A@2 B C D@2 B C D@2 E@2 F G H@2 F G I@2 ~@16 A@2 B C D@2 B C J ~ A@2 B C D@2 B C D@2 E@2 F G H@2 F G H@2 E@2 F G H@2
  F G H@2 K@8 L@8 J M@8 N@2 O@2 P@6 Q@3 ~@8 R@2 S@8 R@2 S@8 ~@2
>`.pickRestart({
  A: "[db2,f3,ab3,db4,f4,ab4,db5]/2", B: "[a1,a2,db3,e3,a3,db4,e4,a4]", C: "[b1,b2,eb3,gb3,b3,eb4,gb4,b4]",
  D: "[db2,db3,f3,ab3,db4,f4,ab4,db5]/2", E: "[db2,f3,ab3,db4,f4,ab4,db5,db6,db7]/2",
  F: "[a1,a2,db3,e3,a3,db4,e4,a4,a5,a6]", G: "[b1,b2,eb3,gb3,b3,eb4,gb4,b4,b5,b6]",
  H: "[db2,db3,f3,ab3,db4,f4,ab4,db5,db6,db7]/2", I: "[[db2,db3,f3,ab3,db4,f4,ab4]@13 ~@11]/2",
  J: "[db2,f3,ab3,db4,f4,ab4,db5]", // Db
  K: "[[db5,f5,ab5,db6,f6]@33 [db5,f5,ab5,db6,f6,ab6]@9 [db5,f5,bb5,db6,f6,bb6]@5 ~ [db5,gb5,bb5,db6,gb6]@33 [gb5,bb5,eb6,gb6,bb6,eb7]@9 [gb5,bb5,db6,gb6,bb6,db7]@5 ~ [eb5,gb5,b5,eb6,gb6,b6]@33 [gb5,b5,eb6,gb6,b6,eb7]@9 [gb5,b5,db6,gb6,b6,db7]@5 ~ [db5,gb5,bb5,db6,gb6,bb6]@33 [gb5,bb5,db6,gb6,bb6,db7]@9 [gb5,bb5,eb6,gb6,bb6,eb7]@5 ~, [db3,db4,f4,ab4]@47 gb4@47 ~@2 eb4@47 gb4@46 ~@3, ~@24 gb3@24 ~@24 [gb3,db4,bb4]@23 ~, ~@48 [db4,bb4]@46 ~ [b3,gb4,b4]@48 ~@49]/8", // Db Bbm Gb Ebm Gb B Gbsus4 Gb …
  L: "[[db5,f5,ab5,db6,f6]@33 [db5,f5,ab5,db6,f6,ab6]@9 [db5,f5,bb5,db6,f6,bb6]@5 ~ [db5,gb5,bb5,db6,gb6]@33 [gb5,bb5,eb6,gb6,bb6,eb7]@9 [gb5,bb5,db6,gb6,bb6,db7]@5 ~ [eb5,gb5,b5,eb6,gb6,b6]@33 [gb5,b5,eb6,gb6,b6,eb7]@9 [gb5,b5,db6,gb6,b6,db7]@5 ~ [db5,gb5,bb5,db6,gb6,bb6]@33 [gb5,bb5,db6,gb6,bb6,db7]@9 [gb5,bb5,eb6,gb6,bb6,eb7]@5 ~, [db3,db4,f4,ab4]@47 gb4@47 ~@2 eb4@47 ~ [db4,bb4]@45 ~@3, ~@48 gb3@48 ~@47 [gb3,gb4]@46 ~@3, ~@48 [db4,bb4]@46 ~ [b3,gb4,b4]@48 ~@49]/8", // Db Bbm Gb Ebm Gb B Gbsus4 Gb …
  M: "[~@23 [a1,a2,db3,e3,a3,db4,e4,a4]@24 [b1,b2,eb3,gb3,b3,eb4,gb4,b4]@24 [db2,db3,f3,ab3,db4,f4,ab4,db5]@48 [a1,a2,db3,e3,a3,db4,e4,a4]@24 [b1,b2,eb3,gb3,b3,eb4,gb4,b4]@24 [db2,f3,ab3,db4,f4,ab4,db5]@25]/8", // A B Db A B Db
  N: "[~@23 [db2,f3,ab3,db4,f4,ab4,db5]@25]/2", // Db
  O: "[~@23 [a1,a2,db3,e3,a3,db4,e4,a4]@24 [b1,b2,eb3,gb3,b3,eb4,gb4,b4]]/2", // A B
  P: "[~@23 [db2,f3,ab3,db4,f4,ab4,db5,db6,db7]@48 [a1,a2,db3,e3,a3,db4,e4,a4,a5,a6]@24 [b1,b2,eb3,gb3,b3,eb4,gb4,b4,b5,b6]@24 [db2,f3,ab3,db4,f4,ab4,db5,db6,db7]@25]/6", // Db A B Db
  Q: "[~@23 [a1,a2,db3,e3,a3,db4,e4,a4,a5,a6]@24 [b1,b2,eb3,gb3,b3,eb4,gb4,b4,b5,b6]@24 ~]/3", // A B
  R: "[~@23 [db2,f3,ab3,db4,f4,ab4,db5,db6,db7]@25]/2", // Db
  S: "[~@23 [a1,a2,db3,e3,a3,db4,e4,a4,a5,a6]@24 [b1,b2,eb3,gb3,b3,eb4,gb4,b4,b5,b6]@24 [db2,db3,f3,ab3,db4,f4,ab4,db5,db6,db7]@48 [a1,a2,db3,e3,a3,db4,e4,a4,a5,a6]@24 [b1,b2,eb3,gb3,b3,eb4,gb4,b4,b5,b6]@24 [db2,db3,f3,ab3,db4,f4,ab4,db5,db6,db7]@25]/8", // A B Db A B Db
})).s("gm_string_ensemble_1").gain(0.11)

// other · lead 8 bass lead · "#Big Lead"
const lead_8_bass_lead_2 = note(`<
  ~@11 A@2 B C A@2 B C ~@18 A@2 B C A@2 B C A@2 ~@10 A@2 B C A@2 B C A@2 ~@66 D E F G H E F G H E I ~
>`.pickRestart({
  A: "db5 ~@2 f5 ~@2 ab5 ~@2 db5 ~@2 f5 ~@2 ab5 ~@2 db5 ~@2 ab5 ~@2",
  B: "a4 ~@2 db5 ~@2 e5 ~@2 a4 ~@2 db5 ~@2 e5 ~@2 a4 ~@2 e5 ~@2",
  C: "b4 ~@2 eb5 ~@2 gb5 ~@2 b4 ~@2 eb5 ~@2 gb5 ~@2 b4 ~@2 ab5 ~@2", D: "~@23 db5",
  E: "~@2 f5 ~@2 ab5 ~@2 db5 ~@2 f5 ~@2 ab5 ~@2 db5 ~@2 ab5 ~@2 db5",
  F: "~@2 f5 ~@2 ab5 ~@2 db5 ~@2 f5 ~@2 ab5 ~@2 db5 ~@2 ab5 ~@2 a4",
  G: "~@2 db5 ~@2 e5 ~@2 a4 ~@2 db5 ~@2 e5 ~@2 a4 ~@2 e5 ~@2 b4",
  H: "~@2 eb5 ~@2 gb5 ~@2 b4 ~@2 eb5 ~@2 gb5 ~@2 b4 ~@2 ab5 ~@2 db5",
  I: "~@2 f5 ~@2 ab5 ~@2 db5 ~@2 f5 ~@2 ab5 ~@2 db5 ~@2 ab5 ~@3",
})).s("gm_lead_8_bass_lead").gain(0.14).pan(0.1)

// bass · church organ · "#Chs.Orga"
const bass_2 = note(`<
  ~@20 A B C B D B C B D B C B D B C B D E F G H E F G H E I ~@20 E F G H E F G H E I ~@16 E J@2 K@2 L@2 K@2 M ~@12 N@2
  O@2 P@2 O@2 Q ~@21
>`.pickRestart({
  A: "db2@2 ~ db2@2 ~ db2@2 ~ db2@2 ~", B: "db2@4 ~@2 db2@4 ~@2 db2@3 e1@3 ab1@3 db2@3",
  C: "~@3 db2@4 ~@2 db2@2 ~ db2@3 e1@3 ab1@4 ~@2", D: "~@3 db2@4 ~@2 db2@2 ~ db2@3 e1@3 ab1@2 ~ ab1@3",
  E: "db2@4 ~@2 db2@4 ~@2 db2@4 ~@2 db2 ~@2 db2@3", F: "~@3 db2@4 ~@2 db2@4 ~@2 db2@2 ~ db2@2 ~ db2@2 ~",
  G: "a1@4 ~@2 a1@4 ~@2 a1@4 ~@2 a1 ~@2 b1@3", H: "~@3 b1@4 ~@2 b1@4 ~@2 a1@3 b1@3 e2@3", I: "~@3 db2@4 ~@2 db2@4 ~@11",
  J: "[~@3 db2@4 ~@2 db2@4 ~@2 db2@2 db2@2 ~ db2@2 ~ a1@4 ~@2 a1@4 ~@2 a1@4 ~@2 a1 ~@2 b1@4]/2",
  K: "[~@2 b1@4 ~@2 b1@4 ~@2 a1@3 b1@3 e2@3 db2@4 ~@2 db2@4 ~@2 db2@4 ~@2 db2 ~@2 db2@4]/2",
  L: "[~@2 db2@4 ~@2 db2@4 ~@2 db2@2 ~ db2@2 ~ db2@2 ~ a1@4 ~@2 a1@4 ~@2 a1@4 ~@2 a1 ~@2 b1@4]/2",
  M: "~@2 db2@4 ~@2 db2 ~@2 db2 ~@2 db2 ~@2 db1@4 ~@3", N: "[~@23 db2@4 ~@2 db2@4 ~@2 db2@3 e1@3 ab1@3 db2@4]/2",
  O: "[~@2 db2@4 ~@2 db2@2 ~ db2@3 e1@3 ab1@4 ~@2 db2@4 ~@2 db2@4 ~@2 db2@3 e1@3 ab1@3 db2@4]/2",
  P: "[~@2 db2@4 ~@2 db2@2 ~ db2@3 e1@3 ab1@2 ~ ab1@3 db2@4 ~@2 db2@4 ~@2 db2@3 e1@3 ab1@3 db2@4]/2", Q: "~ db2@2 ~@9",
})).s("gm_church_organ").gain(0.73)

// other · lead 1 square · "#Sine Wav"
const lead_1_square = note(`<
  ~ A ~@3 A ~@5 A ~@3 A ~@5 A ~@25 A ~@3 A ~@4 A ~@20 A ~@24 B@2 ~@2 B@2 ~@2 B@2 ~@31 B@2
>`.pickRestart({
  A: "db1@23 ~", B: "[~@23 db1@23 ~@2]/2",
})).s("gm_lead_1_square").gain(0.24)

// chords · lead 2 sawtooth · "Saw Wave"
const lead_2_sawtooth = note("<~@55 [~@5 b7@3, db2@7 ~] [b1@19 ~@5] ~@88>").s("gm_lead_2_sawtooth").gain(0.56)

// drums · kick
const kick = s("bd").struct(`<
  ~@19 A B C D C E B F B G B F B H B F B I B F B H B F B I J C@2 ~@9 B F B H B F B I B F B F B H B F B H B G C ~@7 B F B
  H B F B K B L M N M O M P Q ~@8 R M O M@2 S M O M N M O M T M O M N M O M P M U ~@11
>`.pickRestart({
  A: "x!2", B: "x!4", C: "x", D: "~@3 x", E: "~@7 x", F: "x ~ x ~ x ~ x!2", G: "x!3 ~", H: "x ~@2 x ~@2 x ~@2 x ~ x",
  I: "x ~@5 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2", J: "x ~ x!2 ~ x!2 ~ x!2 ~ x", K: "x ~@5 x ~@5 x ~@3 x ~ x ~@2 x ~@2",
  L: "x ~@5 x ~@5 x ~@4 x ~@2 x ~@2 x", M: "~@5 x ~@5 x ~@5 x ~@5 x", N: "~@5 x ~@5 x ~@5 x ~@4 x!2",
  O: "~@5 x ~@5 x ~@5 x ~@2 x ~@2 x", P: "~@5 x ~@4 x!2 ~@2 x ~@2 x ~@2 x ~@2 x", Q: "~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4 x!2",
  R: "~@23 x", S: "~@5 x ~@5 x ~@4 x!2 ~@2 x ~@2 x", T: "~@5 x ~@17 x", U: "~@5 x ~@5 x ~@12",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct("<~@21 A@25 B ~@9 C A@18 D ~@9 A@9 E F@7 ~@8 G F@3 H G F@6 H G F@9 H ~@11>".pickRestart({
  A: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", B: "x", C: "~@12 x!2 ~ x!2 ~ x!2 ~ x!2 ~",
  D: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~@8", E: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!3 ~ x!2 ~ x!2",
  F: "~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2", G: "~@23 x",
  H: "~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~",
})).gain(0.07)

// drums · clap
const clap = s("cp").struct("<~@11 A@9 ~@9 A@16 ~@12 A@20 ~@8 A@9 B C@7 D ~@13 C@7 ~ C@16 ~@5>".pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@10 x ~@6", C: "~@5 x ~@11 x ~@6", D: "~@5 x ~@18",
})).gain(0.43)

// drums · hihat
const hihat = s("hh").struct("<~@25 A B@19 ~@12 B@20 ~@8 B@9 C D@7 E ~@8 D@3 F G D@7 G D@16 ~@5>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~@5 x ~@5 x ~@4 x ~@5 x", D: "~@5 x ~@5 x ~@5 x ~@5 x", E: "~@5 x ~@5 x ~@12",
  F: "~@5 x ~@5 x ~@5 x ~@6", G: "~@23 x",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@25 A@20 ~@12 A@20 ~@8 A@9 B C@7 D ~@8 C@4 ~ C@7 ~ C@16 ~@5>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~@5 x ~@5 x ~@4 x ~@3", C: "~ x ~@2 x ~@2 x ~@2 x ~", D: "~ x ~@2 x ~@7",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@19 A B C D C E C ~@2 F C ~@3 C ~@2 F C ~@3 C ~@2 F ~@11 G C ~@3 C ~@3 C F C ~@3 C ~@3 C F C ~@7 C ~@3 C ~ H F C I J
  I ~ I J ~@10 I ~@3 I K ~@3 I ~@2 I L ~@3 I ~@3 I ~ I ~@3 I ~@3 I M K ~
>`.pickRestart({
  A: "x!2", B: "x!4", C: "x", D: "~@3 x", E: "~@7 x", F: "x ~@5 x ~@5 x ~@3 x ~ x ~@2 x ~@2", G: "x!3 ~",
  H: "x ~@2 x ~@4", I: "~@23 x", J: "~@5 x ~@18", K: "~@5 x ~@5 x ~@4 x!2 ~@2 x ~@2 x", L: "~@5 x ~@17 x",
  M: "~@11 x ~@11 x",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@21 A@24 ~@12 A@18 B ~@17 A C D@7 E ~@7 F D@3 G F D@6 G F D@13 G ~@7
>`.pickRestart({
  A: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", B: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~@8",
  C: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!3 ~ x!2 ~ x!2", D: "~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2",
  E: "~ x!2 ~ x!2 ~ x!2 ~ x ~@13", F: "~@23 x", G: "~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~",
})).gain(0.21)

stack(
  piano, bass, lead_8_bass_lead, string_ensemble_1, lead_8_bass_lead_2, bass_2, lead_1_square, lead_2_sawtooth, kick,
  snare, clap, hihat, open_hat, crash, tambourine
)

More by DJ Paul Elstak