Strudelify

The Christmas Song

Shakatak

KeyA minorTempo120 bpm
0:00/0:00
// The Christmas Song — Shakatak
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · slap bass 2 · "SLAPBASS 2"
const bass = note(`<
  A B A C A D A E F G H I J K L I M N O I J K L I P N Q R S T@2 R U V@2 W X Y Z AA X AB AC AD@2 AE AF AD AG AD AF AH AI
  AJ AK AL AM AN AO AA X Y Z AA X AP AQ AA X Y AC AA X AP AR AD AS AD AT AD AG AD AU H AV J AW AX I M AY O I J AZ O I M
  BA O I J BB BC I J BD BE I J BF@2
>`.pickRestart({
  A: "a1@3 ~ a1@3 ~ a1@3 ~ a1@2 g1 g#1", B: "a1@3 ~ a1@3 ~ a1 ~ a1@3 ~ a1 ~", C: "a1@3 ~ a1@3 ~ a1 ~ a1@4 g1 ~",
  D: "a1@3 ~ a1@3 ~ a1 ~ a1@4 a1@2", E: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~", F: "a1@3 ~ a1@3 ~ a1@3 ~ a1@4",
  G: "e2 d2 c2 a1 ~ d1 ~ e1@9", H: "~@8 a1@2 a2 ~ c2@2 c3 ~", I: "d2@2 d3 d2 ~ d2 d3 ~ g1@2 g2 ~ b1@2 b2 ~",
  J: "c2@2 c3 c2 ~ c2 c3 ~ f#1@2 f#2 ~ a1@2 a2 ~", K: "b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 ~@3 e2 ~",
  L: "e1@2 e2 e1 ~ e1 e2 ~ a1@2 a2 ~ c2@2 c3 ~", M: "c2@2 c3 c2 ~ c2 c3 ~ f#1@2 f#2 ~ f#1@2 f#2 ~",
  N: "d2@2 d3 d2 ~ d2 d3 ~ e2@2 e3 ~@3 e3 ~", O: "e2@2 e3 e2 ~ e2 e3 ~ a1@2 a2 ~ c2@2 c3 ~",
  P: "c2@2 c3 c2 ~ c2 c3 ~ f#1@2 f#2 ~@3 f#2 ~", Q: "e2@2 e3 e2 ~ e2 e3 ~ a1@2 a2 ~ a1@2 a2 ~",
  R: "a1@2 a2 ~ g1@2 g2 ~ a1@2 a2 ~ a1@2 a2 ~", S: "a1@2 a2 ~ e1@2 e2 ~ a1@2 a2 ~ a1@2 a2 ~",
  T: "[a1@2 a2 ~ g1@2 g2 ~ f1 ~ f2 ~ f1 ~ e1@4 [e2,f#2] e2 e1@2 e2 ~ a1@2 a2 ~ a1@2 a2 ~]/2", // Esus2
  U: "a1 ~ a2 ~ e1@2 e2 ~ a1@2 a2 ~ a1@2 a2 ~", V: "[a1@2 a2 ~ g1@2 g2 ~ f1@2 f2 ~ f1 ~ e1@10 e2 ~@7]/2",
  W: "a1@2 a2 ~ c2@2 c3 ~ d2@2 d3 ~@3 d3 ~", X: "g1@2 g2 ~ b1@2 b2 ~ c2@2 c3 c2 ~ c2 c3 ~",
  Y: "f#1@2 f#2 ~ a1@2 a2 ~ b1@2 b2 b1 ~ b1 b2 ~", Z: "e1@2 e2 ~@3 e2 ~ e1@2 e2 e1 ~ e1 e2 ~",
  AA: "a1@2 a2 ~ c2@2 c3 ~ d2@2 d3 d2 ~ d2 d3 ~", AB: "f#1@2 f#2 ~@3 f#2 ~ d2@2 d3 ~ d2 ~ d3 ~",
  AC: "e1@2 e2 ~@3 e2 ~ e2@2 e3 e2 ~ e2 e3 ~", AD: "a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~ g1@2 g2 ~",
  AE: "a1@2 a2 ~ a1 ~ a2 ~ a1@2 a2 ~ g1@2 g2 ~", AF: "f1@2 f2 ~ f1 ~ e1@4 e2 ~ e1@2 e2 ~",
  AG: "a1@2 a2 ~ a1@2 a2 ~ a1@2 a2 ~ e1@2 e2 ~", AH: "f1@2 f2 ~ f1@2 f2 ~ f1 ~ f2 ~ f1 ~ f2 ~",
  AI: "e1@2 e2 ~ g1@2 g2 ~ a1 ~ a2 ~ a1 ~ a2 ~", AJ: "f1@2 f2 ~ f1 ~ f2 ~ f1 ~ f2 ~ f1 ~ f2 ~",
  AK: "e1 ~ e2 ~ e1 ~ e2 ~ a1@2 a2 ~ a1@2 a2 ~", AL: "f1@2 f2 ~ f1 ~ f2 ~ f1@2 f2 ~ f1@2 f2 ~",
  AM: "e1 ~ e2 ~ g1@2 g2!2 a1@2 a2 ~ a1@2 a2 ~", AN: "d2@2 d3 ~ d2@2 d3 ~ d2@2 ~ d#2@2 e2@2 ~", AO: "g2@7 ~",
  AP: "f#1@2 f#2 ~ f#1@2 f#2 ~ d2@2 d3 d2 ~ d2 d3 ~", AQ: "e2@2 e3 ~ e2 ~ e3 ~ e1@2 e2 e1 ~ e1 e2 ~",
  AR: "e1@2 e2 ~ e1@2 e2 ~ e2@2 e3 e2 ~ e2 e3 ~", AS: "a1 ~ a2 ~ a1@2 a2 ~ a1@2 a2 ~ e1@2 e2 ~",
  AT: "f1@2 f2 f1 f2 ~ e1@4 e2 ~ e1@2 e2!2", AU: "f1@2 f2 f1 f2!2 e1@10", AV: "d2@2 d3 ~ d2@2 d3 ~ g1@2 g2 ~ b1@2 b2 ~",
  AW: "b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 ~ e1@2 e2 ~", AX: "e1@2 e2!2 e1@2 e2 ~ a1@2 a2 ~ c2@2 c3 ~",
  AY: "d1@2 d2 d1 ~ d1 d2 ~ e1@2 e2 ~ e1@2 e2 ~", AZ: "b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 ~ e1 ~ e2 ~",
  BA: "d2@2 d3 d2 ~ d2 d3 ~ e2@2 e3 ~ e2@2 e3 ~", BB: "b1@2 b2 b1 ~ b1 b2 ~ e1 ~ e2 ~ e1@2 e2 ~",
  BC: "e1!2 e2 ~ e1@2 e2 ~ a1@2 a2 ~ c2@2 c3 ~", BD: "d2@2 d3 d2 ~ d2 d3 ~ e2@2 e3 ~ e2 ~ e3 ~",
  BE: "e2!2 e3 ~ e2 ~ e3 ~ a1@2 a2 ~ c2@2 c3 ~", BF: "[b1@2 b2 b1 ~ b1 b2 ~ e1@2 e2 e1 e2 ~ e1@4 ~@14]/2",
})).s("gm_slap_bass_2").gain(0.44)

