Strudelify
Take On Me cover art

Take On Me

Reel Big Fish

KeyG majorTempo169 bpm
0:00/0:00
// Take On Me — Reel Big Fish
// 169 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 158 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(169/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, A@4 for four bars: edit a riff to change every repeat.

// bass · slap bass 1 · "Slap Bass 2"
const bass = note(`<
  ~@8 A@2 B C D@2 E@2 F G H I F G H G H G H I F G H I F J K L M N O P Q N O R Q S@5 T U@4 V@2 W@2 X Y Z AA AB AC AD AE@3
  AF@4 AG AH AI AJ AK@3 AL AM AN AO AP AQ@2 AR@7 ~@3 AS AT@2 AU@2 AT@2 AU@2 AV@4 AT@2 AU@2 AW@2 AX@2 AY@2 AZ BA BB BC BD
  BE BB BF BG@2 BH BI BJ@2 BK BF BL@2 BM BN@2 BO BM BN@2 BP BM BN@2 BP BM BN@2 BQ@4 ~
>`.pickRestart({
  A: "[~@23 a2@3 ~@8 a1@3 ~@3 a1@2 ~ a1@2 ~ a2@2]/2", B: "~@2 a2@3 ~@2 a1@2 ~@7 a1@2 ~ a1@2 ~ a2@2",
  C: "~@10 a1@3 ~@4 a1@2 ~ a1@2 a2@2", D: "[~ a2@3 ~@3 a1@3 ~@13 a1@2 ~ a1@2 ~ a1@2 ~@13 d2@2 ~@2]/2",
  E: "[~@2 d2@2 ~@4 d2@2 ~ d2@8 ~@4 g1@2 ~ g1@2 ~ g1@2 ~@13 c2@2 ~@2]/2", F: "~@3 c2@2 ~@4 c2@2 ~ b1@9 ~@3",
  G: "a1@2 ~ a1@2 ~ a1@2 ~@13 d2@2 ~", H: "~@3 d2@2 ~@4 d2@2 ~ d2@8 ~@4", I: "g1@2 ~ g1@2 ~ g1@2 ~@13 c2@2 ~",
  J: "~ a1@2 ~ a1@2 ~ a1@2 ~@13 d2@2", K: "~@4 d2@2 ~@4 d2@2 ~ d2@8 ~@3", L: "~ e2@2 ~ e2@2 ~ e2@2 ~@13 c2@2",
  M: "~@4 c2@2 ~@4 e3@3 d3@3 c3@3 b2@3 a2@2", N: "~ g1@2 ~ g1@2 ~ g1@4 ~@2 g1@4 ~@2 g1@4 ~",
  O: "~ f#1@4 ~@2 f#1@5 ~ f#1@4 ~@2 f#1@5", P: "~ e1@4 ~@2 e1@4 ~@2 e1@5 ~ e1@5",
  Q: "~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2", R: "~ e1@4 ~@2 e1@5 ~ e1@5 ~ e1@5",
  S: "[~@2 g1@2 ~ g1@2 g1@2 ~@14 g1@2 ~ f#1@2 ~ f#1@2 ~ f#1@3 ~@12 f#1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~@13 c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ e2@2 ~ d2@2 ~ c2@2 ~ g1@4 ~@2 g1@4 ~@2 g1@3 ~@3 g1@4]/5",
  T: "~@2 f#1@5 ~ f#1@4 ~@2 f#1@5 ~ f#1@4",
  U: "[~@2 c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ d2@2 ~ d2 ~@2 d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ a1@2 ~ a1@2 ~ a1@2 ~@13 d2@2 ~@4 d2@2 ~@4 d2@2 ~ d2@8 ~@2]/4",
  V: "[~@2 g1@2 ~ g1@2 ~ g1@2 ~@13 c2@2 ~@4 c2@2 ~@4 c2@2 ~ b1@9 ~]/2",
  W: "[~@2 a1@2 ~ a1@2 ~ a1@2 ~@13 d2@2 ~@4 d2@2 ~@4 d2@2 ~ d2@8 ~@2]/2", X: "~@3 g1@2 ~ g1@2 ~ g1@2 ~@13",
  Y: "c2@2 ~@4 c2@2 ~@4 c2@2 ~ b1@9", Z: "~@3 a1@2 ~ a1@2 ~ a1@2 ~@13", AA: "d2@2 ~@4 d2@2 ~@4 d2@2 ~ d2@8 ~",
  AB: "~@3 e2@2 ~ e2@2 ~ e2@2 ~@13", AC: "c2@2 ~@4 c2@2 ~@4 e3@3 d3@3 c3@3 b2@3",
  AD: "a2@3 g1@2 ~ g1@2 ~ g1@4 ~@2 g1@4 ~@2 g1@3",
  AE: "[~@3 f#1@4 ~@2 f#1@5 ~ f#1@4 ~@2 f#1@5 ~ e1@4 ~@2 e1@4 ~@2 e1@5 ~ e1@6 c2@2 ~ c2 ~@2 c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~]/3",
  AF: "[c2@2 ~ g1@2 ~ g1@2 ~ g1@4 ~@2 g1@5 ~ g1@5 ~ f#1@4 ~@2 f#1@5 ~ f#1@4 ~@2 f#1@5 ~ e1@4 ~@2 e1@5 ~ e1@5 ~ e1@5 ~ c2@2 ~ c2 ~@2 c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~]/4",
  AG: "~ c2@2 ~ g1@2 ~ g1@2 ~ g1@2 ~@12", AH: "~ g1@2 ~ f#1@2 ~ f#1@2 ~ f#1@3 ~@11",
  AI: "~ f#1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~@12", AJ: "~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ e2@2 ~ d2@2",
  AK: "[~ c2@2 ~ g1@4 ~@2 g1@4 ~@2 g1@3 ~@3 g1@4 ~@2 f#1@5 ~ f#1@4 ~@2 f#1@5 ~ f#1@5 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2]/3",
  AL: "~ c2@2 ~ d2@2 ~ d2 ~@2 d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2", AM: "~ d2@2 ~ b1@2 ~@10 b0@2 ~@4 f#1@2",
  AN: "~ b0 ~@2 b1@2 ~ b1@2 ~@4 b0@2 ~@7 b1@2", AO: "~ b0 ~@2 f2@2 ~@10 f1@2 ~@4 c2@2",
  AP: "~ f1 ~@2 f2@2 ~ f2@2 ~@4 f1@2 ~@7 f2@2",
  AQ: "[~ f1 ~@2 b1@2 ~@11 b0@2 ~@4 f#1@2 b0 ~@2 b1@2 ~ b1@2 ~@4 b0@2 ~@7 b1@2]/2",
  AR: "[~@2 b0 ~@2 f2@2 ~@10 f1@2 ~@4 c2@2 ~ f1 ~@2 f2@2 ~ f2@2 ~@4 f1@2 ~@7 f2@2 ~ f1 ~@2 a2@2 ~@10 a1@2 ~@4 e2@2 ~ a1 ~@2 a2@2 ~ a2@2 ~@4 a1@2 ~@7 a2@2 ~ a1 ~@2 d2@2 ~@10 d1@2 ~@4 a1@2 ~ d1 ~@2 d2 ~@2 d2 ~@2 d1@4 ~@2 d1@4 ~@2 d1@4 ~@21]/7",
  AS: "~@6 a1@2 ~ a1@2 ~ a1@2 ~@10", AT: "[~@3 d2@2 ~@4 d2@2 ~@4 d2@2 ~ d2@8 ~@4 g1@2 ~ g1@2 ~ g1@2 ~@10]/2",
  AU: "[~@3 c2@2 ~@4 c2@2 ~@4 c2@2 ~ b1@9 ~@3 a1@2 ~ a1@2 ~ a1@2 ~@10]/2",
  AV: "[~@3 d2@2 ~@4 d2@2 ~@4 d2@2 ~ d2@8 ~@4 a1@2 ~ a1@2 ~ a1@2 ~@10]/2",
  AW: "[~@4 d2@2 ~@4 d2@2 ~@4 d2@2 ~ d2@8 ~@4 g1@2 ~ g1@2 ~ g1@2 ~@9]/2",
  AX: "[~@4 c2@2 ~@4 c2@2 ~@4 c2@2 ~ b1@9 ~@3 a1@2 ~ a1@2 ~ a1@2 ~@9]/2",
  AY: "[~@4 d2@2 ~@4 d2@2 ~@4 d2@2 ~ d2@8 ~@4 e2@2 ~ e2@2 ~ e2@2 ~@9]/2", AZ: "~@4 c2@2 ~@4 c2@2 ~@4 e3@3 d3@3 c3@2",
  BA: "~ b2@3 a2@3 g1@2 ~ g1@2 ~ g1@4 ~@2 g1@4 ~", BB: "~ g1@4 ~@2 f#1@4 ~@2 f#1@5 ~ f#1@4 ~",
  BC: "~ f#1@5 ~ e1@4 ~@2 e1@4 ~@2 e1@5", BD: "~ e1@5 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2",
  BE: "~ c2@2 ~ c2@2 ~@2 g1@2 g1@2 ~ g1@4 ~@2 g1@5", BF: "~@2 f#1@5 ~ e1@4 ~@2 e1@5 ~ e1@4",
  BG: "[~@2 e1@5 ~ c2@2 ~ c2@2 ~ c2 ~@2 c2@2 ~ c2@2 ~ c2@2 ~ c2 ~@2 c2@2 ~ g1@2 ~ g1@2 ~ g1@2 ~@8]/2",
  BH: "~@5 g1@2 ~ f#1@2 ~ f#1@2 ~ f#1@3 ~@7", BI: "~@5 f#1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~@8",
  BJ: "[~@5 c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ e2@2 ~ d2@2 ~ c2@2 ~ g1@2 ~ g1@2 ~ g1@4 ~@2 g1@4]/2",
  BK: "~@2 g1@5 ~ f#1@4 ~@2 f#1@5 ~ f#1@4",
  BL: "[~@2 e1@5 ~ c2@2 ~ c2@2 ~ c2 ~@2 c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ g1@2 ~ g1@2 ~ g1@4 ~@2 g1@4]/2",
  BM: "~@3 g1@4 ~@2 f#1@4 ~@2 f#1@5 ~ f#1@3",
  BN: "[~@3 f#1@5 ~ e1@4 ~@2 e1@4 ~@2 e1@5 ~ e1@5 ~ c2@2 ~ c2@2 ~ c2 ~@2 c2@2 ~ c2@2 ~]/2",
  BO: "c2@2 ~ c2 ~@2 c2@2 ~ g1@2 ~ g1@2 ~ g1@4 ~@2 g1@3", BP: "c2@2 ~ c2@2 ~ c2@2 ~ g1@2 ~ g1@2 ~ g1@4 ~@2 g1@3",
  BQ: "[~ c2@2 ~ c2 ~ c2@2 ~@2 g1@2 g1@2 ~@2 g1@4 ~@2 g1@4 ~@2 g1@4 ~@2 f#1@4 ~@2 f#1@5 ~ f#1@4 ~@2 f#1@5 ~ e1@4 ~@2 e1@4 ~@2 e1@5 ~ e1@5 ~@15]/4",
})).s("gm_slap_bass_1").gain(0.71)

