Strudelify

The Smile Has Left Your Eyes

Asia

KeyF♯ majorTempo80 bpm
0:00/0:00
// The Smile Has Left Your Eyes — Asia
// 80 bpm, 4/4, key F# 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 68 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · "PRG.CHANGE"
const piano = note("<~@3 A@6 ~@2 B@6 C@4 D@8 E@3 F@4 G H@2 I@8 J@3 K@3 L@7 M@8>".pickRestart({
  A: "[~@7 a4 ~@20 [e4,g#4]@16 ~@4, [b4,c#5,e5]@2 c#5@6 ~ f#4@2 f#4@2 f#4 [a4,c#5]@4 b4@4 a4@2 [g#4,b4] e4 g#4 [f#4,a4]@16 ~@5, ~ a4@2 a4@2 a4@2 ~ [g#4,a4,c#5]@2 [g#4,a4,c#5]@2 [g#4,a4,c#5]@2 g#4@9 f#4@3 b4@16 ~@6, ~@2 [b4,e5]@2 [b4,e5]@2 e5@13 f#4 [a4,c#5] f#4 c#5@16 ~@10, ~@6 b4@9 f#4 [b4,d5] f#4 d5@16 ~@14]/6", // E C#m7 A G#m F#m Amaj7 E5 A …
  B: "[~@11 c#5 ~@16 e4@2 b4@2 ~@7 a4 ~@7 f#4, [e5,g#5]@2 [e5,g#5]@5 c5@12 b4 [d#5,f#5] b4 [d#5,f#5]@10 [b4,c#5,e5] a4 [b4,c#5,e5] a4 [b4,e5] a4 [b4,e5]@10, ~ b4@2 b4@7 [e5,g#5]@2 [b4,c#5,e5] a4 c#5@10 e5@4 a4@2 [b3,e4]@16 ~@2, ~@4 [d#5,f#5]@2 f#5@8 [b4,e5] a4@9 g#5@16 [g#4,a4,c#5] f#4 [g#4,a4,c#5] f#4@2 f#4@2 ~, ~@5 c5 d#5@2 [d#5,e5,g#5] c#5 d#5@6 [e5,g#5] b4 [e5,g#5]@5 b4@5 a3@16 [g#4,a4,c#5]@2 [g#4,a4,c#5]@2]/6", // E D#m C#m7 E5 E C#m7 E5 D#m …
  C: "[~@12 e4@4 [a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@2 b3@2 [g#3,b3,e4]@2 e4@2 [a3,c#4,e4]@2 [a3,c#4,e4]!2, [b4,d5]@2 d5@9 f#4 g#4@16 ~@4, ~ f#4@2 f#4@2 f#4 a4@2 [g#4,b4] e4 g#4 a4@15 [g#3,b3]@6, ~@2 b4@5 f#4@3 b4@8 e4@4 [d#4,f#4]@10, ~@2 [a4,c#5] c#5@6 [a3,c#4]@5 ~@2]/4", // A B E A Bm G#m D#m A
  D: "[[a3,c#4,e4]@2 ~@2 [b3,d#4,f#4]@2 b3@2 [g#3,b3,e4]@2 e4@2 [a3,c#4,e4]@2 ~@13 c#5 ~@16 b4@2 ~@17 c#4, ~@2 [a3,c#4]@10 ~@2 [a3,c#4,e4]@12 [e5,g#5]@2 [b4,c#5,e5] a4 c#5@9 b4 [e5,g#5] b4 g#5@8 c#5 g#4 [b4,d#5] g#4 d#5@6 [f#4,a#4] c#4 [f#4,a#4]@2, ~@2 e4@6 ~@2 [g#3,b3]@12 d#5 c5@12 b4 [d#5,f#5] b4 f#5@8 [f#4,b4]@2 [c#5,e5] g#4 e5@14, ~@6 [d#4,f#4]@13 b4@5 [d#5,e5,g#5] c#5 d#5@4 [b4,e5] a4@11 e5@2 e4@10 b4 g#4 [a#4,c#5] f#4 c#5@6, ~@16 [e5,g#5] b4 [e5,g#5]@2 [d#5,f#5] c5 f#5@10 [e5,g#5] b4 [e5,g#5]@4 d#5@6 g#4@2 d#4@12 a#4 [g#4,b4]@5]/8", // A B E A E C#m7 E B …
  E: "[~@6 f#4@2 ~@10 d#4@3 ~@5 d#4 d#4@2 d#4 ~@2 [c#4,f4,g#4]@4 [c#4,f4,g#4]@4 [c#4,f4,g#4]@4 [c#4,f4,g#4]@4, [b4,d#5]@4 [b4,d#5]@7 d#5@13 f#4@3 g#4@3 [d#4,f#4]@18, ~@2 f#4@4 ~@2 f#4@8 [g#4,b4]@5 b4@27, ~@4 [a#4,c#5]@3 c#5@16 ~, ~@11 b4@3 a#4@7 [d#4,g#4]@3 a#4@24]/3", // C# B D#m G#m A#m G#5
  F: "[[c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 c#4@2 c#4@8 ~@15 b4, ~@3 [f4,g#4]@8 ~ [c#5,d#5,f#5] d#5@3, ~@8 [a3,e4]@16 ~ b4@2 b4@2 b4@2 ~, ~ [a#3,c#4,f#4], ~@13 [c#5,f#5]!3]/4", // C# Fm D#m7 A5 F# F#5
  G: "~@7 g#4, [a#4,b4,d#5]!4, ~ g#4@2 g#4@2 g#4@2 ~", // Bmaj7
  H: "[~@3 [f#4,a#4], [c#5,e5] e5@7, ~ g#4@2 g#4@2 g#4 b4@2 [a#4,c#5] f#4 a#4 [g#4,b4]@5, ~@2 c#5@5 g#4@3 c#5@6, ~@2 [b4,d#5] d#5@5]/2", // F# C#m A#m G#m B
  I: "[[d#4,f#4,b4]@2 ~@2 [f4,g#4,c#5]@2 c#5@2 a#4 ~@3 [b4,d#5]@2 [f#4,b4]@2 [d#4,f#4,b4]@2 ~@2 [f4,g#4,c#5]@2 c#5@2 a#4 ~@3 [b4,d#5]@2 f#4@2 [c#4,f#4,a#4]@2 a#4@2 [d4,f4,a#4]@2 a#4@2 [d#4,f#4,a#4]@2 [d#4,f#4]@2 [d#4,f#4,b4]@2 f#4@2 [c#4,f#4,a#4]@2 a#4@2 [d4,f4,a#4]@2 a#4@2 [d#4,f#4,a#4]@2 [d#4,f#4]@2 [d#4,f#4,b4]@2 [d#4,f#4,b4]@2, ~@4 d#4@16 f#4@2 d#5 e5@21 f4@16 d#5@32 b4@28 ~@8, ~@2 b4@6 f#4 a#4@9 b4@6 c#5@10 c#4@12 d#4@8 [d4,f4]@10, ~ f#4@3 c#5@3 d#5@2 f#4@2 g#4@4 b4@6 a#4@3 ~ c#4@7, ~@12 [f4,g#4]@24 d#4@12 f#4@2 a#4@2 f#4@2 d#5 e5@13 f#4@8 [d4,f4]@24 f#4@12 ~@4 a#4@12]/8", // B C# B B5 B C# B F# …
  J: "[[c#4,f#4,a#4] a#4 [d4,f4,a#4] a#4 [d#4,f#4,a#4] [d#4,f#4] [d#4,f#4,b4] f#4 c#5@2 [f4,g#4,c#5]@2, ~ c#4@7 [f#4,a#4]@4, ~ f#4@3 ~ a#4@2 [d#4,b4]@5, ~@3 d4@8 ~, ~@3 f4@7 ~@2]/3", // F# A# D#m B C# F# G#m
  K: "[[f#4,a#4,c#5] f#4 [d#4,f#4,b4] ~ [f4,g#4,c#5] [f4,g#4] [d4,f4,g#4] ~ f#4@2 [f#4,b4]@2, ~ a#4@4 c#5@7, ~ c#5@2 f#4@4 [d4,f4,g#4]@5, ~@3 d#4@8 ~, ~@3 b4@5 a#4@4]/3", // F# B C# Fm Ddim B5 Ddim
  L: "[[c#4,f#4,a#4,c#5]@2 a#4@2 [d4,f4,a#4,d5]@2 a#4@2 [d#4,f#4,a#4,d#5]@2 d#4@2 [b3,d#4,g#4,b4]@2 ~@2 [c#4,f#4,a#4,c#5]@2 a#4@2 [d4,f4,a#4,d5]@2 a#4@2 [d#4,f#4,a#4,d#5]@2 d#4@2 [b3,d#4,g#4,b4]@2 ~@2 [c#4,f#4,a#4,c#5]@2 a#4@2 [d4,f4,a#4,d5]@2 a#4@2 [d#4,f#4,a#4,d#5]@2 d#4@2 [b3,d#4,g#4,b4]@2 ~@2 [c#4,f#4,a#4,c#5]@2 [c#4,c#5]@2 [c#4,f4,g#4,c#5]!4, ~ [c#4,c#5]@6 [b3,g#4,b4]@6 [f#4,a#4]@2 [b3,g#4,b4]@6 d#5@7, ~ f#4@3 ~ d#5@4 f#4@2 [d4,f4,d5]@6 [c#4,c#5]@4 [f#4,a#4]@2 [b3,d#4,b4]@5, ~@3 [d4,f4,d5]@6 [c#4,c#5]@6 d#4@2 f#4@2 [d4,d5]@8 ~, ~@5 [f#4,a#4]@2 d#4@5 ~ d#5@6 f4@4 g#4@2 [f#4,a#4]@3]/7", // F# A# D#m G#m F# A# D#m G#m …
  M: "[f#4@2 f#4@2 [c#4,g#4,c#5] f4 [d4,f4,a#4,d5] a#4 ~@4 f#4@5 [c#2,c#3,c#4]@2 c#4@2 [f#2,a#3,c#4,f#4]@8 ~@3, a#4@10 [c#4,g#4,c#5]@6 [d#4,f#4]@7 [f4,g#4]@11 f#4@8 ~@22, [c#4,c#5]@8 f#4@6 [d4,d5]@9 c#4@11 a#4@16 ~@14, ~ [b3,b4]@3 [a#4,d#5]@2 [b3,d#4,b4]@4 ~@6, ~@4 d#4@10 f4@9 c#5@15 [c#2,c#3,f4,g#4]@16 ~@10]/8", // C#5 A# C# F# C#5 D#m Fm C# …
})).s("gm_piano").gain(0.19).pan(0.3)

