Strudelify

Poison Arrow

ABC

KeyG majorTempo126 bpm
0:00/0:00
// Poison Arrow — ABC
// 126 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 "Sax Echo" tenor sax (copy of ch 3 "Sax" tenor sax, 0.5 beats late)
// note: Full arrangement: all 107 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · "Piano 3"
const piano = note(`<
  A@4 B@2 C@2 D@2 E F G H@2 I@2 J@2 K@2 L@2 M@2 N@8 O@8 P@4 Q@2 R@2 S@4 T@2 U@8 V@8 W@8 X@4 Y@6 Z@4 AA@2 AB@2 AC@2 AD@2
  AE@2 AF@2 AG AH
>`.pickRestart({
  A: "[~@31 g3@61 ~@3 g4@31 ~@2, ~@28 e4@61 ~@3 e5@31 ~@5, ~@29 d4@61 ~@3 d5@31 ~@4, ~@30 b3@61 ~@3 b4@31 ~@3]/4",
  B: "[[c#5,e5,a5]@11 ~ [a4,d5,f#5]@15 ~ [g4,b4,d5,e5]@31 ~@5]/2", // A D Em7
  C: "[[a4,d5,f#5]@11 ~@2 [c#5,e5,a5]@15 ~ [g4,b4,d5,e5]@29 ~@6]/2", // D A Em7
  D: "[~ [c#5,e5,a5]@11 ~ [a4,d5,f#5]@15 ~ [g4,b4,d5,e5]@31 ~@4]/2", // A D Em7
  E: "~ a1@3 ~@2 a2@3 ~ a#1@3 ~ a#2@3 ~ b1@3 ~@2 b2@3 ~ b2@3 ~@2, ~ [a4,d5,f#5]@12 ~ [c#5,e5,a5]@18", // D A
  F: "~@3 [g4,b4,e5]@29", G: "~@3 [c#5,e5,a5]@11 ~ [a4,d5,f#5]@15 ~@2",
  H: "[[g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~ [c#5,e5,a5]@15 ~]/2", // Em D A
  I: "[[g4,b4,e5]@35 ~@2 [c#5,e5,a5]@11 ~ [a4,d5,f#5]@15]/2", // Em A D
  J: "[~ [g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~@2 [c#5,e5,a5]@14]/2", // Em D A
  K: "[~@2 [g4,b4,e5]@35 ~ [c#5,e5,a5]@11 ~ [a4,d5,f#5]@14]/2", // Em A D
  L: "[~@3 [g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~ [c#5,e5,a5]@13]/2", // Em D A
  M: "[~@3 [g4,b4,e5]@35 ~@2 [c#5,e5,a5]@11 ~ [a4,d5,f#5]@12]/2", // Em A D
  N: "[~@4 [g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~@2 [c#5,e5,a5]@19 ~ [d3,g3,b3,d4,g4,b4]@29 ~@3 [d3,f#3,a3,d4,f#4,a4]@29 ~@3 [b2,e3,g3,b3,e4,g4]@29 ~@3 [d3,f#3,a3,d4,f#4,a4]@29 ~@3 [d3,g3,b3,d4,g4,b4]@29 ~@3 [d3,f#3,a3,d4,f#4,a4]@14 ~@2 [d3,f#3,a3,d4,f#4,a4]@6 ~]/8", // Em D A G D Em D G …
  O: "[~ [c3,d#3,f#3,c4,d#4,f#4]@6 ~@2 [g4,b4,e5]@31 ~ [a4,d5,f#5]@11 ~ [c#5,e5,a5]@15 ~@2 [g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~ [c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~@2 [a4,d5,f#5]@11 ~ [c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~@7 [a2,a3]@2 ~@3 [a2,a3]@2 ~@3 [a2,a3]@2 ~@3]/8", // Cdim Em D A Em D A Em …
  P: "[~@7 [g4,b4,e5]@35 ~ [c#5,e5,a5]@11 ~@2 [a4,d5,f#5]@15 ~ [g4,b4,e5]@35 ~ [c#5,e5,a5]@11 ~ [a4,d5,f#5]@8]/4", // Em A D Em A D
  Q: "[~@9 [g4,b4,e5]@35 ~ [c#5,e5,a5]@11 ~ [a4,d5,f#5]@7]/2", // Em A D
  R: "[~@9 [g4,b4,e5]@35 ~@2 [c#5,e5,a5]@11 ~ [a4,d5,f#5]@6]/2", // Em A D
  S: "[~@10 [g4,b4,e5]@35 ~ [c#5,e5,a5]@11 ~@2 [a4,d5,f#5]@15 ~ [g4,b4,e5]@35 ~ [c#5,e5,a5]@11 ~ [a4,d5,f#5]@5]/4", // Em A D Em A D
  T: "[~@12 [g4,b4,e5]@35 ~ [c#5,e5,a5]@11 ~ [a4,d5,f#5]@4]/2", // Em A D
  U: "[~@12 [g4,b4,e5]@35 ~@2 [a4,d5,f#5]@11 ~ [c#5,e5,a5]@19 ~ [d3,g3,b3,d4,g4,b4]@29 ~@3 [d3,f#3,a3,d4,f#4,a4]@29 ~@3 [b2,e3,g3,b3,e4,g4]@29 ~@3 [d3,f#3,a3,d4,f#4,a4]@29 ~@3 [d3,g3,b3,d4,g4,b4]@29 ~@3 [d3,f#3,a3,d4,f#4,a4]@14 ~]/8", // Em D A G D Em D G …
  V: "[~ [d3,f#3,a3,d4,f#4,a4]@6 ~@2 [c3,d#3,f#3,c4,d#4,f#4]@6 ~@2 [g4,b4,e5]@31 ~ [a4,d5,f#5]@11 ~@2 [c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~ [c#5,e5,a5]@15 ~@2 [g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~ [c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~@7 [a2,a3]@2 ~@3 [a2,a3]@2]/8", // D Cdim Em D A Em D A …
  W: "[~@3 [a2,a3]@2 ~@14 [g3,b3,d4,e4]@57 ~@7 b4@61 ~@3 [b4,e5]@5 ~ [a4,d5]@5 [b4,e5]@5 [g4,b4]@15 ~ [b4,e5]@5 ~ [a4,d5]@5 [b4,e5]@5 [c#5,f#5]@15 ~ [b4,e5]@5 ~ [a4,d5]@5 [b4,e5]@5 [f#4,b4]@5 ~ [a4,d5]@5 [f#4,b4]@5 [e4,a4]@5 ~ [d4,g4]@5 [c#4,f#4]@2, ~@79 b5@61 ~@116, ~@80 a5@61 ~@115, ~@81 f#5@61 ~@114, ~@82 d5@61 ~@113]/8", // A Em7 E5 D5 E5 G E5 D5 …
  X: "[~@3 [b3,e4]@15 ~ [b4,e5]@5 ~ [a4,d5]@5 [b4,e5]@5 [g4,b4]@15 ~ [b4,e5]@5 ~ [a4,d5]@5 [b4,e5]@5 [c#5,f#5]@15 ~ [b4,e5]@5 ~ [a4,d5]@5 [b4,e5]@5 [d5,g5]@5 ~ [c#5,f#5]@5 [d5,g5]@5 [e5,a5]@5 ~ [d5,g5]@5 [e5,a5]@2]/4", // E5 D5 E5 G E5 D5 E5 F#5 …
  Y: "[~@3 [f#5,b5]@15 ~ [d4,b4]@5 ~ [d4,g4]@5 [d4,g4]@5 [d4,g4]@15 ~ [d3,f#3,a3,d4,f#4,a4]@29 ~@3 b4@5 ~ c5@5 d5@5 e5@5 ~ d5@5 ~@5 [d3,f#3,a3,d4,f#4,a4]@29 ~@3 [d3,g3,b3,d4,g4,b4]@29 ~@3 [d3,f#3,a3,d4,f#4,a4]@13, ~@19 [d3,g3,b3]@29 ~@35 [b2,e3,g3,b3,e4,g4]@27 a5@17 ~@65]/6", // B5 G G5 D G D G Em
  Z: "[~@11 [c3,d#3,f#3,c4,d#4,f#4]@6 ~@2 e5@5 ~ f#5@5 g5@5 a5@5 ~ e5@5 e5@5 f#5@5 ~ f#5@5 f#5@5 f#5@15 ~ [g4,b4,e5]@31 ~@2 [a4,d5,f#5]@11 ~, ~@19 [g3,b3,d4,g4,b4,d5]@30 ~@2 [a3,d4,f#4,a4,d5]@30 ~@47]/4", // Cdim Em D G D
  AA: "[[c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~ [a4,d5,f#5]@11 ~]/2", // A Em D
  AB: "[~ [c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~ [a4,d5,f#5]@11]/2", // A Em D
  AC: "[~ [c#5,e5,a5]@15 ~@2 [g4,b4,e5]@35 ~@6 [a2,a3]@2 ~@3]/2", // A Em A
  AD: "[[a2,a3]@2 ~@4 [a2,a3]@2 ~@10 [g4,b4,e5]@35 ~ [a4,d5,f#5]@10]/2", // A Em D
  AE: "[~@2 [c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~@2 [a4,d5,f#5]@9]/2", // A Em D
  AF: "[~@3 [c#5,e5,a5]@15 ~ [g4,b4,e5]@35 ~ [a4,d5,f#5]@9]/2", // A Em D
  AG: "~@4 [c#5,e5,a5]@15 ~@5 [g4,b4,d5,e5]@4 [g4,b4,d5,e5]@4", // A Em7
  AH: "[g4,b4,d5,g5]@2 [g4,b4,d5,e5] [g4,b4,d5]@3 [g4,b4,d5,e5]@3 ~@7", // G Em7 G Em7
})).s("gm_piano").gain(0.6)