// other · overdriven guitar · "Elec Guitar 1"
const overdriven_guitar = note(`<
  ~@4 A@5 ~ B@3 C D E F C G H I J K L M ~@24 N O P Q ~@24 R S T U V@2 ~@2 W X@2 Y@3 Z@2 AA AB@4 AC@2 AD AE AF AG AD AH
  AI AJ AK ~@49
>`.pickRestart({
  A: "[~@80 g4@39 ~, ~@23 [c5,e5,a5]@96 ~, ~@12 [c6,e6]@47 ~, ~@71 b4@18 ~@31]/5", B: "[~@23 b3@9 b4@9 g4@26 ~@4 e5]/3",
  C: "~@2 e5@2 ~ c5@2 ~ a4@2 ~@4 a4@2 ~@4 d5@2 ~@2", D: "~@2 d5@2 ~@4 d5@2 ~ f#5 ~@2 f#5@2 ~ g5@2 ~ a5@2 ~ g5",
  E: "~@2 g5@2 ~ g5@2 ~ d5@2 ~@4 c5 ~@5 e5@2 ~@2", F: "~@2 e5@2 ~@4 e5@2 ~ d5@2 ~ d5@2 ~ e5 ~@2 d5@2 ~ e5",
  G: "~@2 d5@2 ~@4 d5@2 ~@2 f#5@2 ~ f#5 ~@2 g5 ~@2 a5@2 ~", H: "g5 ~@2 g5@2 ~ g5 ~@2 d5 ~@5 c5 ~@5 e5 ~@2",
  I: "~@3 e5@2 ~@4 e5@2 ~ d5 ~@2 d5@2 ~ e5@2 ~ d5@2 ~", J: "e5 ~@2 e5@2 ~ c5@2 ~ a4@2 ~@4 a4@2 ~@4 d5@2 ~",
  K: "~@3 d5@2 ~@4 d5@2 ~ f#5@2 ~ f#5@2 ~ g5@2 ~ a5@2 ~", L: "g5 ~@2 g5@2 ~ g5 ~@2 e5@2 ~@4 c5 ~@5 e5@2 ~",
  M: "~@3 e5@2 ~@4 e5@2 ~ d5@2 ~ d5@2 ~ d5 ~@5", N: "~ g4@4 ~@3, ~ [b4,d5,g5]@6 ~@5",
  O: "~ [f#5,a5]@4 ~@3, ~ [a4,d5]@6 ~@5", P: "~ [c5,e5]@4 ~@3, ~ [g5,c6]@6 ~@5", Q: "~ [f#5,d6]@4 ~@3, ~ [d5,a5]@6 ~@5",
  R: "~@5 [g4,g5]@12 ~@7, ~ [b4,d5]@3 ~@2", S: "~@5 [f#5,a5]@12 ~@7, ~ [a4,d5]@3 ~@2",
  T: "~@5 [c5,e5]@12 ~@7, ~ [g5,c6]@3 ~@2", U: "~@5 [f#5,d6]@12 ~@7, ~ [d5,a5]@3 ~@2",
  V: "[~ [f#4,f#5]@4 ~@3, ~ d5@6 ~@5, ~@5 b4@24 ~@19]/2", // F#
  W: "~@4 f#5 ~ f5 e5 ~ d#5 d5 ~ d#5 e5 ~ f5 ~ f#5 f5 ~ e5 d#5 d5 ~",
  X: "d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5",
  Y: "[d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ [b4,b5]@12 [b4,f#5,b5] f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5, ~@32 [c5,c6]@26 ~@7 [g4,g5]@7]/3", // B B5 C G
  Z: "[d#5 ~ e5 f5 ~@2 f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5 d#5 ~ e5 f5 ~ f#5 f5 ~ e5 d#5 ~ d5, ~@5 [g4,f#5,g5]@2 ~ [a4,a5]@38 ~@2]/2", // Gmaj7 A
  AA: "d#5 ~ e5 ~ f5 e5 ~@2 e5@2 ~ c5@2 ~ a4@2 ~@4 a4@2 ~@2",
  AB: "[~@2 d5@2 ~@4 d5@2 ~@4 d5@2 ~ f#5@2 ~ f#5@2 ~ g5@2 ~ a5@2 ~ e5 ~@2 e5@2 ~ c5@2 ~ a4@2 ~@4 a4@2 ~@2]/2",
  AC: "[~@2 d5@2 ~@4 d5@2 ~@4 d5@2 ~ f#5@2 ~ f#5@2 ~ g5@2 ~@2 a5@2 ~ g5 ~@2 g5@2 ~ g5 ~@2 d5@2 ~@4 c5 ~@2]/2",
  AD: "~@3 e5@2 ~@4 e5@2 ~@4 e5@2 ~ d5@2 ~ d5@2 ~", AE: "e5@2 ~ d5@2 ~ e5 ~@2 e5@2 ~ c5@2 ~ a4 ~@5 a4@2 ~",
  AF: "~@3 d5@2 ~@4 d5@2 ~@4 d5@2 ~ f#5@2 ~ f#5 ~@2", AG: "g5@2 ~ a5@2 ~ g5 ~@2 g5 ~@2 g5 ~@2 d5 ~@5 c5 ~@2",
  AH: "e5@2 ~ d5@2 ~ e5 ~@5 c5@2 ~ a4@2 ~@4 a4@2 ~", AI: "~@3 d5@2 ~@4 d5@2 ~@4 d5@2 ~@4 f#5@2 ~",
  AJ: "g5@2 ~ a5@2 ~ g5 ~@2 g5@2 ~ g5 ~@8 c5 ~@2", AK: "~@18 d5@2 ~ d5@2 ~",
})).s("gm_overdriven_guitar").gain(0.55).pan(0.3)