// chords · church organ · "PRG.CHANGE" · D Fm F#m
const church_organ = note(`<
  [~@4 d5 c#5 b4@2, ~ [d2,d3,f#4,a4]]
  [~@6 c#5 d5 c#5@4 b4@4, ~ [f2,f3,f4,g#4]]
  [g#4 f#4, [f#2,f#3,a4,c#5]]
  ~@65
>`).s("gm_church_organ").gain(0.37).pan(0.6)

// other · ocarina · "PRG.CHANGE"
const ocarina = note("<~@60 A@2 B ~@5>".pickRestart({
  A: "[c#6@4 c#6@4 b5@2 a#5@2 ~ a#5 g#5@4 f#5 g#5 a#5 g#5 a#5 b5 a#5@4 g#5@4, ~@6 g#5 ~@9]/2",
  B: "a#5 g#5 ~ f#5@11 ~@2",
})).s("gm_ocarina").gain(0.03).pan(0.3)

// bass · electric bass finger · "PRG.CHANGE"
const bass = note(`<
  ~@6 A B C D E F G H I J K L M N O P Q F R H S T U V W X Y D Z ~@3 AA AB AC AD AE AF AG AF AG AF AH AI AJ AF AG AF AG
  AF AK AF AG AI AJ AF AL AM ~@4
>`.pickRestart({
  A: "~ e2@7", B: "a1@14 b1 a1", C: "g#1 a1", D: "a1", E: "g#1@4 a1!4", F: "b1 c2", G: "c#2@4 a1@3 b1", H: "b1!2",
  I: "e2@4 f#2!2 g#2!2", J: "a2 g#2", K: "f#2@4 f#2 c#2 f#2!2", L: "b1 a1", M: "g#1@3 f#1 e1 f#1 g#1 b1",
  N: "a1@4 b1!2 c#2 e2 f#2@8", O: "g#1@3 g#1 a1 b1 c#2 e2", P: "a1@3 a1 a1@3 a1", Q: "g#1@6 b1 c#2 a1@2 a1@2 a1@2 a1@2",
  R: "c#2@4 a1@3 a1", S: "e2@2 e2 d#2", T: "c#2 c#3 b1 b2", U: "a#1@2 a#2 g#1 f#1@2 a#1@2", V: "b1 b2 a#1 a#2",
  W: "g#1@4 g#2@4 f#2@3 f#2@3 f#2@2", X: "f2@2 f2 d#2", Y: "c#2@3 c#2 c#2@2 b1@2", Z: "f#1", AA: "~ f#3",
  AB: "b2@2 b2@2 b1!2 b1@2", AC: "a#1@2 a#1@2 b1!4", AD: "b1@2 b1@2 b1 b1@2 b1", AE: "a#1@4 b1 b1@3", AF: "c#2 d2",
  AG: "d#2 b1", AH: "d#2@4 b1!4", AI: "c#2!2", AJ: "a#1 b1", AK: "d#2@4 b1!3 c2", AL: "d#2@6 ~ c#2", AM: "b1",
})).s("gm_electric_bass_finger").gain(0.52)