// other · piano
const piano_2 = note(`<
  ~@12 A ~@3 B C ~@17 D ~@2 D E ~@4 B C ~@4 F G ~@13 D ~@2 D E ~@23 D ~@2 D E ~@3 D A ~ D ~@2
>`.pickRestart({
  A: "~@10 a4 b4 d5 a4 b4 d5", B: "~@20 [e5,e6]@6 [d5,d6]@5 ~", C: "[b4,b5]@5 ~@3", D: "~@10 e5 g5 e5 d5 b4 a4",
  E: "~@10 a4 b4 d5 b4 d5 e5", F: "~@4 e5@6 d5@5 ~ b4@5 ~ a4@5 ~ g4@4", G: "e4@23 ~@9",
})).s("gm_piano").gain(0.54)

// other · tenor sax · "Sax"
const tenor_sax = note("<~@7 A B@2 ~@4 C@2 ~@26 D E F ~@3 G H ~@57>".pickRestart({
  A: "~@4 d5@2 e5@4 d5@4 c#5 d5", B: "[c#5@4 b4@2 ~@2 b4@3 ~ d5@7 ~ e5@7 ~ e5@35 ~]/2",
  C: "[~@4 a4@3 ~ a4@2 b4@6 d5@4 b4@4 d5@4 e5@28 ~@8]/2", D: "~@28 d5@3 ~", E: "e5 d5@7", F: "e5@15 ~",
  G: "~@10 [b4,e5]@2 ~ [a4,d5]@2 ~", H: "[e5,g5,b5]@7 ~",
})).s("gm_tenor_sax").gain(0.6)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@10 A B C B C B C B C B C B C B C B C D E F G H I B C B C B C B J B C B C B C B C B C B C B C B C D E F G H I B C B C
  B C B J K@12 L E F G H M N O B C B C B C B P B C B C B C Q ~
