Strudelify

Never Die Young

James Taylor

KeyA majorTempo140 bpm
0:00/0:00
// Never Die Young — Taylor James
// 140 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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 · fretless bass
const bass = note(`<
  A B C D E B F G H B I H@2 B I J K B E B L B L B M B A B L B L B N K G H G H G H G O E B K B L B L B A P E B L B L B E
  B L Q H B I H B R B C S E B E B L B L B A B E B L B L B K B E B L B L B K T L U A T L U A V@2
>`.pickRestart({
  A: "e2@5 ~ e2 ~ e2@7 ~", B: "a1@5 ~ a1 ~ b1@5 ~ b1 ~", C: "c#2@5 ~ c#2 ~ c#2@6 g#1 ~", D: "f#2@5 ~ f#2 ~ b1@5 ~ b1 ~",
  E: "e2@5 ~ e2 ~ e2@5 ~ e2 ~", F: "c#2@5 ~ c#2 ~ c#2@5 ~ c#2 ~", G: "f#2@5 ~ f#2 ~ a1@5 ~ a1 ~",
  H: "b1@5 ~ b1 ~ c#2@5 ~ c#2 ~", I: "c#2@5 ~ c#2 ~ a1@5 ~ a1 ~", J: "b1@5 ~ b1 ~ b1@6 b1 ~",
  K: "e2@5 ~ e2 ~ e2@6 e2 ~", L: "c#2@5 ~ c#2 ~ f#2@5 ~ f#2 ~", M: "e2@5 ~ e2 ~ e2@6 b1 ~", N: "e2@5 ~ e2 ~ e2@4 a1@4",
  O: "b1@5 ~ b1 ~ b1@5 ~ b1 ~", P: "a1@5 ~ a1 ~ b1@4 b1@4", Q: "a1@5 ~ a1 ~ a1@6 a1 ~", R: "c#2@5 ~ c#2 ~ c#2@7 ~",
  S: "a1@5 ~ a1 ~ a1@7 ~", T: "a1@5 ~ a1 ~ c2@5 ~ c2 ~", U: "a1@5 ~ a1 ~ a1@5 ~ a1 ~",
  V: "[e2@4 ~@2 e2 ~ e2@4 ~@2 e2@10 ~@8]/2",
})).s("gm_fretless_bass").gain(0.36)

// chords · acoustic guitar steel · "12 String"
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L M N K O P Q E R S N T J U F P B V W T X Y Z AA AB AC AD AE AD AC AF U R P W AG AH AG AI U AJ Z
  AH T Q AK J U Q AL AM M N AN AO N G B AP AQ Z B P B V AH AG Q P Q Z F AG Q AG J P F E Q AR N AR AS Z AT T AU A AV AG
  AW P AX@2