// other · pad halo · "PRG.CHANGE"
const pad_halo = note("<~@53 A B A B A B C ~@8>".pickRestart({
  A: "c#5 f#5 a#5 f#5 a#4 f5 g#5 f5", B: "a#4 f#5 a#5 f#5 b4 d#5 f#5 d#5", C: "c#5 f#5 a#5 f#5 c#5 f5 g#5 f5",
})).s("gm_pad_halo").gain(0.45).pan(0.4)

// other · music box · "PRG.CHANGE"
const music_box = note("<~@60 [c#5 b4 a#4 g#4 b4 a#4 g#4@2] [g#4 f#4 f4 g#4] [f#4 ~@3] ~@5>")
  .s("gm_music_box").gain(0.22).pan(0.4)

// other · overdriven guitar · "PRG.CHANGE"
const overdriven_guitar = note(`<
  ~@12 A B C D E F G H I J K L M N O P Q R S T U V W ~@3 X Y Z Y AA AB AC AD AC AB AE@2 AF@2 AG AH AI AH AI AH AJ@2 AK@2
  AL ~@5
>`.pickRestart({
  A: "~@4 c#5 d#5 e5@2", B: "e5 ~", C: "~@8 f#2@2 f#2 ~ g#2 f#2 e2@2", D: "b3@2 [a3,c#4] ~ b3@2 c#4 ~@9",
  E: "g#3@2 f#3 ~ g#3@2 f#3 ~@9", F: "d4@2 b3 ~ d4@2 b3 ~@9", G: "b3@2 g#3 ~ b3@2 [f#3,a3]@2 [e3,g#3]@7 ~",
  H: "~@2 a3 b3 c#4@2 c#4 d#4 e4@2 b3 c#4 d#4@2 e4 ~", I: "b4 g#4 e4@2",
  J: "~@2 c#4 d#4 e4@2 a4 b4 c#5@2 d#4 e4 f#4@2 b4 c#5", K: "b4 e4 e5@2 c#5@4", L: "e2@3 g#2@3 b2@2 d#3@3 c3@3 g#2@2",
  M: "c#3@3 e3@3 g#3@2 a3@8", N: "b3!2", O: "e3@4 [e3,e4] [f#3,f#4] [d#3,d#4]@2",
  P: "[c#3,c#4] [e3,e4] g#4@2 ~ e4 g#4@2", Q: "~@2 c#4@2 f#4@4 f#3@2 a#3@2 b3@3 b3", R: "b3 d#4 f#4@2 a#3 c#4 f#4@2",
  S: "g#3 b3 d#4@2 f#3 b3 d#4@2", T: "f4 g#4 f4 c#4 g#3 f3 c#3@2 g#4 c#5 g#4 f4 c#4 g#3 f3 ~",
  U: "c#5 f5 c#5 g#4 f4 c#4 g#3 ~ f5 g#5 f5 c#5 g#4 f4 c#4 ~", V: "c#5 a4 e4 c#4 a3 e3 c#3 ~ a4 c#5 a4 e4 c#4 a3 e3 ~",
  W: "a#4 c#5 a#4 f#4 c#4 a#3 f#3 ~ f#4 a#4 f#4 c#4 a#3 f#3 c#3 ~", X: "a#4@4 f#5@2 g#4@2 e5@2 f#4@2 d#5 e4 c#5@2",
  Y: "b2!2 [b3,d#4,f#4,b4]@2 b2!2 [c#4,f4,g#4,c#5]@2", Z: "~ a#3 f#4!3 b3 [b3,d#4,f#4,b4]@2",
  AA: "f#4 a#3 c#4 d#4!2 b3 [b3,d#4,f#4,b4]@2", AB: "f#2@3 a#2@3 c#3@2 f3@3 d3@3 a#2@2", AC: "d#3@3 f#3@3 a#3@2 b3@8",
  AD: "f#2 f#2@2 a#2 a#2@2 c#3@2 f3@3 d3@3 a#2@2",
  AE: "[d#3@2 a#3@2 c#4 b3 [c#4,d#4]@2 f#4 d#4 [f#4,g#4]@2 f#4@12 ~@2 c#4!6]/2", // C#sus2 F#sus2
  AF: "[c#5@4 c#5@4 b4@2 a#4@2 a#4@2 g#4@7 ~ a#4 b4 a#4@4 g#4@2 ~@2]/2", AG: "a#5 g#5 f#5@14",
  AH: "[f#2,c#3]!4 [f#2,c#3]@2 ~@2 [d3,d4]!4 [d3,d4]@2 ~@2", // F#5 D
  AI: "[d#3,d#4]!4 [d#3,d#4]@2 ~@2 [b2,b3]@2 [a#2,a#3]@2 [b2,b3]@2 [c3,c4]@2", // D# B A# B C
  AJ: "[d#4@2 a#4@2 c#5 [g#4,c#5] d#5!2 f#5 [d#5,f#5] g#5@2 f#5@12 ~@8]/2", // C#5 D#m
  AK: "[a#5@2 g#5@2 a#5@2 g#5@2 b5@2 a#5@2 g#5@2 g#5@7 ~ a#5 b5 a#5@4 g#5@4]/2", AL: "a#5 ~ g#5 f#5@13",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.7)

// other · electric guitar jazz · "PRG.CHANGE"
const electric_guitar_jazz = note(`<
  ~@7
  [~@2 a3 b3 c#4@4 ~@2 b3 c#4 d#4@4]
  [g#4 e4 c#4@2]
  [~@2 c#4 d#4 e4@4 ~@2 d#4 e4 f#4@4]
  [b4 g#4 e4@2]
  ~@57
>`).s("gm_electric_guitar_jazz").gain(0.08).pan(0.7)

// chords · string ensemble 2 · "PRG.CHANGE"
const string_ensemble_2 = note(`<
  A B C ~@12 D E F G H I H I J K L M N O P Q R S T U ~@4 V W V W X Y X Y X Y Z W AA Y X Y X Y X Y AB AC@2 AD AE ~@4
>`.pickRestart({
  A: "[c#2,c#3,e4,a4,e5]@4 d5 c#5 b4@2, ~ [d2,d3,f#4,a4]", B: "b4@6 c#5 d5 c#5@4 b4@4, [e2,e3,e4,g#4] [f2,f3,f4,g#4]",
  C: "g#4 f#4, [f#2,f#3,a4,c#5]", D: "[e4,a4,c#5] [e4,g#4,b4]", E: "[c#4,f#4,a4]", F: "[f#4,b4,d5] [f#4,a4,c#5]",
  G: "[e4,g#4,b4]", H: "[e4,a4,c#5] [d#4,f#4,b4]", I: "[e4,g#4,b4] [c#4,e4,a4]", J: "[e4,g#4,b4] [d#4,g#4,c5]",
  K: "[c#4,e4,g#4] [c#4,e4,a4]", L: "[e4,g#4,b4] [d#4,f#4,b4]", M: "[e4,g#4,b4] ~", N: "[g#4,c#5,e5] [g#4,b4,d#5]",
  O: "[f#4,a#4,c#5]", P: "[f#4,b4,d#5] [f#4,a#4,c#5]", Q: "[d#4,f#4,b4] [c#4,f#4,a#4]", R: "[c#4,f4,g#4] [f4,g#4,c#5]",
  S: "~ f5, [f4,g#4,c#5,c#6]", T: "[e4,a4,c#5]", U: "[c#4,f#4,a#4]", V: "[b4,d#5,f#5] [c#5,f5,g#5]",
  W: "[a#4,c#5,f#5] [b4,d#5,f#5]", X: "[a#4,c#5,f#5] [a#4,d5,f5]", Y: "[a#4,d#5,f#5] [b4,d#5,f#5]",
  Z: "[f#4,a#4,c#5] [f4,g#4,c#5]", AA: "[g#4,c#5,f#5] [a#4,d5,f5]", AB: "[a#4,c#5,f#5] [g#4,c#5,f5]",
  AC: "[[a#4,c#5]@2 [b4,d#5]@2 ~ c#5 [a#4,d5,f5]@2, f#5@5 ~@3]/2", AD: "[f#4,a#4,d#5]@7 [c#4,f4,g#4,c#5]",
  AE: "[d#4,f#4,b4]", // B
})).s("gm_string_ensemble_2").gain(0.24)

// chords · synth strings 1 · "PRG.CHANGE" · A B A E A B A E …
const synth_strings_1 = note(`<
  ~@7
  [[a3,c#4,e4] [b3,d#4,f#4], [a1,a2]]
  [[g#1,g#2,b3,e4,g#4] [a1,a2,c#4,e4,a4]]
  [[a3,c#4,e4] [b3,d#4,f#4], [a1,a2]]
  [[g#1,g#2,b3,e4,g#4] [a1,a2,c4,e4,a4]]
  ~@57
>`).s("gm_synth_strings_1").gain(0.28)

// chords · pad poly · "PRG.CHANGE" · A5 E5
const pad_poly = note("<~@14 [~@2 [a3,e4,a4] [b3,e4,b4]] ~@53>").s("gm_pad_poly").gain(0.24)

// chords · string ensemble 1 · "PRG.CHANGE" · E Esus2
const string_ensemble_1 = note("<~@26 [~@4 [g#4,b4,e5] f#5 [f#4,b4,e5] d#5] ~@41>").s("gm_string_ensemble_1").gain(0.24)

// chords · harpsichord · "PRG.CHANGE"
const harpsichord = note("<~@3 A B C D ~@4 E F G H ~@20 I J K L ~@29>".pickRestart({
  A: "[b4,c#5,e5] a4 [b4,c#5,e5] a4 [b4,e5] a4 [b4,e5] a4", // C#m7 E5
  B: "[g#4,a4,c#5] f#4 [g#4,a4,c#5] f#4 [g#4,a4,c#5] f#4 [g#4,a4,c#5] f#4", // Amaj7
  C: "[b4,d5] f#4 [b4,d5] f#4 [a4,c#5] f#4 [a4,c#5] f#4", D: "[g#4,b4] e4 [g#4,b4] [f#4,a4] [e4,g#4]@4",
  E: "[e5,g#5] b4 [e5,g#5] b4 [d#5,f#5] c5 [d#5,f#5] c5", // E D#m
  F: "[d#5,e5,g#5] c#5 [d#5,e5,g#5] c#5 [b4,c#5,e5] a4 [b4,c#5,e5] a4", // Emaj7 C#m7
  G: "[e5,g#5] b4 [e5,g#5] b4 [d#5,f#5] b4 [d#5,f#5] b4", H: "[e5,g#5] ~",
  I: "[c#5,d#5,f#5] b4 [c#5,d#5,f#5] b4 [c#5,f#5] b4 [c#5,f#5] b4", // D#m7 F#5
  J: "[a#4,b4,d#5] g#4 [a#4,b4,d#5] g#4 [a#4,b4,d#5] g#4 [a#4,b4,d#5] g#4", // Bmaj7
  K: "[c#5,e5] g#4 [c#5,e5] g#4 [b4,d#5] g#4 [b4,d#5] g#4", L: "[a#4,c#5] f#4 [a#4,c#5] [g#4,b4] [f#4,a#4]@4",
})).s("gm_harpsichord").gain(0.12).pan(0.3)

// other · string ensemble 1 · "PRG.CHANGE" · F# D D# B A# B C F# …
const string_ensemble_1_2 = note(`<
  ~@53
  [[f#1,f#2]!4 [f#1,f#2]@4 [d2,d3]!4 [d2,d3]@4]
  [[d#2,d#3]!4 [d#2,d#3]@4 [b1,b2]@2 [a#1,a#2]@2 [b1,b2]@2 [c2,c3]@2]
  [[f#1,f#2]!4 [f#1,f#2]@4 [d2,d3]!4 [d2,d3]@4]
  [[d#2,d#3]!4 [d#2,d#3]@4 [b1,b2]@2 [a#1,a#2]@2 [b1,b2]@2 [c2,c3]@2]
  [[f#1,f#2]!4 [f#1,f#2]@4 [d2,d3]!4 [d2,d3]@4]
  ~@10
>`).s("gm_string_ensemble_1").gain(0.31).pan(0.3)

// other · orchestra hit · "PRG.CHANGE"
const orchestra_hit = note("<~@60 [a#2 b2] [c#3!2 d3@2] [d#3@3 ~] ~@5>").s("gm_orchestra_hit").gain(0.4).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A ~@7 B@3 A B@3 A C@3 A D@2 C A C B A@2 ~@3 E C@3 B C B C A@3 B@3 A F@3 E F B E G@2 H A ~@4
>`.pickRestart({
  A: "x", B: "x!2", C: "x ~@3 x!2 ~@2", D: "x!2 ~@2 x ~@3", E: "x!2 ~@6", F: "x!2 ~@2 x!2 ~@2", G: "x!3 ~",
  H: "x ~@6 x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@15 A@3 B A@3 C A@3 C A C A C A D ~ E ~@4 A@3 F A C A G H@2 I A C ~ A G D ~ A B C ~@8
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@4", C: "~ x ~@2", D: "~@2 x ~@3 x!2", E: "~ x ~@6", F: "~@2 x ~@2 x!3", G: "~@2 x ~@4 x",
  H: "~@2 x!4 ~ x", I: "~@4 x ~@5 x!6",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@32 [~@13 x ~@2] ~@9 [~@13 x ~@2] ~@4 [~@9 x ~@6]!2 ~@19>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@7 A B ~ C ~@2 A ~@4 D ~@3 B ~@3 E ~@3 E ~@2 F G ~@3 H ~@7 I@3 ~@2 B J ~ K L M ~ B E ~@8
>`.pickRestart({
  A: "x", B: "~@14 x!2", C: "~@12 x!4", D: "~@12 x!3 ~", E: "~@7 x", F: "~@10 x ~ x!3 ~", G: "~@6 x!2",
  H: "~@9 x!4 ~ x ~", I: "~@3 x", J: "~@8 x!2 ~ x!5", K: "x!4 ~@4 x!5 ~@3", L: "~ x!3 ~@4 x!4 ~@4", M: "x!5 ~ x!10",
})).gain(0.48)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@26 A ~@6 B C ~@11 D ~@12 A ~@8>".pickRestart({
  A: "~@15 x", B: "~@11 x ~@3 x", C: "~@13 x ~@2", D: "~@11 x ~@4",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@15 A B@2 C A B@2 ~ D E F G ~@8 C ~@3 D H D H D I J K ~@3 L M ~ D ~@3 D N G ~@8
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x", D: "~@2 x!6", E: "x!8", F: "~@2 x ~ x ~ x!2", G: "~@2 x!2 ~@4", H: "x!6 ~@2",
  I: "~@2 x!3 ~@3", J: "~@2 x!4 ~@2", K: "x!2 ~@6", L: "~ x!7", M: "x!4 ~@4", N: "~ x!4 ~@3",
})).gain(0.4)

// drums · mid tom
// … 45 more lines

More by Asia