>`.pickRestart({
  A: "a1 a2 a#1 a#2 b1 b2!2 ~", B: "e2@3 ~@3 d2 e2 g2 e2 d2@2 d2@2 d2 e2", C: "a1@3 a1 a1@2 b1@4 ~@2 d2@2 e2@2",
  D: "g1@5 g1@5 ~ g1@5 g1@4 g1@4 g1@4 g1@4", E: "f#1!8", F: "e1!8", G: "a1!8", H: "b1!8", I: "d1!3 d#1",
  J: "~@3 a1@3 a1@2 a1@4 ~@4", K: "e1/4", L: "g1@5 g1@5 ~ g1@5 g1@8 ~@8", M: "d1!6 d#1@2", N: "g1!8",
  O: "a1@5 a1@5 ~ a1@5 a1@8 b1@8", P: "~@3 a1@3 a1@4 ~@6", Q: "e2@2 e2@2 g2@2 e2 d2@3 e2@3 ~@3",
})).s("gm_electric_bass_finger").gain(0.6)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@2 A@5 B@4 ~@46 C D@5 ~@7 E@8 ~@5 F G@5 H I J K L M N O@2 ~ P Q@3 R@2 S ~
>`.pickRestart({
  A: "[~@3 [c2,g2]@17]/5", B: "[[c2,g2]@15 ~]/4", C: "[d4,g4,b4]@31 ~",
  D: "[[d4,f#4,a4]@15 ~@2 [d4,f#4,a4]@8 [d4,f#4,a4]@4 [e4,g4,b4]@36 [d4,f#4,a4]@15 ~ [d4,f#4,a4]@8 [d4,f#4,a4]@4 [d4,g4,b4]@36 [d4,f#4,a4]@16 [d4,f#4,a4]@8 [c4,d#4,f#4]@7]/5", // D Em D G D Cdim
  E: "[~@25 [c2,g2]@231]/8", F: "~ [d4,g4,b4]@31",
  G: "[~ [d4,f#4,a4]@15 ~ [d4,f#4,a4]@8 [d4,f#4,a4]@4 [e4,g4,b4]@36 [d4,f#4,a4]@15 ~@2 [d4,f#4,a4]@8 [d4,f#4,a4]@4 [d4,g4,b4]@36 [d4,f#4,a4]@16 [d4,f#4,a4]@8 [c4,d#4,f#4]@6]/5", // D Em D G D Cdim
  H: "~ [g4,b4,d5,e5]@15", I: "~ [a4,d5,f#5]@15", J: "~ [b4,e5,g5,b5]@15", K: "~ f#5@6 a5@9", L: "e5",
  M: "~@2 d5@12 ~@8 [b4,e5]@3 ~@3 [a4,d5]@3 ~, ~@7 a5@6 f#5@3", N: "~ [e5,g5,b5]@15", O: "[~ f#5@6 a5@8 e5@16 ~]/2",
  P: "~@2 a6@11 ~ g6@2 f#6@2 ~ g6@10 f#6@2 ~, ~ e5@15",
  Q: "[e6@2 [f#5,f#6]@11 ~@3 d6@3 e6@11 e5@35 ~ d5@12 a5@12 f#5@6, ~@13 e6@2 ~@81, ~@7 a5@8 ~@33]/3", // F#
  R: "[~@2 a6@11 g6@2 ~ f#6@2 g6@11 f#6@3 e6@2 [f#5,f#6]@11 ~@3 d6@2 e6@14, ~@2 e5@33 ~@10 e6@3 ~@16, ~@46 a5@17 ~]/2", // F#
  S: "~@2 [e4,e5]@3 ~@2 [e4,e5]@3 ~ [g4,g5]@3 ~ [e4,e5]@2 [d4,d5]@6 [e4,e5]@4 e5 ~@4", // E G E D E
})).s("gm_string_ensemble_1").gain(0.25)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note("<~@11 A B@2 C@2 D@2 E ~@88>".pickRestart({
  A: "e5", B: "[a5@6 f#5@8 e5@17 ~]/2", C: "[f#5@12 a5@16 e5@35 ~]/2", D: "[a5@12 f#5@16 e5@35 ~]/2",
  E: "f#5@12 a5@17 ~@3",
})).s("gm_string_ensemble_1").gain(0.06)