// chords · flute
const flute = note("<~ A B A B A B A B ~@42 C D C E C F G H ~@53>".pickRestart({
  A: "~@9 e5 ~ e5 g5 ~ g#5 ~", B: "a5 ~@2 a5 ~@2 a5 ~@9", C: "~@2 [e5,g5]!2 [c5,e5] ~ [a4,c5] ~ [g4,b4]@5 ~ [f4,a4] ~",
  D: "[e4,g4]@2 ~ [b4,d5] ~@2 [a4,c5]@7 ~@3", E: "[e4,g4]@11 ~@5", F: "[e4,g4]@2 ~ [b4,d5]@2 ~ [a4,c5]@7 ~@3",
  G: "d5@8 ~@2 d5@2 ~ d#5@2 ~", H: "e5@7 ~",
})).s("gm_flute").gain(0.35)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
  A@2 B C D E B C F ~ G@2 H@8 I@7 J@8 K@3 L M@2 N O P@3 Q P@2 R S T@4 U@2 V W K@3 X Y@2 N Z AA AB@2 X AA AC@2 AD AE P@2
  Q AE P AF AG AH@6 AI@8 AJ@7 AK@7 ~
>`.pickRestart({
  A: "[[c4,a4] [c#4,g4,a#4], e4@15 ~]/2", B: "[c4,d4,f4,a4]@15 ~", C: "[b3,d4,f4,g#4]@15 ~", D: "[c4,e4,a4]",
  E: "[c#4,e4,g4,a#4]", F: "[c4,e4,a4]@15 ~", G: "[~@9 e4@7 ~@8 [g4,b4]@8, ~@9 [a4,c5]@14 ~@9, ~@16 [d4,f#4]@15 ~]/2",
  H: "[c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@9 ~ e4@7 ~@41 a4@6 g#4@8 ~@2 e4@7 ~@9 [g4,b4]@8, e4@23 ~ [b3,e4]@14 ~@10 [d4,f#4]@15 ~ e4@23 ~ e4@13 ~@11 [d4,f#4]@15 ~, ~@8 [f#4,a4]@15 ~@17 [a4,c5]@15 ~ [g4,b4]@15 ~ [f#4,a4]@16 ~@16 [a4,c5]@14 ~@10, ~@64 c4@15 ~ b3@21 ~@27]/8", // G E5 D F#m Am G F#m Am
  I: "[c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@9 ~ e4@7 ~@33 b3@7 ~ a4@6 g#4@8 ~@2 [c4,e4,a4]@8, e4@23 ~ [b3,e4]@14 ~@10 [d4,f#4]@14 ~@2 e4@23 ~@25, ~@8 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@2 [g4,b4]@15 ~ [f#4,a4]@16 ~@24, ~@64 c4@15 ~@9 [b3,e4]@14 ~@10]/7", // Am E5 D F#m Am G F#m E5
  J: "[~@4 [b3,d4,g4]@4 [c4,e4,a4]@11 ~ [b3,d4,g4]@4 [c4,e4,a4]@11 ~ [b3,d4,g4]@3 ~ [a3,c4,f4]@5 ~ [g#3,b3,e4]@8 ~@2 [c4,e4,a4]@11 ~ [b3,d4,g4]@4 [c4,e4,a4]@11 ~ [b3,d4,g4]@3 ~ [c4,e4,a4]@11 ~ [b3,d4,g4]@3 ~ [c4,f4,a4]@5 ~ [b3,d4,e4,a4]@11 ~@7]/8", // G Am G Am G F E Am …
  K: "[e4@7 ~@17 c4@7 ~ c#4@7 ~ b3@7 ~, [a4,c5]@15 ~ [g4,b4]@14 ~@2 [f#4,a4]@16, ~@8 [d4,f#4]@15 ~ e4@23 ~]/3", // Am G F#m D
  L: "a4@3 g#4@4 ~, [b3,e4]@7 ~", M: "[e4@7 ~@17 [c4,e4]@7 ~, [a4,c5]@7 ~ [g4,b4]@7 ~, ~@8 [d4,f#4]@15 ~@9]/2",
  N: "c4@7 ~ b3@7 ~, [e4,f#4,a4]@15 ~", O: "a4@6 g#4@9 ~, [b3,e4]@15 ~", P: "[c4,e4,a4]@11 ~ [b3,d4,g4]@3 ~",
  Q: "[a3,c4,f4]@5 ~ [g#3,b3,e4]@7 ~@3", R: "[c4,e4,a4]@11 ~ [b3,d4,g4]@2 ~@2", S: "[a3,c4,f4]@5 ~ [a3,b3,e4]@7 ~@3",
  T: "[[c4,f4,a4]@8 d4@7 ~@9 [a4,c5]@7 ~, ~ [g4,b4]@2 ~, ~@16 e4@15 ~]/2", // F Am G
  U: "[[c4,f4,a4]@8 d4@7 ~ e4@7 ~ [e4,a4,c5]@8, ~ [g4,b4]@2 ~]/2", // F Am G
  V: "[d4,f4,a4]@9 ~ [d#4,f#4,a#4]@2 ~ [g4,b4]@2 ~, ~@13 e4 ~@2", W: "[f4,a4,c5]@9 ~@7",
  X: "a4@3 g#4@4 ~, [b3,e4]@13 ~@3", // E5
  Y: "[e4@7 ~ d4@7 ~ d4@7 ~ [c4,e4]@7 ~, [a4,c5]@14 ~@2 [g4,b4]@15 ~, ~@8 f#4@15 ~@9]/2", // C Am G
  Z: "a4@6 g#4@7 ~@3, [b3,e4]@13 ~@3", AA: "e4@7 ~ [d4,f#4]@7 ~, [a4,c5]@7 ~",
  AB: "[[d4,f#4]@7 ~ c4@7 ~ c#4@6 ~@2 b3@7 ~, [g4,b4]@14 ~@2 [f#4,a4]@15 ~, ~@8 e4@23 ~]/2", // D G F#m
  AC: "[[d4,f#4]@7 ~ c4@7 ~ c4@7 ~ b3@7 ~, [g4,b4]@14 ~@2 [f#4,a4]@15 ~, ~@8 e4@23 ~]/2", // D G F#m
  AD: "a4@3 g#4@4 ~, [b3,e4]@13 ~@3, f#4 ~@7", AE: "[c4,e4,a4]@11 ~ [b3,d4,g4]@4",
  AF: "[c4,e4,a4]@10 ~@2 [b3,d4,g4]@3 ~", AG: "[a3,c4,f4]@5 ~ [a3,b3,e4]@8 ~@2",
  AH: "[~@8 e4@7 ~ [d4,f#4]@7 ~ [d4,f#4]@7 ~ c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@9 [g4,b4]@7 ~, ~@8 [a4,c5]@15 ~ [g4,b4]@14 ~@2 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@10, ~@32 e4@23 ~ [b3,e4]@13 ~@11 [d4,f#4]@15 ~]/6", // D G Am G F#m Am E5 D
  AI: "[[g4,b4]@7 ~@9 b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@17 c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@9 [g4,b4]@8, e4@23 ~@25 [d4,f#4]@15 ~ e4@23 ~@25 [d4,f#4]@15 ~, c4@15 ~@9 [b3,e4]@13 ~@51 [b3,e4]@13 ~@27, ~@8 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@10]/8", // G D E5 F#m Am G F#m Am
  AJ: "[~@16 b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~@17 c4@7 ~ c#4@7 ~ b3@7 ~ a4@6 g#4@8 ~@2 [e4,a4,c5]@8, e4@23 ~@25 [d4,f#4]@15 ~ e4@23 ~@25, c4@15 ~@9 [b3,e4]@13 ~@51 [b3,e4]@14 ~@10, ~@8 [f#4,a4]@15 ~@17 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [f#4,a4]@16 ~@24]/7", // Am D E5 F#m Am G F#m
  AK: "[[d4,f#4]@8 [g4,b4]@5 ~ [c4,e4,g4]@9 ~ c4@5 ~@3 b3@7 ~ a4@6 g#4@8 ~@2 e4@7 ~ [d4,f#4]@7 ~ [d4,f#4]@7 ~ [c4,e4]@7 ~ c#4@7 ~@9 a4@6 g#4@2, ~@8 [d4,f#4]@8 ~@8 [e4,f#4,a4]@15 ~ [b3,e4]@13 ~@44 b3@15, ~@14 b4 ~@41 [a4,c5]@14 ~@2 [g4,b4]@14 ~@2 [e4,f#4,a4]@16 e4@8]/7", // D G C D C D F#m7 E5 …
})).s("gm_synth_strings_2").gain(0.3)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A B C D E F C G E H I J K L M J N O M J K L P Q N R S T U V@2 T W X@2 Y Z AA AB Y Z AC AB AD AE AF AG AH AE AI AJ AK
  AL AM AN AM AO AP AQ Y Z AR AB AS Z AT AU AV AW AX AB Y Z AT AY AZ BA AI BB BC BD AI BE I BF K BG@2 BF BH BI@2 BJ K
  BK@2 J BH BL@2 J K BK@2 J BM@3 J BN@3
>`.pickRestart({
  A: "[c3,e3,a3]@3 ~", B: "[c#3,e3,g3,a#3]@3 ~", C: "[c3,d3,f3,a3]@13 ~@3", D: "[b2,d3,f3,g#3]@3 ~",
  E: "[c3,e3,a3]@13 ~@3", F: "[c#3,e3,g3,a#3]@13 ~@3", G: "[b2,d3,f3,g#3]@7 ~", H: "[e3,e4] d4 c4 a3 ~ d3 ~ e3@9",
  I: "~@10 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2", J: "[f#3,a3,c4,e4]@6 ~@4 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2",
  K: "[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@2", // Cmaj7 F#m7
  L: "[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2", // F#m7 Esus4
  M: "[e3,g#3,b3,e4]@6 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2", // E Am7
  N: "[c3,e3,g3,b3]@6 ~@4 [f#3,a3,c4,e4] ~@2 [f#3,a3,c4,e4] ~@2", // Cmaj7 F#m7b5
  O: "[f#3,a3,b3,e4]@7 ~@3 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2, a#3 ~@15", // F#m7 Esus4
  P: "[e3,g#3,b3,e4]@5 ~@5 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2", // E Am7
  Q: "[f#3,a3,c4,e4]@7 ~@3 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2", // F#m7b5 Gmaj7
  R: "[f#3,a3,b3,e4]@6 ~@4 [e3,f3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2", // F#m7 Esus4
  S: "[e3,g#3,b3,e4]@5 ~@5 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // E Am7
  T: "~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // Am7 G Am7
  U: "~@2 [g3,a3,c4,e4] ~@3 [b3,d4,f#4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // Am7 Bm Am7
  V: "[~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~ [f3,a3,c4]@4 ~@2 [e3,g#3,b3]@8 ~@4 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~]/2", // Am7 G F E Am7
  W: "~@2 [g3,a3,c4,e4] ~@3 [f#3,b3,d4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~", // Am7 Bm Am7
  X: "[~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~ [f3,a3,c4]@4 ~@2 [e3,a3,b3]@11 ~@7]/2", // Am7 G F Esus4
  Y: "~@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2 [f#3,a3,c4,e4]@6 ~@2", // Am7 F#m7b5
  Z: "~@2 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2 [c3,e3,g3,b3]@5 ~@3", // Gmaj7 Cmaj7
  AA: "~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,b3,e4]@5 ~@3", // F#m7
  AB: "~@2 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2 [e3,g#3,b3,e4]@5 ~@3", // Esus4 E
  AC: "~@2 [f#3,a3,c4,e4] ~@2 [f#3,a3,c4,e4] ~@2 [f#3,a3,b3,e4]@6 ~@2", // F#m7b5 F#m7
  AD: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4]@2 ~@2 [g3,a3,c4,e4] ~@3 [g3,b3,d4]@2", // Am7 G
  AE: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [f#3,a3,b3,d4] ~", // Am7 Bm7
  AF: "~@2 [g3,a3,b3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~", // Cmaj7 Am7 G
  AG: "[f3,a3,c4]@5 ~ [e3,g#3,b3]@8 ~@2", AH: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,b3,d4]@2",
  AI: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,b3,d4] ~", AJ: "[f3,a3,c4] ~@2 [e3,a3,b3]@5",
  AK: "~@2 f4 c4 f3 ~ f4 c4 f3 ~ f4 c4 f3 ~ f4 c4", AL: "e3 ~ e4 b3 e3 ~ e4 b3 a3 ~ e4 c4 a3 ~ e4 c4",
  AM: "f3 ~ f4 c4 f3 ~ f4 c4 f3 ~ f4 c4 f3 ~ f4 c4",
  AN: "e3 ~ e4 ~ e3 ~ e4 b3 a3 ~ [d4,e4] ~ a3 ~ e4 c4, ~@3 b3@2 ~@6 c4@2 ~@3", // Dsus2
  AO: "e3 ~ e4 b3 e3 ~ e4 b3 a3 ~ e4 c4 a3 ~@3", AP: "[d3,f3,a3]@8 ~@2 [d#3,f#3,a#3]@2 ~ [e3,g3,b3]@2 ~",
  AQ: "[g2,f3,a3,c4]@13 ~@3", AR: "~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,b3,e4]@5 ~@3, ~@8 d#4 ~@7",
  AS: "~@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2 [f#3,a3,c4,e4]@5 ~@3", // Am7 F#m7b5
  AT: "~@2 [f#3,a3,c4,e4] ~@2 [f#3,a3,c4,e4] ~@2 [f#3,a3,b3,e4]@5 ~@3", // F#m7b5 F#m7
  AU: "~@2 [e3,a3,b3,e4] ~@2 [e3,a3,b3,e4] ~@2 [e3,g#3,b3,e4]@6 ~@2", // Esus4 E
  AV: "~@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2 [f#3,a3,c4,e4]@4 ~@4", // Am7 F#m7b5
  AW: "~@2 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2 [c3,e3,g3,b3]@4 ~@4", // Gmaj7 Cmaj7
  AX: "~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] ~@2 [f#3,a3,b3,e4]@6 ~@2", // F#m7
  AY: "~@2 [e3,a3,b3,e4] ~@2 [e3,g#3,a3,b3,e4] ~@2 [e3,g#3,b3,e4]@6 ~@2", // Esus4 E
  AZ: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~ [g3,b3,d4]@4, ~@12 [a3,c4] ~@3", // Am7 G Am
  BA: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [a3,b3,d4,f#4] ~", // Am7 Bm7
  BB: "[f3,a3,c4]@2 ~ [e3,g#3,b3]@4 ~", // F E
  BC: "~@2 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,d4]@2, ~@14 b3 ~", // Am7 G5
  BD: "[a3,c4,e4] ~ [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [g3,a3,c4,e4] ~@3 [a3,b3,d4,f#4] ~", // Am Am7 Bm7
  BE: "[f3,a3,c4]@3 ~@3 [e3,a3,b3,e4]@10", BF: "[f#3,a3,c4,e4]@5 ~@5 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2",
  BG: "[[f#3,a3,b3,e4]@5 ~@5 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@7 ~@5 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2]/2", // F#m7 Esus4 E Am7
  BH: "[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c4,e4] ~@2 [f#3,a3,c4,e4] ~@2", // Cmaj7 F#m7b5
  BI: "[[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~ [e3,a3,b3,e4] ~ [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2]/2", // F#m7 Esus4 E Am7
  BJ: "[f#3,a3,c4,e4]@6 ~@4 [d3,f#3,g3,b3] ~@2 [d3,f#3,g3,b3] ~@2, d4 ~@15", // F#m7b5 Gmaj7
  BK: "[[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2]/2", // F#m7 Esus4 E Am7
  BL: "[[f#3,a3,b3,e4]@6 ~@4 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2, a#3 ~@31]/2", // F#m7 Esus4 E Am7
  BM: "[[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c4,e4] ~@3 [f#3,a3,b3,e4]@6 ~@6 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@8 ~@4 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] ~@2, ~@30 [c#4,d4] ~@17]/3", // Cmaj7 F#m7b5 F#m7 Esus4 E Am7 Dmaj7
  BN: "[[c3,e3,g3,b3]@5 ~@5 [f#3,a3,c#4,e4] ~@3 [f#3,a3,c#4,e4]@4 ~@8 [e3,a3,b3,e4] ~@3 [e3,g#3,b3,e4]@10 ~@8, ~@14 a#3 ~@33]/3", // Cmaj7 F#m7 Esus4 E
})).s("gm_overdriven_guitar").gain(0.26).pan(0.6)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@9 A ~@16 B C D E@2 F D G@2 ~@8 H I J K J I L M ~@6 N O ~@16 H P H Q H I L M ~@27 R@2
>`.pickRestart({
  A: "e4 d4 c4 a3 ~ d3 ~ e3@9", B: "~@10 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2",
  C: "[a4,c5,e5]@3 ~ [g4,b4,d5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2", // Am G Am
  D: "[a4,c5,e5]@3 ~ [b4,d5,f#5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2", // Am Bm Am
  E: "[[a4,c5,e5]@3 ~ [g4,b4,d5]@2 ~@2 [f4,a4,c5]@5 ~ [e4,g#4,b4]@8 ~@4 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2]/2", // Am G F E Am
  F: "[a4,c5,e5]@4 [g4,b4,d5]@3 ~@3 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2", // Am G Am
  G: "[[a4,c5,e5]@3 ~ [g4,b4,d5]@3 ~ [f4,a4,c5]@5 ~ [e4,a4,b4]@11 ~@7]/2", // Am G F Esus4
  H: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@4 [g4,b4,d5]@3 ~", // Am G
  I: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [b4,d5,f#5]@4", // Am Bm
  J: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [g4,b4,d5]@3 ~", K: "[f4,a4,c5]@5 ~ [e4,g#4,b4]@9 ~",
  L: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [g4,b4,d5]@2 ~@2", M: "[f4,a4,c5]@5 ~ [e4,a4,b4]@10",
  N: "d5@9 ~ d5@2 ~ d#5 ~@2", O: "e5@13 ~@3", P: "~@2 [a4,c5,e5] ~@2 [a4,c5,e5] ~@2 [a4,c5,e5]@3 ~ [b4,d5,f#5]@3 ~",
  Q: "[f4,a4,c5]@5 ~ [e4,g#4,b4]@8 ~@2", R: "[~@14 [e2,e3]@7 ~@11]/2",
})).s("gm_brass_section").gain(0.5)

// other · electric guitar muted · "STEEL GTR"
const electric_guitar_muted = note("<~@58 A B C D E F G H I ~@8 J@2 K L M@2 N O ~@29>".pickRestart({
  A: "~@13 d3 e3 a3, ~@6 a2 ~", B: "b3 c4@2 a3@7 g3 b3 ~ a3 ~ g3", C: "~ f#3 ~ d3 e3@6 a2 b2 d3 e3 g3 a3",
  D: "~ b3 ~ [b3,c4] ~ d4 ~ e4@2 d4@2 c4@2 b3 a3@2", E: "b3@10 e3 g3 a3@3 ~", F: "e4 a3@2 d4@2 c4 e4@6 g3 a3 ~ c4",
  G: "~ b3 ~ g3 a3@2 e3@4 g3 a3 b3 c4 ~ b3", H: "~ a3 g3 ~ [f#3,g3] ~ d3 d3@2 b2 ~ [b2,d3] e3 f#3 g3 g#3",
  I: "a3 a#3 b3 c4 d4 [d4,d#4] d#4 e4!7 [d4,e4] e4", // D#maj7 Dsus2
  J: "[e4@2 d4 ~ c4 b3 ~@3 e3 ~ e3 g3 a3 c4 ~@4 g3@7 b2 d3 e3 g3 a3 c4, ~@15 b3@9 ~@8, ~@17 e3@7 ~@8]/2",
  K: "d4 e4 d4 c4 d4 c4 b3 c4 b3 a3 g3 a3 e3 ~ e3 d3", L: "e3@2 d3 ~ c3 ~ e3@4 b2 d3 e3 a3 b3 c4",
  M: "[~ e4 ~@7 g3 a3 e4 ~@5 c5@8 a4 e4 b3 d4 a3 c4 g3, ~@13 a4@6 ~@13, ~@15 b4@5 ~@12]/2",
  N: "b3 a3 e3 g3 [c3,d3] e3 ~@4 [a2,c#3] [b2,c3] d3 e3 d3 c3", O: "d4@2 [a3,c4] f3@2 ~ [e3,a3,b3]@8 ~@2",
})).s("gm_electric_guitar_muted").gain(0.8)

// drums · kick
const kick = s("bd").struct("<A@9 B C A@22 D E A@47 F G A@26 H ~>".pickRestart({
  A: "x!4", B: "x ~@6 x ~@8", C: "~@2 x!2", D: "x ~ x ~ x ~@2 x", E: "~ x", F: "x ~@2 x ~@4", G: "x ~ x!2",
  H: "x ~ x ~ x ~ x!2",
})).gain(0.66)

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

// drums · low tom
const low_tom = s("lt").struct("<~@9 A ~@20 A ~@2 B C ~@11 D ~@3 E ~@7 D ~@19 D ~@3 F G ~@26 B ~>".pickRestart({
  A: "~@7 x ~@8", B: "~@3 x", C: "~ x", D: "~@14 x!2", E: "~@7 x", F: "~ x ~@2", G: "x",
})).gain(0.52)

// drums · hihat
const hihat = s("hh").struct(`<
  A@9 B C D@3 E D@5 F@2 G D H D I A@7 ~ D@3 J D@3 J A@15 K D@2 J@2 D@3 J D@3 J D@3 J A@7 L C D@3 H D@3 H@3 D H M N F H O
  D@2 H N P@2 Q@2 R S ~
>`.pickRestart({
  A: "x!8", B: "x", C: "~@8 x ~ x!3 ~ x!2", D: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", E: "x ~ x!3 ~ x ~ x ~ x!3 ~ x!2",
  F: "x!5 ~ x!3 ~ x!3 ~ x!2", G: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!2", H: "x ~ x!7 ~ x!3 ~ x!2", I: "x ~ x!7 ~ x ~ x ~ x ~",
// … 28 more lines

More by Shakatak