// chords · string ensemble 1 · "String Sect 3"
const string_ensemble_1 = note(`<
  ~@8 A@8 B@3 C D E F E F G H I J G H I J K L M N O@5 P Q@7 ~@3 R@7 S@7 T@8 U@3 ~@5 V ~ W@2 X@7 ~@3 Y@8 Z@8 AA@8 AB@4
  AC@8 AD@8 AE@8 AF@4 AG@5
>`.pickRestart({
  A: "[~@23 [e3,a3,c4]@96 [a4,c5,e5]@24 [a4,d5,f#5]@24 [b4,d5,g5]@24 [c5,e5,g5]]/8", // Am D G C
  B: "[~@23 [a4,c5,e5]@24 ~ f#5@24, ~@47 [a4,d5]@24 ~]/3", C: "[b4,d5,g5]", D: "[c5,e5,g5]", E: "[a4,c5,e5]",
  F: "[a4,d5,f#5]", G: "[a3,c4,e4]", H: "[a3,d4,f#4]", I: "[g3,b3,d4]", J: "[g3,c4,e4]", K: "~ [a3,c4,e4]@23",
  L: "~ [a3,d4,f#4]@23", M: "~ [b3,e4,g4]@23", N: "~ [c4,e4,g4]@23",
  O: "[~ [b3,g4]@24 [a3,f#4]@24 [b3,e4,g4]@48 [d4,g4,b4]@23, ~ d4@48 ~@71]/5", P: "~ [f#4,a4,d5]@23",
  Q: "[~ [g4,b4,e5]@48 ~ [b2,b3]@24 [d3,d4]@24 [e3,e4]@48 ~@22]/7", // Em B D E
  R: "[~ [a3,c4,e4]@12 [a3,d4,f#4]@12 [g3,b3,d4]@12 [g3,c4,e4]@12 [a3,c4,e4]@12 [a3,d4,f#4]@12 [g3,b3,d4]@11]/7", // Am D G C Am D G
  S: "[~ [g3,c4,e4]@8 [a3,c4,e4]@8 [a3,d4,f#4]@8 [b3,e4,g4]@8 [c4,e4,g4]@8 [b3,g4]@8 [a3,f#4]@7, ~@41 d4@15]/7", // C Am D Em C Em D
  T: "[~@3 [b3,e4,g4]@48 [d4,g4,b4]@24 [f#4,a4,d5]@24 [g4,b4,e5]@48 ~ [b2,b3]@24 [d3,d4]@20]/8", // Em G D Em B D
  U: "[~ [e3,e4]@12 ~@5]/3", V: "~@2 [f4,a4]@9 ~", W: "[~@4 b3 ~@11 f#3@12 d4@18 ~ f#4, ~ [b1,b2]@11, ~@7 b3@41]/2",
  X: "[~@5 [f1,f2,c4,f4]@48 [a1,a2,c4,e4,a4]@48 [d2,d3,d4,f#4,a4]@48 ~@19]/7", // F5 Am D
  Y: "[~ [a4,c5,e5]@4 [a4,d5,f#5]@4 [b4,d5,g5]@4 [c5,e5,g5]@4 [a4,c5,e5]@4 [a4,d5,f#5]@4 [b4,d5,g5]@4 [c5,e5,g5]@3]/8", // Am D G C Am D G C
  Z: "[~ [a4,c5,e5]@4 [a4,d5,f#5]@4 [a4,c5,e5]@4 [a4,d5,f#5]@4 [a3,c4,e4]@4 [a3,d4,f#4]@4 [g3,b3,d4]@4 [g3,c4,e4]@3]/8", // Am D Am D Am D G C
  AA: "[~@7 [a3,c4,e4]@24 [a3,d4,f#4]@24 [g3,b3,d4]@24 [g3,c4,e4]@24 [a3,c4,e4]@24 [a3,d4,f#4]@24 [b3,e4,g4]@24 [c4,e4,g4]@17]/8", // Am D G C Am D Em C
  AB: "[~@7 [b3,g4]@24 [a3,f#4]@24 [b3,e4,g4]@41, ~@7 d4@48 ~@41]/4", // Em D Em
  AC: "[~ g4@3 [f#4,a4,d5]@3 [g4,b4,e5]@6 [b2,b3]@3 [d3,d4]@3 [e3,e4]@5, ~@7 [d4,b4]@24 ~@161]/8", // D Em B D E G
  AD: "[~ [b3,g4]@3 [a3,f#4]@3 [b3,e4,g4]@6 [d4,g4,b4]@3 [f#4,a4,d5]@3 [g4,b4,e5]@5, ~ d4@6 ~@17]/8", // Em D Em G D Em
  AE: "[~@3 [b3,g4]@8 [a3,f#4]@8 [b3,e4,g4]@16 [b3,g4]@8 [a3,f#4]@8 [b3,e4,g4]@13, ~@3 d4@16 ~@16 d4@16 ~@13]/8", // Em D Em D Em
  AF: "[~@3 [d4,g4,b4]@8 [f#4,a4,d5]@8 [g4,b4,e5]@13]/4", // G D Em
  AG: "[~@5 [b3,g4]@12 [a3,f#4]@12 [b3,e4,g4]@24 ~@7, ~@5 d4@24 ~@31]/5", // Em D Em
})).s("gm_string_ensemble_1").gain(0.15).pan(0.6)