// bass · slap bass 1 · "Slap Bass"
const bass_2 = note("<~@10 [a1@4 a2 ~@3 a#1@4 a#2 ~@3 b1@4 b2 ~@3 b2 ~@7] ~@96>").s("gm_slap_bass_1").gain(0.6)

// other · glockenspiel · "Glock"
const glockenspiel = note(`<
  ~@12 A ~@3 B C ~@17 D ~@2 D E ~@4 B C ~@4 F G ~@13 D ~@2 D E ~@23 D ~@2 D E ~@3 D A ~ D ~@2
>`.pickRestart({
  A: "~@10 a5 b5 d6 a5 b5 d6", B: "~@20 [e6,e7]@6 [d6,d7]@5 ~", C: "[b5,b6]@5 ~@3", D: "~@10 e6 g6 e6 d6 b5 a5",
  E: "~@10 a5 b5 d6 b5 d6 e6", F: "~@4 e6@6 d6@5 ~ b5@5 ~ a5@5 ~ g5@4", G: "e5@23 ~@9",
})).s("gm_glockenspiel").gain(0.54)

// chords · synth strings 1 · "Syn Strings 1"
const synth_strings_1 = note(`<
  A@4 B@2 C@2 D@2 E F G H@2 I@2 J@2 K@2 L@2 M@2 N@8 O@8 P@4 Q@2 R@2 S@4 T@2 U@8 V@8 W@8 X@4 Y@6 Z@4 AA@2 AB@2 AC@2 AD@2
  AE@2 AF@2 AG AH
>`.pickRestart({
  A: "[~@31 g2@61 ~@3 g3@31 ~@2, ~@28 e3@61 ~@3 e4@31 ~@5, ~@29 d3@61 ~@3 d4@31 ~@4, ~@30 b2@61 ~@3 b3@31 ~@3]/4",
  B: "[[c#4,e4,a4]@11 ~ [a3,d4,f#4]@15 ~ [g3,b3,d4,e4]@31 ~@5]/2", // A D Em7
  C: "[[a3,d4,f#4]@11 ~@2 [c#4,e4,a4]@15 ~ [g3,b3,d4,e4]@29 ~@6]/2", // D A Em7
  D: "[~ [c#4,e4,a4]@11 ~ [a3,d4,f#4]@15 ~ [g3,b3,d4,e4]@31 ~@4]/2", // A D Em7
  E: "~ a0@3 ~@2 a1@3 ~ a#0@3 ~ a#1@3 ~ b0@3 ~@2 b1@3 ~ b1@3 ~@2, ~ [a3,d4,f#4]@12 ~ [c#4,e4,a4]@18", // D A
  F: "~@3 [g3,b3,e4]@29", G: "~@3 [c#4,e4,a4]@11 ~ [a3,d4,f#4]@15 ~@2",
  H: "[[g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~ [c#4,e4,a4]@15 ~]/2", // Em D A
  I: "[[g3,b3,e4]@35 ~@2 [c#4,e4,a4]@11 ~ [a3,d4,f#4]@15]/2", // Em A D
  J: "[~ [g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~@2 [c#4,e4,a4]@14]/2", // Em D A
  K: "[~@2 [g3,b3,e4]@35 ~ [c#4,e4,a4]@11 ~ [a3,d4,f#4]@14]/2", // Em A D
  L: "[~@3 [g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~ [c#4,e4,a4]@13]/2", // Em D A
  M: "[~@3 [g3,b3,e4]@35 ~@2 [c#4,e4,a4]@11 ~ [a3,d4,f#4]@12]/2", // Em A D
  N: "[~@4 [g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~@2 [c#4,e4,a4]@19 ~ [d2,g2,b2,d3,g3,b3]@29 ~@3 [d2,f#2,a2,d3,f#3,a3]@29 ~@3 [b1,e2,g2,b2,e3,g3]@29 ~@3 [d2,f#2,a2,d3,f#3,a3]@29 ~@3 [d2,g2,b2,d3,g3,b3]@29 ~@3 [d2,f#2,a2,d3,f#3,a3]@14 ~@2 [d2,f#2,a2,d3,f#3,a3]@6 ~]/8", // Em D A G D Em D G …
  O: "[~ [c2,d#2,f#2,c3,d#3,f#3]@6 ~@2 [g3,b3,e4]@31 ~ [a3,d4,f#4]@11 ~ [c#4,e4,a4]@15 ~@2 [g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~ [c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~@2 [a3,d4,f#4]@11 ~ [c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~@7 [a1,a2]@2 ~@3 [a1,a2]@2 ~@3 [a1,a2]@2 ~@3]/8", // Cdim Em D A Em D A Em …
  P: "[~@7 [g3,b3,e4]@35 ~ [c#4,e4,a4]@11 ~@2 [a3,d4,f#4]@15 ~ [g3,b3,e4]@35 ~ [c#4,e4,a4]@11 ~ [a3,d4,f#4]@8]/4", // Em A D Em A D
  Q: "[~@9 [g3,b3,e4]@35 ~ [c#4,e4,a4]@11 ~ [a3,d4,f#4]@7]/2", // Em A D
  R: "[~@9 [g3,b3,e4]@35 ~@2 [c#4,e4,a4]@11 ~ [a3,d4,f#4]@6]/2", // Em A D
  S: "[~@10 [g3,b3,e4]@35 ~ [c#4,e4,a4]@11 ~@2 [a3,d4,f#4]@15 ~ [g3,b3,e4]@35 ~ [c#4,e4,a4]@11 ~ [a3,d4,f#4]@5]/4", // Em A D Em A D
  T: "[~@12 [g3,b3,e4]@35 ~ [c#4,e4,a4]@11 ~ [a3,d4,f#4]@4]/2", // Em A D
  U: "[~@12 [g3,b3,e4]@35 ~@2 [a3,d4,f#4]@11 ~ [c#4,e4,a4]@19 ~ [d2,g2,b2,d3,g3,b3]@29 ~@3 [d2,f#2,a2,d3,f#3,a3]@29 ~@3 [b1,e2,g2,b2,e3,g3]@29 ~@3 [d2,f#2,a2,d3,f#3,a3]@29 ~@3 [d2,g2,b2,d3,g3,b3]@29 ~@3 [d2,f#2,a2,d3,f#3,a3]@14 ~]/8", // Em D A G D Em D G …
  V: "[~ [d2,f#2,a2,d3,f#3,a3]@6 ~@2 [c2,d#2,f#2,c3,d#3,f#3]@6 ~@2 [g3,b3,e4]@31 ~ [a3,d4,f#4]@11 ~@2 [c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~ [c#4,e4,a4]@15 ~@2 [g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~ [c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~@7 [a1,a2]@2 ~@3 [a1,a2]@2]/8", // D Cdim Em D A Em D A …
  W: "[~@3 [a1,a2]@2 ~@14 [g2,b2,d3,e3]@57 ~@7 b3@61 ~@3 [b3,e4]@5 ~ [a3,d4]@5 [b3,e4]@5 [g3,b3]@15 ~ [b3,e4]@5 ~ [a3,d4]@5 [b3,e4]@5 [c#4,f#4]@15 ~ [b3,e4]@5 ~ [a3,d4]@5 [b3,e4]@5 [f#3,b3]@5 ~ [a3,d4]@5 [f#3,b3]@5 [e3,a3]@5 ~ [d3,g3]@5 [c#3,f#3]@2, ~@79 b4@61 ~@116, ~@80 a4@61 ~@115, ~@81 f#4@61 ~@114, ~@82 d4@61 ~@113]/8", // A Em7 E5 D5 E5 G E5 D5 …
  X: "[~@3 [b2,e3]@15 ~ [b3,e4]@5 ~ [a3,d4]@5 [b3,e4]@5 [g3,b3]@15 ~ [b3,e4]@5 ~ [a3,d4]@5 [b3,e4]@5 [c#4,f#4]@15 ~ [b3,e4]@5 ~ [a3,d4]@5 [b3,e4]@5 [d4,g4]@5 ~ [c#4,f#4]@5 [d4,g4]@5 [e4,a4]@5 ~ [d4,g4]@5 [e4,a4]@2]/4", // E5 D5 E5 G E5 D5 E5 F#5 …
  Y: "[~@3 [f#4,b4]@15 ~ [d3,b3]@5 ~ [d3,g3]@5 [d3,g3]@5 [d3,g3]@15 ~ [d2,f#2,a2,d3,f#3,a3]@29 ~@3 b3@5 ~ c4@5 d4@5 e4@5 ~ d4@5 ~@5 [d2,f#2,a2,d3,f#3,a3]@29 ~@3 [d2,g2,b2,d3,g3,b3]@29 ~@3 [d2,f#2,a2,d3,f#3,a3]@13, ~@19 [d2,g2,b2]@29 ~@35 [b1,e2,g2,b2,e3,g3]@27 a4@17 ~@65]/6", // B5 G G5 D G D G Em
  Z: "[~@11 [c2,d#2,f#2,c3,d#3,f#3]@6 ~@2 e4@5 ~ f#4@5 g4@5 a4@5 ~ e4@5 e4@5 f#4@5 ~ f#4@5 f#4@5 f#4@15 ~ [g3,b3,e4]@31 ~@2 [a3,d4,f#4]@11 ~, ~@19 [g2,b2,d3,g3,b3,d4]@30 ~@2 [a2,d3,f#3,a3,d4]@30 ~@47]/4", // Cdim Em D G D
  AA: "[[c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~ [a3,d4,f#4]@11 ~]/2", // A Em D
  AB: "[~ [c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~ [a3,d4,f#4]@11]/2", // A Em D
  AC: "[~ [c#4,e4,a4]@15 ~@2 [g3,b3,e4]@35 ~@6 [a1,a2]@2 ~@3]/2", // A Em A
  AD: "[[a1,a2]@2 ~@4 [a1,a2]@2 ~@10 [g3,b3,e4]@35 ~ [a3,d4,f#4]@10]/2", // A Em D
  AE: "[~@2 [c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~@2 [a3,d4,f#4]@9]/2", // A Em D
  AF: "[~@3 [c#4,e4,a4]@15 ~ [g3,b3,e4]@35 ~ [a3,d4,f#4]@9]/2", // A Em D
  AG: "~@4 [c#4,e4,a4]@15 ~@5 [g3,b3,d4,e4]@4 [g3,b3,d4,e4]@4", // A Em7
  AH: "[g3,b3,d4,g4]@2 [g3,b3,d4,e4] [g3,b3,d4]@3 [g3,b3,d4,e4]@3 ~@7", // G Em7 G Em7
})).s("gm_synth_strings_1").gain(0.08)