>`.pickRestart({
  A: "[g#3,b3,e4]@15 ~", B: "[a3,c#4,e4] [f#3,b3,d#4]", C: "[b3,c#4,e4,g#4]@9 ~ [b3,c#4,e4,g#4] ~@5",
  D: "~ [a3,c#4,e4,f#4]@3 ~ [a3,c#4,e4]@3", E: "[g#3,b3,e4]@9 ~ [g#3,b3,e4] ~@5", F: "[a3,c#4,e4]@4 ~ [f#3,b3,d#4]@3",
  G: "[b3,c#4,e4,g#4]@15 ~", H: "~ [e4,f#4,a4,c#5]@3 [c#4,e4,g#4,b4]@4", I: "~ [f#3,b3,d#4]@3 [b3,c#4,e4,g#4]@4",
  J: "~ [c#4,e4,g#4,b4]@3 [f#3,b3,d#4]@4", K: "~ [b3,c#4,e4,g#4]@3 [c#4,e4,g#4,b4]@4",
  L: "[f#3,b3,d#4] [b3,c#4,e4,g#4]", M: "~ [f#3,b3,d#4]@3 ~ [b3,c#4,e4,g#4]@3",
  N: "~ [c#4,e4,g#4,b4]@3 ~ [f#3,b3,d#4]@3", O: "~@6 [b3,d#4]@9 ~, ~ b2@7, ~ f#3@3",
  P: "~@2 e3 g#3@4 ~, [e4,g#4]@7 ~, b3@5 ~@11, ~ e2@6 ~", Q: "~ [a3,c#4,e4]@3 [f#3,b3,d#4]@4",
  R: "~ [a3,c#4,e4]@3 ~ [f#3,b3,d#4]@3", S: "[b3,c#4,e4,g#4]@4 ~ [a3,c#4,e4,f#4]@3",
  T: "[b3,c#4,e4,g#4]@4 ~ [c#4,e4,f#4,a4]@3", U: "f#4 g#4 f#4 e4@5, [e3,b4]",
  V: "~ [b3,c#4,e4,g#4]@3 ~ [c#4,e4,f#4,a4]@3", W: "~ [a3,c#4,e4]@3 [b3,d#4,f#4]@4",
  X: "[c#4,e4,g#4,b4] [b3,d#4,f#4,c#5]", Y: "[g#3,b3,e4]@2 [g#3,b3,e4] [a3,c#4,e4]",
  Z: "~@6 [b3,e4]@9 ~, ~ e2@7, ~ g#3@3", AA: "[e4,g#4,a4,c#5]@4 ~ [c#4,e4,g#4,b4]@3",
  AB: "~ [a3,c#4,d#4,f#4]@3 ~ [b3,c#4,e4,g#4]@3", AC: "~ [c#4,e4,g#4,a4]@3 [c#4,e4,g#4,b4]@4",
  AD: "[a3,c#4,d#4,f#4] [b3,c#4,e4,g#4]", AE: "~ [e4,g#4,a4,c#5]@3 [c#4,e4,g#4,b4]@4",
  AF: "~@2 d#3 f#3@4 ~, [d#4,f#4]@7 ~, a3@5 ~@11, ~ b2@6 ~", AG: "[b3,c#4,e4,g#4] [c#4,e4,f#4,a4]",
  AH: "[c#4,e4,g#4,b4] [f#3,b3,d#4]", AI: "~ [c#4,e4,g#4,b4]@3 [b3,d#4,f#4]@4",
  AJ: "[c#4,e4,g#4,b4]@2 [f#3,b3,d#4] [b3,c#4,e4,g#4]", AK: "[b3,c#4,e4,g#4] [a3,c#4,e4,f#4]",
  AL: "~ [b3,c#4,e4,g#4]@3 [e4,f#4,a4,c#5]@4", AM: "~@2 c#3 e3@4 ~, [c#4,e4]@7 ~, g#3@5 ~@11, ~ a2@6 ~",
  AN: "[b3,c#4,e4,g#4] [c#4,e4,g#4,b4]", AO: "[f#3,b3,d#4]@4 ~ [b3,c#4,e4,g#4]@3",
  AP: "~@6 [b3,e4]@9 ~, ~ c#3@7, ~ g#3@3", AQ: "[c#4,e4,g#4,b4]@15 ~", AR: "~ [b3,c#4,e4,g#4]@3 [c#4,e4,f#4,a4]@4",
  AS: "[c#4,e4,g#4,b4]@4 ~ [b3,d#4,f#4]@3", AT: "~ [a3,c#4,e4]@3 [a#3,c4,e4,g4]@4",
  AU: "~@6 [g#3,c#4]@9 ~, ~ a2@7, ~ e3@3", AV: "[a3,c#4,e4]@4 ~ [a#3,c4,e4,g4]@3", AW: "b3 c#4 b3 a3@5, [a2,e4]",
  AX: "[[e4,g#4,b4,e5]@4 ~@4 [e4,g#4,b4,e5]@3 ~@3 [e4,g#4,b4,e5]@16 ~@2]/2", // E
})).s("gm_acoustic_guitar_steel").gain(0.31)

// chords · acoustic guitar steel · "Guitar Steel"
const acoustic_guitar_steel_2 = note(`<
  A B C D E F G H I J K L M N O P Q F E R S T U V W X Y Z AA AB AC AD AE AF AG AH H AI AJ AI AK AL Q F Q AM AN AO AP T W
  AQ Q AR AN AM AA AS AT AU S AV AW AX K L AY AZ BA AZ BB Q BC Y BD BE J BE AU E B Y BF BG AM S AR E BH AT F AA AX AC T
  W BI BJ AV Q BK BL BM Q BN@2