// other · piano · "Doctor Solo"
const piano = note("<~@12 A@2 B@2 C@2 D E F G H I J ~@68 K L@4 M@2 N O P Q R O P S N T ~@48>".pickRestart({
  A: "[~@23 [e5,e6]@2 ~ [e5,e6]@3 [c5,c6]@3 [a4,a5]@3 ~@3 [a4,a5]@3 ~@3 [d5,d6]@3 ~]/2", // E C A D
  B: "[~@2 [d5,d6]@3 ~@3 [d5,d6]@3 [f#5,f#6]@2 ~ [f#5,f#6]@3 [g5,g6]@3 [a5,a6]@3 [g5,g6]@2 ~ [g5,g6]@3 [g5,g6]@2 ~ [d5,d6]@3 ~@3 [c5,c6]@2 ~@4 [e5,e6]@3 ~]/2", // D F# G A G D C E
  C: "[~@2 [e5,e6]@3 ~@3 [e5,e6]@3 [d5,d6]@3 [d5,d6]@3 [e5,e6]@2 ~ [d5,d6]@3 [e5,e6]@2 ~ [e5,e6]@3 [c5,c6]@3 [a4,a5]@3 ~@3 [a4,a5]@3 ~@3 [d5,d6]@3 ~]/2", // E D E D E C A D
  D: "~@2 [d5,d6]@3 ~@3 [d5,d6]@3 ~ [f#5,f#6]@2 [f#5,f#6]@2 ~@2 [g5,g6]@2 [a5,a6]@3 ~", // D F# G A
  E: "[g5,g6]@2 ~ [g5,g6]@2 ~ [g5,g6]@2 ~ [d5,d6]@2 ~@4 [c5,c6]@2 ~@4 [e5,e6]@2 ~", // G D C E
  F: "~@3 [e5,e6]@2 ~@4 [e5,e6]@3 [d5,d6]@2 ~ [d5,d6]@3 [e5,e6]@2 ~ [d5,d6]@3", // E D E D
  G: "[e5,e6]@2 ~ [e5,e6]@3 [c5,c6]@3 [a4,a5]@3 ~@3 [a4,a5]@3 ~@3 [d5,d6]@3", // E C A D
  H: "~@3 [d5,d6]@3 ~@3 [d5,d6]@3 [f#5,f#6]@2 ~ [f#5,f#6]@3 [g5,g6]@3 [a5,a6]@3", // D F# G A
  I: "[g5,g6]@2 ~ [g5,g6]@3 [g5,g6]@2 ~ [e5,e6]@3 ~@3 [c5,c6]@2 ~@4 [e5,e6]@3", // G E C E
  J: "~@3 [e5,e6]@3 ~@3 [e5,e6]@3 [d5,d6]@3 [d5,d6]@3 [d5,d6]@2 ~@4", // E D
  K: "~@5 [e5,e6]@2 ~ [e5,e6]@3 [c5,c6]@3 [a4,a5]@3 ~@3 [a4,a5]@3 ~", // E C A
  L: "[~@2 [d5,d6]@3 ~@3 [d5,d6]@3 ~@3 [d5,d6]@3 [f#5,f#6]@2 ~ [f#5,f#6]@3 [g5,g6]@3 [a5,a6]@3 [e5,e6]@2 ~ [e5,e6]@3 [c5,c6]@3 [a4,a5]@3 ~@3 [a4,a5]@3 ~]/2", // D F# G A E C A
  M: "[~@2 [d5,d6]@3 ~@3 [d5,d6]@3 ~@3 [d5,d6]@3 [f#5,f#6]@2 ~ [f#5,f#6]@3 [g5,g6]@3 [a5,a6]@3 [g5,g6]@2 ~ [g5,g6]@3 [g5,g6]@2 ~@2 [d5,d6]@2 ~@4 [c5,c6]@2 ~]/2", // D F# G A G D C
  N: "~@3 [e5,e6]@3 ~@3 [e5,e6]@3 ~@3 [e5,e6]@2 ~ [d5,d6]@3 [d5,d6]@3", // E D
  O: "[e5,e6]@2 ~ [d5,d6]@3 [e5,e6]@2 ~ [e5,e6]@3 [c5,c6]@3 [a4,a5]@2 ~@4 [a4,a5]@3", // E D E C A
  P: "~@3 [d5,d6]@3 ~@3 [d5,d6]@3 ~@3 [d5,d6]@3 [f#5,f#6]@3 [f#5,f#6]@2 ~", // D F#
  Q: "[g5,g6]@2 ~ [a5,a6]@2 ~ [g5,g6]@2 ~ [g5,g6]@2 ~ [g5,g6]@2 ~ [d5,d6]@2 ~@4 [c5,c6]@2 ~", // G A G D C
  R: "~@3 [e5,e6]@2 ~@4 [e5,e6]@2 ~@4 [e5,e6]@3 [d5,d6]@2 ~ [d5,d6]@3", // E D
  S: "[g5,g6]@3 [a5,a6]@3 [g5,g6]@2 ~ [g5,g6]@2 ~ [g5,g6]@2 ~ [e5,e6]@3 ~@3 [c5,c6]@2 ~", T: "[d5,d6] ~@11",
})).s("gm_piano").gain(0.38).pan(0.6)