// other · taiko drum · "Taiko"
const taiko_drum = note("<~@40 A ~@29 A ~@10 B C ~@15 A ~@8>".pickRestart({
  A: "~@5 [a2,a3]@3 ~@3 [a2,a3]@5 [a2,a3]@5 ~@3 [a2,a3]@2 ~@6", B: "~@26 c5!3 ~ c5 ~",
  C: "c5@4 ~@2 a4 ~@5 f4@2 ~@2 f4@2 ~@14, ~@12 a4 ~@19",
})).s("gm_taiko_drum").gain(0.6)

// other · synth drum · "Syn Drum"
const synth_drum = note("<~@40 A ~@29 A ~@10 B C ~@15 A ~@8>".pickRestart({
  A: "~@5 [a2,a3]@3 ~@3 [a2,a3]@5 [a2,a3]@5 ~@3 [a2,a3]@2 ~@6", B: "~@26 c4!3 ~ c4 ~",
  C: "c4@4 ~@2 a3 ~@5 f3@2 ~@2 f3@2 ~@14, ~@12 a3 ~@19",
})).s("gm_synth_drum").gain(0.8)

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

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

// drums · clap
const clap = s("cp").struct("<~ A B A B A B A B A C ~@60 A B A B A B A B A B A D ~@24>".pickRestart({
  A: "~@2 x ~@3 x!2", B: "~ x ~ x", C: "~@5 x!2 ~", D: "~@3 x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@40 A ~@29 A ~@11 B ~@7 C ~@7 A ~@8>".pickRestart({
  A: "~@5 x ~@5 x ~@4 x ~@15", B: "~@3 x!2 ~@3", C: "x ~@4 x ~@5 x ~@20",
})).gain(0.32)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@82 [~@3 x ~@2 x ~@9] ~@7 [~@10 x!2 ~@4] ~@16>").gain(0.48)
// … 35 more lines

More by ABC