>`.pickRestart({
  A: "e2@4 [b3,e4]@3 ~@3 [b3,e4]@2 ~@4", B: "[a3,c#4]@2 ~@2 [a3,c#4]@3 ~@5 [b3,d#4]@2 ~@2",
  C: "[b3,e4] ~@3 [b3,e4]@2 ~@2 c#3@2 [b3,e4]@2 ~@4", D: "~@2 [a3,e4] ~@2 [a3,c#4]@3",
  E: "~@2 e2@2 ~@2 [b3,e4]@7 ~@3, ~ g#3 ~@2", F: "[a3,c#4]@7 ~@3 [b3,d#4]@6",
  G: "[b3,e4]@2 ~@2 [b3,e4]@3 ~@3 c#3@2 g#3 ~@3", H: "~ [a3,e4]@3 ~@2 [g#3,c#4] ~",
  I: "[b3,d#4]@2 ~@2 [b3,d#4]@3 ~@5 [b3,e4]@2 ~@2", J: "[g#3,c#4]@2 ~@2 [g#3,c#4]@3 ~ [b3,d#4]@7 ~",
  K: "[b3,e4]@7 ~@5 [g#3,c#4]@2 ~@2", L: "~ [b3,d#4]@3 ~ [b3,e4]@3", M: "[b3,d#4]@7 ~ [b3,e4]@2 ~@2 [b3,e4]@3 ~",
  N: "~@4 [g#3,c#4]@2 ~@2 [b3,d#4]@2 ~@2 [b3,d#4]@3 ~", O: "~@4 [b3,e4]@2 ~@2 [g#3,c#4]@7 ~",
  P: "~ b2 f#3 [b3,d#4]@4 ~", Q: "[b3,e4]@2 ~@2 [b3,e4]@3 ~@3 e2@2 g#3 ~@3", R: "[a3,c#4]@7 ~@5 [b3,d#4]@2 ~@2",
  S: "[b3,e4]@2 ~@2 [b3,e4]@3 ~ [a3,e4]@7 ~", T: "~@2 [g#3,c#4] ~@2 [b3,d#4]@3", U: "~@4 [b3,e4]@2 ~@2 [a3,e4]@7 ~",
  V: "[g#3,c#4]@2 ~@2 [g#3,c#4]@3 ~@5 [b3,d#4]@2 ~@2", W: "[b3,e4,g#4] ~@3 [b3,e4,g#4]@2 ~@10",
  X: "~@2 [a3,c#4] ~@2 [b3,d#4]@3", Y: "[b3,e4] ~@3 [b3,e4]@2 ~@2 e2@2 [b3,e4]@2 ~@4", Z: "~@2 [a3,c#4]@6 [b3,d#4]@7 ~",
  AA: "[b3,e4]@7 ~ [a3,e4]@2 ~@2 [a3,e4]@3 ~", AB: "[a3,c#4]@7 ~ [b3,d#4]@7 ~", AC: "[b3,e4]@7 ~@3 [a3,e4]@6",
  AD: "~@2 [g#3,c#4]@6 [c#4,d#4]@2 ~@2 [c#4,d#4]@3 ~", AE: "~ [b3,e4]@3 [b3,e4] ~ [a3,c#4] ~",
  AF: "~@2 [b3,e4] ~@3 e2 ~ [b3,e4]@7 ~", AG: "~@4 [a3,e4]@2 ~@2 [g#3,c#4]@7 ~",
  AH: "~@4 [a3,d#4]@2 ~@2 [b3,e4]@2 ~@2 [b3,e4]@3 ~", AI: "[a3,d#4]@2 ~@2 [a3,d#4]@3 ~ [b3,e4]@7 ~",
  AJ: "[a3,e4]@7 ~@5 [g#3,c#4]@2 ~@2", AK: "~@4 [a3,e4]@2 ~@2 [g#3,c#4]@2 ~@2 [g#3,c#4]@3 ~",
  AL: "~ b2 f#3 [a3,d#4]@4 ~", AM: "~ [a3,c#4]@3 ~ [b3,d#4]@3", AN: "~@2 [b3,e4]@6 [a3,e4]@7 ~",
  AO: "[g#3,c#4]@2 ~@2 [g#3,c#4]@3 ~ [b3,d#4]@2 ~@2 [b3,d#4]@3 ~", AP: "~@2 [b3,e4]@6 [a3,e4]@2 ~@2 [a3,e4]@3 ~",
  AQ: "~@2 [g#3,c#4] ~ [b3,d#4] ~ [g#3,c#4] ~", AR: "~@2 [g#3,c#4]@6 [b3,d#4]@7 ~", AS: "~ [g#3,c#4]@3 ~@2 [b3,d#4] ~",
  AT: "[b3,e4] ~ [b3,e4] ~@5", AU: "[a3,c#4]@7 ~ [b3,d#4]@2 ~@2 [b3,d#4]@3 ~", AV: "~ a2 e3 [g#3,c#4]@4 ~",
  AW: "~@2 [b3,d#4]@6 [b3,e4]@2 ~@2 [b3,e4]@3 ~", AX: "[g#3,c#4]@7 ~@3 [b3,d#4]@6", AY: "~@2 [g#3,c#4] ~@3 [b3,d#4] ~",
  AZ: "~@2 [b3,e4] ~@3 c#3 ~ [b3,e4]@7 ~", BA: "[a3,c#4]@2 ~@2 [a3,c#4]@3 ~ [b3,d#4]@2 ~@2 [b3,d#4]@3 ~",
  BB: "a2@4 [g#3,c#4]@3 ~@3 [g#3,c#4]@2 ~@4", BC: "~@4 [a3,c#4]@2 ~@2 [b3,d#4]@2 ~@2 [b3,d#4]@3 ~",
  BD: "~ [a3,c#4]@3 ~@2 [b3,d#4] ~", BE: "[b3,e4]@7 ~@5 [a3,e4]@2 ~@2", BF: "~@2 [a3,c#4] ~@3 [b3,d#4] ~",
  BG: "~@2 [b3,e4] ~@3 [a3,e4] ~", BH: "[a3,c#4]@2 ~@2 [a3,c#4]@3 ~ [b3,d#4]@7 ~",
  BI: "~@2 [a3,c#4]@6 [a#3,e4]@2 ~@2 [a#3,e4]@3 ~", BJ: "[b3,e4]@2 ~@2 [b3,e4]@3 ~@5 [a3,e4]@2 ~@2",
  BK: "~ [a3,c#4]@3 ~ [a#3,e4]@3", BL: "[b3,e4]@2 ~@2 [b3,e4]@3 ~ [a3,e4]@2 ~@2 [a3,e4]@3 ~",
  BM: "~@2 [g#3,c#4] ~@3 a2@2 [g#3,c#4]@5 ~@3", BN: "[[b3,e4]@6 ~@2 [b3,e4]@4 ~@2 [b3,e4]@13 ~@5]/2",
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · flute
const flute = note(`<
  ~@16 A B C D E@2 F G@2 H I J K L M N O P Q R S@3 T@2 ~ U V W D X Y Z AA@2 H I AB@2 AC AD AE AF ~@3 AG AH AI@2 AJ AK@3
  ~ AL AM AN@2 AO AP AQ AR AS AT AS AU AV@2 AW@2 AX AY AS AZ BA BB BC@2 BD@2 ~@9