// other · harpsichord · "Harpsichord 2"
const harpsichord = note(`<
  ~@21 A B C D E F G H E F G H I J K L ~@16 M N O P M Q R S T U V W X ~@43 Y Z AA AB AC AD AE AF AG AD AH AI AJ ~@36
>`.pickRestart({
  A: "[e5,e6]@7 ~", B: "[f#5,f#6]", C: "[g5,g6]@11 ~", D: "[a5,a6]",
  E: "a2 ~@2 a2 ~@2 c3 ~@2 e3 ~@2 a3 ~@2 e3 ~@2 c3 ~@2 a2 ~@2",
  F: "d3 ~@2 d3 ~@2 f#3 ~@2 a3 ~@2 d4 ~@2 a3 ~@2 f#3 ~@2 d3 ~@2",
  G: "g2 ~@2 g2 ~@2 b2 ~@2 d3 ~@2 g3 ~@2 d3 ~@2 b2 ~@2 g2 ~@2",
  H: "g2 ~@2 g2 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 e3 ~@2 c3 ~@2 g2 ~@2",
  I: "~ a2 ~@2 a2 ~@2 c3 ~@2 e3 ~@2 a3 ~@2 e3 ~@2 c3 ~@2 a2 ~",
  J: "~ d3 ~@2 d3 ~@2 f#3 ~@2 a3 ~@2 d4 ~@2 a3 ~@2 f#3 ~@2 d3 ~",
  K: "~ e3 ~@2 e3 ~@2 g3 ~@2 b3 ~@2 e4 ~@2 b3 ~@2 g3 ~@2 e3 ~",
  L: "~ c3 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 c4 ~@2 g3 ~@2 e3 ~@2 c3 ~",
  M: "~@2 a2 ~@2 a2 ~@2 c3 ~@2 e3 ~@2 a3 ~@2 e3 ~@2 c3 ~@2 a2",
  N: "~@2 d3 ~@2 d3 ~@2 f#3 ~@2 a3 ~@2 d4 ~@2 a3 ~@2 f#3 ~@2 d3",
  O: "~@2 g2 ~@2 g2 ~@2 b2 ~@2 d3 ~@2 g3 ~@2 d3 ~@2 b2 ~@2 g2",
  P: "~@2 g2 ~@2 g2 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 e3 ~@2 c3 ~@2 g2",
  Q: "~@2 d3 ~@2 d3 ~@2 f#3 ~@2 a3 ~@2 d4 ~@3 a3 ~ f#3 ~@3",
  R: "d3 ~@2 g2 ~@2 g2 ~@2 b2 ~@2 d3 ~@2 g3 ~@2 d3 ~@2 b2 ~@2",
  S: "g2 ~@2 g2 ~@2 g2 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 e3 ~@2 c3 ~@2",
  T: "g2 ~@2 a2 ~@2 a2 ~@2 c3 ~@2 e3 ~@2 a3 ~@2 e3 ~@2 c3 ~@2",
  U: "a2 ~@2 d3 ~@2 d3 ~@2 f#3 ~@2 a3 ~@2 d4 ~@2 a3 ~@2 f#3 ~@2",
  V: "d3 ~@2 e3 ~@2 e3 ~@2 g3 ~@2 b3 ~@2 e4 ~@2 b3 ~@2 g3 ~@2",
  W: "e3 ~@2 c3 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 c4 ~@2 g3 ~@2 e3 ~@2", X: "c3 ~@23",
  Y: "~@6 a2 ~@2 a2 ~@2 c3 ~@2 e3 ~@2 a3 ~@2 e3 ~@2", Z: "c3 ~@2 a2 ~@2 d3 ~@2 d3 ~@2 f#3 ~@2 a3 ~@2 d4 ~@2 a3 ~@2",
  AA: "f#3 ~@2 d3 ~@2 g2 ~@2 g2 ~@2 b2 ~@2 d3 ~@2 g3 ~@2 d3 ~@2",
  AB: "b2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 e3 ~@2",
  AC: "c3 ~@2 g2 ~@2 a2 ~@3 a2 ~@2 c3 ~@2 e3 ~@2 a3 ~@2 e3 ~",
  AD: "~ c3 ~@2 a2 ~@2 d3 ~@2 d3 ~@2 f#3 ~@2 a3 ~@2 d4 ~@2 a3 ~",
  AE: "~ f#3 ~@2 d3 ~@2 g2 ~@2 g2 ~@2 b2 ~@2 d3 ~@2 g3 ~@2 d3 ~",
  AF: "~ b2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 e3 ~",
  AG: "~ c3 ~@2 g2 ~@2 a2 ~@2 a2 ~@2 c3 ~@2 e3 ~@2 a3 ~@2 e3 ~",
  AH: "~ f#3 ~@2 d3 ~@2 e3 ~@2 e3 ~@2 g3 ~@2 b3 ~@2 e4 ~@2 b3 ~",
  AI: "~ g3 ~@2 e3 ~@2 c3 ~@2 c3 ~@2 e3 ~@2 g3 ~@2 c4 ~@2 g3 ~", AJ: "~ e3 ~@2 c3 ~@19",
})).s("gm_harpsichord").gain(0.54).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A B@2 C@15 D E@15 F@3 G@8 H@2 I J K@12 L@4 M@8 N O P Q R S@7 T@8 ~@3 U T V@17 W@6 X G@6 Y Z AA@2 Y AB Y@4 M@17 Q AC ~
>`.pickRestart({
  A: "~@11 x", B: "~@10 x ~@2 x ~@8 x ~", C: "~@11 x ~@2 x ~@8 x", D: "~@11 x ~@2 x ~@9", E: "x ~@3 x!2 ~@2",
  F: "~ x ~@11 x ~@2 x ~@7", G: "~ x ~@5 x ~@5 x ~@5 x ~@4", H: "~ x ~@2 x ~@2 x ~@15 x",
  I: "~@2 x ~@2 x ~@2 x ~@11 x ~@3", J: "~@2 x ~@5 x ~@5 x ~@5 x ~@2 x", K: "~@2 x ~@11 x ~@2 x ~@6",
  L: "~ x ~@3 x!2 ~", M: "~ x ~ x ~ x ~ x", N: "~@3 x ~@3 x ~@2 x ~@13", O: "~ x ~@2 x ~@2 x ~@2 x ~@13",
  P: "~ x ~@2 x ~@2 x ~@2 x ~@11 x ~", Q: "~@2 x ~@2 x ~@2 x ~@2 x", R: "~ x ~@2 x ~@11 x ~@2 x ~@4",
  S: "~@4 x ~@11 x ~@2 x ~@4", T: "~@5 x ~@11 x ~@2 x ~@3", U: "~@7 x ~@4", V: "~@2 x ~@3 x!2",
  W: "~@7 x ~@11 x ~@2 x ~", X: "~@7 x ~@5 x ~@5 x ~@4", Y: "~ x ~@2 x ~@2 x ~@2 x ~", Z: "~@2 x ~@5 x ~@2 x ~@2 x ~@9",
  AA: "~@5 x ~@2 x ~@2 x ~@2 x ~@9", AB: "~@2 x ~@2 x ~@2 x ~@5 x ~@5 x ~@3", AC: "~ x ~@4",
})).gain(0.78)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@2 B@17 C@4 D C@9 E@2 F G@8 H@2 I J K@12 L@4 M N@7 O@3 P Q R@10 S@5 ~@3 T U S@2 V W@8 X W@5 Y@6 Z AA@2 AB@5 AC AD@2
  AE AF AB@4 AG@17 AH AI ~
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@3", B: "~@5 x ~@5 x ~@5 x ~@6", C: "~ x!3", D: "~@2 x ~ x ~ x!2", E: "~@7 x ~@5 x ~@5 x ~@4",
  F: "~@7 x ~@5 x ~@5 x ~@2 x ~", G: "~@7 x ~@11 x ~@4", H: "~@13 x ~@10", I: "~@14 x ~@8 x",
  J: "~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x", K: "~@4 x ~@2 x ~@2 x ~", L: "~@3 x ~ x ~ x", M: "x ~@2 x ~@3 x",
  N: "~@3 x ~@3 x", O: "~@2 x", P: "~ x ~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~", Q: "~ x ~@8 x ~@5 x ~@5 x ~",
// … 39 more lines

More by Reel Big Fish