>`.pickRestart({
  A: "~@4 [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5]@2 [a3,g#4,a4]@2", // E5 Amaj7
  B: "[c#4,a4,c#5] [b3,g#4,b4] f#4 g#4, [b3,b4] ~@7 [b3,b4]@7 ~", // F#m E B
  C: "~@6 [e4,b4,e5]@4 [e4,e5] ~ [e4,b4,e5]@2 [b3,g#4,b4]@2, ~@5 b4 ~@2", // E5 E E5 E
  D: "[c#4,a4,c#5]@2 [b3,g#4,b4]@2 f#4@2 e4 f#4, ~@8 [b3,b4]@7 ~", // F#m E B
  E: "[g#4@3 ~ g#4@2 ~@6 a4@2 ~@6 g#4@2 ~@2 [a3,a4]@8, [b3,b4] [c#4,c#5] [b3,b4] ~, ~@6 a4@5 ~@3 g#4@5 ~@3 f#4@10]/2", // A B C# B
  F: "d#4@2 e4@2 f#4@2 [b3,g#4,b4]@2 a4@3 ~ a4@4, [b3,b4]@5 ~@3 [c#4,c#5]@8", // E B C#
  G: "[g#4@4 g#4@4 [a3,a4]@8 ~@4 a4 ~ b4 ~ b4@2 [e4,b4,e5] ~ [e4,b4,e5]@2 [b3,g#4,b4]@2, [b3,b4]@4 f#4@5 ~@2 [e4,e5]@2 ~@3]/2", // A E5 E B E
  H: "[c#4,a4,c#5] [b3,g#4,b4] [a3,f#4,a4] [b3,g#4,b4]", // F#m E D E
  I: "~@6 [e4,b4,e5]@3 ~ [e4,e5] ~ [e4,e5]@2 [b3,g#4,b4]@2, ~@5 b4@2 ~", // E5 E
  J: "[c#4,c#5] [b3,b4] [b3,g#4,b4]@2 f#4@2 e4 f#4, a4 ~ [b3,b4]@2", // C# B E B
  K: "~ [c#4,c#5]@3 [b3,g#4,b4]@4 [c#4,a4,c#5]@8, g#4@3 ~@13", // C# E F#m
  L: "g#4@2 f#4 ~ f#4@3 ~ f#4@4 e4@2 f#4@2, [b3,b4]@7 ~ [b3,b4]@8", // B
  M: "g#4 ~ g#4 ~ g#4@2 ~@6 a4@2 a4@2, [b3,b4] [c#4,c#5], ~@6 a4@5 ~@5", // B C#
  N: "g#4@2 g#4 ~ g#4@4 f#4@4 f#4@4, [b3,b4] [a3,a4]", O: "[g#3,g#4], e4@7 ~", P: "~@14 b4 ~",
  Q: "c#5@2 b4 ~ c#5@4 c#5@4 b4@2 c#5 ~", R: "c#5@2 b4 ~ b4@4 b4@2 c#5@2 ~@4",
  S: "[b4@2 [c#5,d#5] ~ b4@2 c#5@4 b4@3 ~ b4@7 b4 ~@2 c#5@2 b4@2 b4@2 c#5@4 b4 ~ b4@2 a4@2 c#5@2 b4 ~ b4@2 [g#4,a4] ~]/3", // C#sus2 Amaj7
  T: "[b4@2 c#5@2 ~@4 c#5@2 b4@2 b4@2 c#5@4 b4@2 g#4@4 f#4@7 ~]/2",
  U: "~@2 [e4,b4,e5] ~ [e4,e5]@2 [e4,e5] ~ [e4,e5]@4 [b3,b4] ~ [b3,e4,b4]@2, ~@2 b4@2 g#4 ~ g#4 ~", // E5 E B E5
  V: "[c#4,c#5]@2 d#4 ~ [a3,a4]@2 [b3,b4] ~, e4 ~ [b3,b4]@2 ~@4, ~@3 c#4@2 ~@3", // C# A B
  W: "~@4 a4@2 ~@2 [e4,e5]@2 [e4,e5] ~ [e4,e5]@2 [b3,g#4,b4]@2, ~@3 b4@2 b4@2 ~", // E
  X: "g#4 ~ g#4 ~ g#4@4 a4@2 ~@2 a4 ~ a4@2, [b3,b4] [c#4,c#5]", Y: "g#4 ~ g#4 ~ g#4@4 [a3,a4]@8, [b3,b4]@4 f#4 ~@3",
  Z: "e4@2 f#4@2 g#4@3 ~ a4@4 f#4 ~ a4@2, [b3,b4] [c#4,c#5]", // B C#
  AA: "[~@2 g#4@6 [a3,a4]@7 ~@3 a4 ~ b4 ~ b4 ~ [e4,e5]@2 b4 ~ [e4,b4,e5]@2 [b3,g#4,b4]@2, [b3,b4]@8 f#4@4 ~@3 [g#3,g#4]@7 ~@2 b4 ~@7]/2", // A E E5 E B G#
  AB: "[[c#4,a4,c#5]@2 [b3,a4,b4]@2 [b3,g#4,b4]@4 f#4@4 e4@2 f#4@2 g#4@3 ~ g#4@2 ~@4 a4@2 ~@4, ~ [b3,b4]@2 [c#4,c#5], ~@11 a4@2 ~@3]/2", // F#m B7 E B C#
  AC: "g#4 ~ g#4 ~ g#4@3 ~ f#4@5 e4 ~ g#4, [b3,b4] [a3,a4], ~@7 f#4", // B A
  AD: "[g#3,g#4] [a3,a4] [b3,g#4,b4]@2 [c#4,a4,c#5]@2 [c#4,a4,c#5] g#4, ~@2 g#4 ~@13", // G# A E F#m
  AE: "[b3,b4] g#4 ~ g#4 [a3,f#4,a4]@2 [a3,f#4,a4]@2, ~ [b3,b4] ~@2", AF: "[g#3,g#4], e4@5 ~@11",
  AG: "~ f#4 e4@3 f#4@2 g#4@9, g#4 ~@7", AH: "e4@2 f#4 f#4@5",
  AI: "[g#4@2 a4@2 b4@2 f#4@2 ~@2 e4@2 f#4@2 f#4@7 ~@3 [c#4,c#5]@4 [c#4,c#5]@2 [b3,g#4,b4]@2, ~@22 g#4@6 g#4 ~@3]/2", // C# E
  AJ: "[a3,e4,a4]@3 ~ [a3,a4]@2 [b3,b4] ~ [b3,f#4,b4]@3 ~ [b3,f#4,b4] ~ [b3,b4]@2, ~@4 e4 ~ e4@2 ~@6 f#4 ~", // A5 A B B5 B
  AK: "[[c#4,c#5]@2 [c#4,c#5]@2 g#4@2 [c#4,b4,c#5]@4 [c#4,g#4,c#5] ~ [c#4,g#4,c#5]@2 b3@2 [c#4,c#5]@2 [b3,g#4,b4] ~ [b3,g#4,b4]@2 ~@2 [c#4,c#5]@2 [b3,a4,b4]@2 g#4@2 ~@2 [a3,a4]@4 [b3,b4]@2 ~@2 [b3,b4]@6 ~@2, g#4 ~ g#4 ~@11 b4@4 ~@4 b4@4 ~@4 f#4@4 ~@14]/3", // C# C#7 C#5 C# E C# B7 A …
  AL: "~@4 [e4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,b4,e5]@2 [b3,g#4,b4]@2", // E E5 E
  AM: "[c#4,a4,c#5] [b3,g#4,b4] [a3,a4] [b3,b4], ~ f#4", // F#m E A B
  AN: "[~@4 b4 ~ [e4,b4,e5] ~ [e4,b4,e5] ~ [e4,e5] ~ [e4,g#4,e5]@2 [b3,b4]@2 [c#4,c#5]@2 [b3,g#4,b4]@2 [a3,a4]@4 ~@4 e4@2 f#4@2, ~@5 b4 ~ a4@2 ~ f#4@4 ~@2, ~@24 [b3,b4]@7 ~]/2", // E5 E B C# E A B
  AO: "g#4@3 ~ g#4 ~ g#4@2 a4 ~ a4 ~ a4 ~ a4@2, [b3,b4] [c#4,c#5]", // B C#
  AP: "g#4@3 ~ g#4@2 ~@2 [a3,a4]@8, [b3,b4] ~, ~@3 f#4@5", // A B
  AQ: "[g#3,e4,g#4] [a3,f#4,a4] [b3,g#4,b4] [b3,e4,b4] [c#4,a4,c#5]@2 a4 g#4, ~@3 [c#4,c#5]", // C#m D E E5 F#m C#
  AR: "~@2 g#4@2 [b3,f#4,b4]@4 [a3,a4]@3 ~@5, [b3,b4] ~@3", // B5 A B
  AS: "~@4 b4@2 [e4,e5]@2 ~@2 [e4,e5] ~ [e4,e5]@2 [b3,b4]@2, ~@2 b4 g#4", // E B
  AT: "[c#4,a4,c#5]@2 [b3,g#4,b4]@2 [a3,a4]@2 ~ g#4, b4 ~@7 f#4@7 ~, ~@3 [b3,b4]", // F#m E A B
  AU: "[c#4,a4,c#5]@4 [b3,g#4,b4]@4 f#4@6 e4 f#4, a#4 ~@7 [b3,b4]@8", // F#m E B
  AV: "[[c#4,c#5]@2 ~@2 g#4@4 a4 ~ a4@2 a4@2 ~@6 g#4@2 ~@2 [a3,a4]@8, g#4@4 ~@10 g#4@5 ~@3 f#4@10, ~ [b3,b4]@3 [c#4,c#5]@4 [b3,b4]@4 ~@4]/2", // C# A B C# B
  AW: "[[g#3,e4,g#4]@2 [a3,f#4,a4]@2 [b3,g#4,b4]@2 [b3,e4,b4]@2 b4@2 a4@2 a4@2 ~@6 g#4@2 ~ [a3,a4]@4 ~ [a3,a4]@2 ~@2, ~ [c#4,c#5] [b3,b4] ~, ~@14 g#4@5 ~@3 f#4@6 ~@4]/2", // C#m D E E5 A C# B
  AX: "~@4 a4@2 [e4,e5]@2 ~@2 [e4,e5] ~ [e4,e5]@2 [b3,b4]@2, ~@6 b4 ~ b4@4 g#4@4", // E B
  AY: "[c#4,a4,c#5]@2 [b3,g#4,b4]@2 [a3,f#4,a4]@3 [b3,g#4,b4], b4 ~@15", // F#m E D E
  AZ: "[c#4,c#5]@2 [b3,b4]@2 [a3,g#4,a4]@4 f#4@6 e4 f#4, a4 ~ [b3,b4]@2, b4 ~@15", // C# B Amaj7 B
  BA: "g#4@3 ~ g#4@2 [c#4,a4,c#5]@6 [c#4,a4,c#5]@4, [b3,b4]@6 b4 ~@9", // F#m B
  BB: "[b3,g#4,b4]@2 g#4 ~ [a3,a4]@4, ~ [b3,b4] ~@2, ~@3 f#4@5", // E A B
  BC: "[[g#3,e4,g#4]@2 [a3,f#4,a4]@2 [b3,g#4,b4]@2 [b3,e4,b4]@2 [c#4,a4,c#5]@3 ~ [c#4,a4,c#5]@2 [b3,g#4,b4]@5 ~ g#4@2 ~@2 [a3,a4]@3 ~ [a3,f#4,a4]@4, ~@5 [b3,b4] ~@2, ~@22 f#4@5 ~@5]/2", // C#m D E E5 F#m E A D …
  BD: "[[g#3,g#4]@7 ~@9, e4@9 ~@7]/2", // G#
})).s("gm_flute").gain(0.34).pan(0.6)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@2 x]!94 [x ~@2 x!2 ~@3]!2 [x ~@2 x!2 ~@2 x]!9 ~>").gain(0.36)

// drums · rim
const rim = s("rim").struct(`<
  A@7 B A@7 B A@7 B A@7 ~ A@11 B A@7 B A@9 B A@8 B A@7 B A@7 B A@7 B@3 A B A@3 ~ B@2 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A ~@7 B ~@7 A ~@7 C ~@11 A ~@7 A ~@26 D ~@7 B ~@7 E@2 ~@2 B ~@3 C A C ~
>`.pickRestart({
  A: "~@10 x!3 ~@3", B: "~@10 x ~@3 x!2", C: "~@3 x", D: "~@8 x ~ x!3 ~ x ~", E: "~@5 x!2 ~",
})).gain(0.41)

// drums · clap
const clap = s("cp").struct(`<
  ~@7 A B@8 ~@7 A ~@7 B ~@11 A ~@7 A ~@9 B ~@8 B ~@7 B ~@7 B ~@7 A@2 B ~ B ~@3 B A B ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<~@11 A B A B A B ~@7 B ~@7 B ~@8 C D ~@18 A ~@8 A ~@25 A ~@9>".pickRestart({
  A: "~@7 x", B: "x", C: "~@4 x ~@2 x", D: "~ x ~@2",
})).gain(0.41)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A ~ A ~ B ~ A C A ~ D E F ~ F G A ~ A E A ~ A C A H E H A ~ H G A ~ A ~ F ~ F ~ H@2 A C A ~ A E B H@2 C A ~ A H A ~ A
  G A G A ~ I E A H@3 G A H E G A H A G A ~ B E H@2 J G A H K G H@2 B C@2 G A G A H A G C K ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~ x ~ x", C: "~ x ~ x ~@4", D: "~ x ~@5 x", E: "~ x ~@3 x ~@2", F: "~ x ~@3 x ~ x",
  G: "~ x ~@6", H: "~ x ~ x ~ x ~@2", I: "~@5 x ~ x", J: "~@5 x ~@2", K: "~@3 x ~ x ~@2",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@7 A ~@3 B ~ B ~ B ~ C D ~@4 C ~@2 E ~@3 F G ~@9 H ~@19 I ~@8 I ~@25 I ~@5 J ~@3
>`.pickRestart({
  A: "~@6 x!2", B: "~@3 x", C: "~@11 x!2 ~ x ~", D: "x", E: "x!2 ~@6", F: "~@3 x ~@4", G: "x!2 ~ x!5",
  H: "~@3 x!2 ~ x ~@9", I: "~@5 x ~@2", J: "~@3 x ~ x ~@2",
// … 55 more lines

More by James Taylor