Strudelify

Always & Forever

Heatwave

KeyD majorTempo52 bpm
0:00/0:00
// Always & Forever — Heatwave
// 52 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 79 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(52/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.

// other · drawbar organ · "Organ"
const drawbar_organ = note("<A B C B D E@2 F G H@2 F I ~@10 J K L M N ~@23 O P Q R Q R Q R S ~@15 T@4>".pickRestart({
  A: "~@29 d3@3", B: "e3@3 a3@2 f#3@21 ~ g3@2 a3@3", C: "b3@3 a3@2 d3@11 e3@2 ~ d3@2 a2@7 ~ d3@3",
  D: "b3@3 a3@2 d3@11 e3@14 ~@2", E: "[d4@32 c#4@27 b3@2 c#4@2 ~, a3@59 ~@5, f#4@7 ~]/2", F: "[b3,d4] [f#3,a3]",
  G: "[g3,b3]@16 [a3,c#4]@7 ~ g3@7 ~, ~@23 b3@8 ~", H: "[d4@32 c#4@27 b3@2 c#4@3, a3@57 ~@7]/2", I: "[g3,b3] ~",
  J: "~@29 d3@2 ~", K: "e3@2 a3@3 f#3@18 ~ c#4@2 d4@3 e4@3", L: "c#4@25 ~@2 d4@2 e4@3",
  M: "f#4@3 g4@2 a4@21 g4@3 f#4@3", N: "d4@31 ~", O: "[e4,f#4,a4,c#5]", P: "[e4,g4,a4,c5]@16 [d4,g4,a4,b4]@15 ~",
  Q: "~ f4 [b3,c4,d4,e4] [c3,d3,e3,f3,g3,a3] [g2,a2,b2] ~@3 [c#5,f#5,a5]@24, [f#4,a4,c#5]@2 ~@6 b5 ~@23", // Cmaj7 Dm7 G F#m
  R: "[a4,c5,f5]@15 ~ [g4,b4,e5]@15 ~", // F Em
  S: "~ f4 [b3,c4,d4,e4] [c3,d3,e3,f3,g3,a3] [g2,a2,b2] ~@4 f4 [b3,c4,d4,e4] [c3,d3,e3,f3,g3,a3] [g2,a2,b2] ~@4 f4 [b3,c4,d4,e4] [c3,d3,e3,f3,g3,a3] [g2,a2,b2] ~@4 f4 [b3,c4,d4,e4] [c3,d3,e3,f3,g3,a3] [g2,a2,b2] ~@3, [f#4,d5,f#5] ~@3 [f#4,d5,f#5] ~@3 [f#4,d5,f#5] ~@3 [f#4,d5,f#5] ~@3", // Cmaj7 Dm7 G Cmaj7 Dm7 G Cmaj7 Dm7 …
  T: "[~@30 [a4,c#5,e5]@69 ~@29]/4", // A
})).s("gm_drawbar_organ").gain(0.15)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA A AB AC AD M N O P Q R S T U V AE A AF AG AH AI AJ AK AL AM
  AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF V BG BH ~ BI@4
>`.pickRestart({
  A: "d2@12 ~ d2 ~@2 d2@14 ~@2", B: "g1@12 ~ g1 ~@2 a1@13 a1@3", C: "d2@12 ~ d2 ~@2 d2@12 ~ d2@3",
  D: "g1@12 g1!2 ~@2 a1@14 ~@2", E: "d2@11 ~@2 d2 ~@2 d2@15 ~", F: "b1@12 ~ b1 ~@2 b1@12 ~ a1@3",
  G: "g1@9 ~ a1 ~@2 b1 ~@2 d2@9 ~@2 a2 ~ d2 ~@2", H: "e2@10 b1 ~@2 a#1 ~@2 a1@2 a1 ~ a1!2 ~ a1 a1@2 ~ a1!2 b1 a1 ~",
  I: "d2@12 ~ d2 ~@2 d2@11 f#1 ~ a1 ~@2", J: "b1@11 ~@2 b1 ~@2 b1@10 ~ b1 ~ a1 ~@2",
  K: "g1@10 ~ a1 ~ b1 ~@2 d2@10 ~ a2@2 d2@2 ~", L: "e2@10 ~ f#2@2 g2@3 a2!3 ~ a2!3 ~ a2!2 a1 ~ a1 b1 a1 ~",
  M: "d2@8 ~@3 a1@2 b1@2 ~ d2@8 ~@3 e1@2 f#1@2 ~", N: "g1@8 d2@5 b1@3 e2@10 ~ b1@2 a#1@2 ~",
  O: "a1@10 ~ e2@2 e2@2 ~ a1@5 e2 ~@2 a2 e2 ~@2 b1 a1@3", P: "d2@9 ~@2 a1@2 g1 ~@2 f#1@10 ~@3 f#1@2 ~, ~@29 e1 ~@2",
  Q: "g1@6 ~@2 d2@5 b1@3 e2@13 ~@3", R: "f#1@10 ~ c#2@2 c#2@2 ~ f#1@9 ~@2 b1@2 c#2@2 ~",
  S: "g1@8 d2@5 b1@3 e2@2 b2@3 a#2@3 a2@6 ~ b1", T: "d2@8 a1 d2 ~@2 a1 g1@3 f#1@8 f#1@3 ~@2 f#1@3, ~@29 e1 ~@2",
  U: "g1@8 d2@6 b1@2 e2@3 f#2@3 g2@2 a2 ~@7", V: "d2@12 ~ d2 ~@2 d2@16", W: "g2@12 ~ g2@3 a2@2 ~@3 a1@11",
  X: "d2@12 ~ d2 ~@2 d2@11 a2@2 a#2@2 ~", Y: "b2@12 ~ b2 ~@2 b2@9 ~@2 f#2 ~ a2@2 ~",
  Z: "g2@10 a1@2 ~ b1@2 ~ d2@11 a2 ~ d2@3", AA: "e2@4 ~ e2@5 ~ e3 e2 b2 ~@2 a2 a2@9 ~@2 a1 a1@2 ~",
  AB: "b1@12 ~ b1 ~@2 b1@9 ~ b1 ~@2 a1 ~@2", AC: "g1@9 ~ a1 ~@2 b1@2 ~ d2@8 a2@5 d2@3",
  AD: "e2@11 b1@2 a#1@3 a1!3 ~ a1!3 ~ a1!2 b1 ~ c2 c#2@3", AE: "g1@12 ~ g1@2 ~ a1@13 ~@3",
  AF: "g2@14 ~@2 a2@2 ~@4 d3 d#3 e3 ~@4 e2 ~ d#2", AG: "d2@9 ~@4 d2 ~@2 d2@15 ~",
  AH: "g2@12 ~ g2@3 a2@8 ~@3 a1 ~ b1 ~@2", AI: "d2@11 ~@2 d2@2 ~ d2@12 ~@4",
  AJ: "g1@9 ~ g1@2 ~ g1@2 ~ a1@8 ~@2 b1@3 c2@2 ~",
  AK: "d2 ~ d2 ~ d2!2 ~ d2!3 ~@2 d2!2 ~ d2 ~ d2 ~@2 d2!2 ~@2 d2!2 ~@2 d2!2 ~ d2",
  AL: "g1!2 ~@2 g1!2 ~ g1!3 ~@2 g1!2 ~ g1 a1!2 ~@2 a1!2 ~ a1 ~@2 a1 b1@2 c2@2 ~",
  AM: "d2 ~ d2 ~ d2!2 ~ d2 a1@3 ~ a1 b1@2 ~ d2!2 ~@2 d2 ~@2 d2 a1 d2 ~@2 b1 a1@2 ~",
  AN: "g1!2 ~@2 g1!2 ~ f#1 g1!2 ~@2 g1 f#1@2 g1 a1 g1 a1@2 g1 a1@2 ~ a1@3 b1@2 c#2@3, ~@23 g1@2 ~@7",
  AO: "d2@2 ~@6 a1@2 ~@6 d2@2 ~@6 a1 ~ d2@3 a1@2 ~",
  AP: "g1@6 ~@3 f#1 g1@3 ~@2 g1 a1@2 a1@2 ~ a1 ~ a1@2 ~ b1 ~@2 a1@2 ~, ~@8 g1@2 ~@13 g1 ~@8",
  AQ: "d2@2 ~@6 a1@2 ~@6 d2@3 ~@5 a1 d2@4 a1@2 ~",
  AR: "g1@6 ~@2 g1@2 ~@2 f#1 g1@2 ~ a1 ~ a1@2 g1 a1@2 g1 a1@2 a1 ~ c2 a1@2 c#2, ~@11 g1@2 ~@19",
  AS: "d2@2 ~@6 a1@3 ~@5 d2@4 ~@4 a1@3 d2@2 a1@3",
  AT: "g1@7 ~ g1@3 ~ f#1 g1@2 ~ a1@4 ~ a1@2 a1@3 ~ b1 a1 c#2@3, ~@11 g1@2 ~@10 g1 ~@8",
  AU: "d2@2 ~@6 a1@3 ~@5 d2@3 ~@5 a1@3 d2@3 a1@2", AV: "g1@7 ~ g1@5 f#1@2 g1 a1@5 a1@2 g1 a1@3 ~@2 c#2@3",
  AW: "d2@10 ~@3 d2 ~@2 d2@16", AX: "g2@12 ~ g2@3 a2@13 ~@3", AY: "d2@10 ~@3 d2 ~@2 d2@13 ~@3",
  AZ: "g1@11 ~@3 g1@2 a1@7 ~@3 a1 ~ c2 c#2@3, ~@27 b1@2 ~@3", BA: "d2@7 ~ a2 ~@7 d2@11 ~@2 d2@3",
  BB: "g2@11 ~@2 g2@3 a2@5 d3 ~ d#3 e3 ~@3 b1 ~ d#2 ~, ~@29 e2@2 ~", BC: "d2@8 a2 ~@7 d2@15 ~",
  BD: "g1@12 ~ g1@2 ~ a1@14 ~@2", BE: "d2@13 ~@3 d2@11 ~@2 d2@3", BF: "g2@12 ~@2 g2@2 a2@11 ~@5", BG: "~ g1@15",
  BH: "~@2 a1@23 ~@7", BI: "[~@29 d2@9 ~ a2@10 d3@5 a2@2 d2@44 ~@28]/4",
})).s("gm_fretless_bass").gain(0.24)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H C I G J K L M N O P Q R S T U V W X Y V W Z AA@2 L M N O P Q R S T U V AB AC AD AE AF AG AH@2 AF AG
  AH@2 AF AG AI AJ AK AL AM E AN AO AP AQ AR AS AT AU@3 ~ AV@4
>`.pickRestart({
  A: "~ a4@7 [c#4,e4,f#4,a4] ~@5 c#4@2 [c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@7, [c#4,e4,f#4] ~@3", // F#m7 F#7
  B: "[c4,d4,f4,a4]@8 [c4,d4,f4,a4] ~@4 c4@3 b3@5 b3@3 d5 b4@3 a4 e4@3, ~@2 [d4,e4,g4] ~", // Dm7 Em7
  C: "[c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@4 c#4@2 ~ [c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@7", // F#m7
  D: "[c4,d4,f4,a4]@8 [c4,d4,f4,a4] ~@5 c4@2 [b3,d4,e4,g4]@8 [b3,d4,e4,g4] ~@2 [b3,g4]@2 b4@3", // Dm7 Em7 Em
  E: "[c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@4 c#4@3 [c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@7", // F#m7
  F: "[d4,f#4,a4,b4]@8 [d4,f#4,a4,b4] ~@4 d4@3 [d4,f#4,a4,b4]@8 [d4,f#4,a4,b4] ~@7", // Bm7
  G: "[e4,g4,b4,d5]@8 [e4,g4,b4,d5] ~@4 e4@3 [f#4,a4,c#5]@8 [f#4,a4,c#5] ~@7", // Em7 F#m
  H: "e4@5 e4@2 ~ [e4,g4,b4] ~@7 b4 ~ g4@2 d4 [g4,b4]@2 d4 b4 ~@3 d4 [d4,g4,b4]@3, [g4,b4]@8 ~@7 d4@4 ~@2 d4 ~@2 [d4,g4]@4 ~@4, ~@2 d5!2, ~@16 g4@2 ~@9 g4@2 ~@3, ~@17 b4@4 ~@4 b4@4 ~@3", // Em G G5
  I: "[d4,f#4,a4,b4]@8 [d4,f#4,a4,b4] ~@7 [f#4,a4,b4]@8 [d4,f#4,a4,b4] ~@7, ~@15 d4@9 ~@8", // Bm7 B7 Bm7
  J: "[e4,g4,b4]@8 [e4,g4,b4] ~@6 d4 [g4,b4] ~ g4@2 ~@2 d4@2 ~@4 g4 [d4,g4,b4] ~@2, ~@16 d5@8 ~ b4@4 ~@3, ~@17 b4@3 d4@2 ~@5 d4@2 ~@3, ~@21 [g4,b4]@3 [g4,d5]@6 ~@2", // Em G G5
  K: "[e4,f#4,a4,c#5]@8 [e4,f#4,a4,a#4,c#5] ~ c#5 e4@3 f#4 ~ [f#4,a4,c#5]@7 ~ [e4,f#4,a4,c#5] ~@2 e4@2 f#4 ~@2, ~@15 e4@8 ~@9", // F#m7 F#7 F#m F#m7
  L: "[f#4,a4,d5]@6 ~@3 a#4 ~@6 [d4,g4]@8 g4@3 d4@2 g4@2 ~, ~@8 [e4,f#4,a4,c#5]@6 ~@2 b4@13 ~@3", // D G5 F#m7
  M: "[g4,b4,d5]@7 ~ g4@3 ~@3 b4 d5 [e4,g4,b4,d5]@8 [g4,b4,d5]@3 ~@2 g4 d5 ~, e4@8 [b4,d5]@5 g4@2 ~@17, ~@11 e4@4 ~@12 e4@4 ~", // G Em7 G Bm
  N: "~@13 f#4@3 f#4@8 ~@5 c#5@3, f#4@13 ~@3 e4@16, a4@10 a4@6 [a4,c#5]@13 ~@3, c#5@7 ~ c#5@8 ~@8 f#4@8, ~ e5@16 ~@10 a4@5", // A
  O: "[e4,g4,b4,d5]@8 e4@5 e4@3 d4@13 d4@3, ~ [f#4,a4,c#5] [g4,b4]@2", // Em7 F#m G
  P: "[e4,f#4,a4]@8 ~@5 f#4@2 ~ c#5@8 ~@5 e4@2 ~, c#5@16 ~@8 c#5@7 ~, ~@8 a4@8 ~@10 a4@5 ~, ~@8 f#4@5 ~@3 [f#4,a4]@12 f#4@3 ~, ~@11 e4@4 e4@14 ~@3", // F#m7 F#m
  Q: "[d4,g4,b4]@8 d4@5 d4@3 [d4,g4,b4]@7 ~ [g4,b4,d5]@8, ~@8 [f#4,a4]@8 ~@7 e4@8 ~", // G F#m
  R: "[c#4,e4,f#4,a4]@11 ~@5 [f#4,a4,c#5]@8 f#4@2 ~@3 e4@3, ~@16 e4@11 f#4@5, ~@3 [a4,c#5]", // F#m7 F#m A
  S: "[d4,g4,b4]@8 [d4,f#4,a4]@8 ~@3 [d4,g4,b4]@5 [e4,g4,b4,d5] ~@7", // G D G Em7
  T: "[c#4,f#4,a4]@7 ~ [c#4,f#4,a4] ~@7 [c#4,f#4,a4]@7 ~ [c#4,f#4,a4] ~@7, g#4 ~@31", // F#m
  U: "[c4,f4,a4]@8 [f4,a4] ~@4 c4 ~@2 [g4,b4]@3 d5 ~ d5@2 ~@3 a4 ~@2 d4 ~@2, ~@8 d4@4 a4 ~@3, ~@20 b4@2 ~ b4@2 g4@2 ~ g4@2 ~@2", // F G
  V: "[c#4,f#4,a4]@8 [c#4,f#4,a4] ~@4 c#4@2 ~ [c#4,f#4,a4]@8 [c#4,f#4,a4] ~@7", // F#m
  W: "[d4,f#4,c#5]@8 [d4,f#4,c#5] ~@4 d4@2 ~ [d4,f#4,c#5]@8 [d4,f#4,c#5] ~@7", // Dmaj7
  X: "[d4,f#4,b4]@8 [d4,f#4,b4] ~@4 b4@3 [c#4,f#4,a4]@8 [c#4,f#4,a4] ~@4 c#4@3, ~@5 d4@3 ~@8", // Bm F#m
  Y: "[d4,g4,b4]@8 [d4,g4,b4] ~@4 d4@3 [b4,d5]@2 ~ [b4,d5]@2 g4@8 g4@3, ~@16 [f4,g4] ~ g4@3 [b4,d5]@11", // G Bm Fsus2 Bm
  Z: "[d4,f#4,b4]@8 [d4,f#4,b4] ~@8 a4@7 [c#4,f#4,a4]@2 ~@4 c#4@2, ~@2 [c#4,f#4] ~", // Bm F#m F#5
  AA: "[[d4,g4,b4]@8 [d4,g4,b4] ~@7 [g4,b4,d5]@7 ~ d5@2 ~@6 [a4,c#5]@8 [e4,f#4,a4,a#4,c#5] ~ c#5 e4@3 f#4 ~ [f#4,a4,c#5]@7 ~ [e4,f#4,a4,c#5] ~@2 e4@2 f#4 ~@2, ~@15 d4@3 ~@5 g4@15 ~@9 e4@8 ~@9, ~@24 b4@5 b4@9 ~@26, ~@13 d5@6 ~@13]/2", // G A F#7 F#m F#m7
  AB: "[c4,f4,a4]@8 [c4,f4,a4] ~@4 c4@3 [b3,d4,g4]@8 b3@2 d5 ~@2 d4@3, ~@3 g4, ~@24 d4@5 ~@3, ~@24 d5 ~ b3@6, ~@27 d5@5", // F G
  AC: "[c#4,f#4,a4]@8 [c#4,f#4,a4] ~@4 c#4@3 [c#4,f#4,a4]@8 [c#4,f#4,a4] ~@4 a4@3, ~@27 c#4@5", // F#m
  AD: "[c4,f4,a4]@8 [c4,f4,a4] ~@4 c4@3 [b3,d4,g4]@8 [b3,d4,g4]@3 b3@4 ~", // F G
  AE: "c#4@4 c#4 c#4@3 ~@2 e4@2 ~ [e4,f#4,a4]@3 ~ c#4@2 ~@2 e4@2 ~ c#4 c#4@3 ~ [e4,f#4,a4]@3, [e4,f#4,a4]@8 [f#4,a4]@5 ~@3 [f#4,a4]@8 [e4,a4]@5 ~@3, ~@8 e4@2 ~@6 e4@5 ~@2 f#4@6 ~@3, ~@9 c#4@2 ~ c#4@5 ~@3 c#4@4 ~@4 c#4@4", // F#m7 F#m A5
  AF: "c4 c4@3 ~ d4@3 f4@2 ~@3 c4@3 b3@3 b3 ~ d4@2 ~@6 d4@3, [f4,a4] a4 ~@2, d4@4 c4@9 ~@7 b3@3 b3@4 b3@5, ~@8 d4@4 d4@3 ~ d4@5 ~@3 d4@5 ~@3, ~@10 f4@5 ~ [e4,g4]@8 [e4,g4]@8", // F Em
  AG: "c#4@4 c#4 ~@4 c#4@2 ~@6 c#4@3 ~@2 c#4@2 ~ c#4@3 ~ e4@3, [e4,f#4,a4]@7 f#4@6 e4@2 f#4@6 a4@3 ~@4 c#4@4, ~@5 c#4@3 a4@8 e4@8 [f#4,a4]@8, ~@8 e4@4 c#4@2 c#4@2 a4@4 c#4@2 ~@2 e4@5 ~@3", // F#m7 F#m
  AH: "[c4 c4@2 ~@2 [d4,f4,a4]@3 ~ c4@3 ~ d4@3 d4 ~@4 [g4,b4]@3 ~@8 c#4@4 c#4 c#4@3 ~@2 e4@2 ~ [e4,f#4,a4]@3 ~ c#4@2 ~@2 e4@2 ~ c#4 c#4@3 ~ [e4,f#4,a4]@3, [d4,f4,a4]@4 c4@4 f4@16 b4@3 d5@2 b4@3 [e4,f#4,a4]@8 [e4,f#4,a4] c#4@2 ~ c#4@4 [e4,f#4,a4]@4 c#4@3 f#4 [e4,a4]@4 c#4@4, ~@2 a4@3 e4 g4@10, ~@2 d4 c4@13, ~@16 [e4,g4,b4] d4@47]/2", // Dm G F#m7 Dm F#m7 A5 Em
  AI: "c4 c4@2 ~@2 [d4,f4,a4]@3 ~ c4@3 ~ d4@3 d4 ~@4 [g4,b4]@3 ~@5 b4@3, [d4,f4,a4]@4 c4@4 [f4,a4]@16 [g4,b4]@3 d5@5, ~@2 d4 c4@5, ~@4 [e4,g4,b4] e4@3, ~@17 d4@15", // Dm G Dm F G Em
  AJ: "[c#4,e4,f#4,a4]@2 ~@6 [c#4,e4,f#4,a4]@2 ~@6 [c#4,e4,f#4,a4]@2 ~@6 [c#4,e4,f#4,a4] ~@7", // F#m7
  AK: "[c4,g4,a4]@16 d4@8 ~@5 g4@3, d4@2 ~@14 [g4,b4]@11 d5@5, e4 ~@15 e4@16, ~@3 d4, ~@7 b4", // Am7 G
  AL: "[c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@4 c#4@3 [c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@7, d#4 ~@31", // F#m7
  AM: "[c4,d4,f4,a4]@8 [c4,d4,f4,a4] ~@4 c4@3 d4@5 ~@8 g4@3, ~@16 b4@11 d5@5, ~@2 [e4,g4] e4, ~@21 d4@11, ~@25 g4@3 b4@4", // Dm7 Em
  AN: "[c4,d4,f4,a4]@8 [c4,d4,f4,a4] ~ f4@3 [f4,a4]@3 [g4,a4] ~@12 e4@3, ~@5 d4@3 [d4,b4]@4 d4@4, ~@16 e4@5 g4@5 b4@6, ~@11 e4@3 g4@2, ~@25 d5@7", // Dm7 F Gsus2 G
  AO: "[c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@4 c#4@3 [c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@4 e4@3, ~@13 c#4@3", // F#m7
  AP: "[c4,d4,f4,a4]@8 [c4,d4,f4,a4] ~@7 d4@5 ~@8 g4@3, ~@2 [e4,g4,b4] e4, ~@21 d4@11, ~@24 g4@5 ~@3, ~@27 b4@5", // Dm7 Em
  AQ: "[c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@7 [c#4,e4,f#4,a4]@8 ~@5 e4@3, ~@3 [f#4,a4], ~@24 e4@5 ~@3, ~@26 c#4@5 ~", // F#m7 F#m
  AR: "[c4,d4,f4,a4]@8 [c4,d4,f4,a4] ~@4 d4@2 ~ d4@5 ~@8 d4@3, ~@11 c4@5 [g4,b4]@16, ~@2 e4!2, ~@21 d4@8 ~@3, ~@13 d5@3", // Dm7 G
  AS: "[c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@7 [e4,a4]@8 ~@5 c#4@3, ~ f#4, ~@16 c#4@13 ~@3, ~@3 e4, ~@13 a4@3", // F#m7 A5
  AT: "[c4,d4,f4,a4]@8 [c4,d4,f4,a4] ~@7 [d4,e4,g4,b4]@8 d4 ~@2 d4@5, ~@3 [e4,g4,b4]", // Dm7 Em7 Em
  AU: "[[c#4,e4,f#4,a4]@8 [c#4,e4,f#4,a4] ~@4 c#4@3 [e4,f#4,a4]@8 e4@3 ~@6 [c4,d4,f4,a4]@63, ~@16 c#4@11 e4@64 ~@5, ~@3 f#4@8 ~, ~@8 a4@3 ~@21, ~@29 c#4@64 ~@3]/3", // F#m7 Dm7
  AV: "[~@32 f#4 c#4 ~@20 c#4@45 ~@29, ~@31 [c#4,e4]@2 [e4,f#4]@2 [f#4,a4]@2 [e4,a4]@2 [e4,a4]@2 [c#4,e4,a4]@2 [c#4,e4]@2 e4@5 e4@49 ~@29, ~@32 a4@2 c#4@2 c#4@2 [c#4,f#4]@2 f#4@2 f#4@2 [f#4,a4]@2 f#4@6 f#4@47 ~@29, ~@45 c#4@2 c#4@3 c#4@4 ~@74, ~@46 a4@2 a4@5 a4@46 ~@29]/4", // C#m Esus2 F#m A5 A C#m F#5 F#m
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(1)

// other · string ensemble 2 · "Strings1"
const string_ensemble_2 = note(`<
  ~@4 A ~@3 B@2 C@2 D ~@4 E F G H@2 ~ I J K L M N@3 O@2 P Q R S F G H@2 ~@11 T@2 U V W X U V Y Z AA AB AA AC@2 AD@4 AE@2
  ~@2 AF AG AH ~
>`.pickRestart({
  A: "[f4,b4]@13 a4@3 [g3,d4]@8 [a3,e4]@7 ~, ~@13 b4 ~@18", B: "[~@15 e6@9 d6@8]/2",
  C: "[c#6 ~ g5 [f#5,a5], ~ b5@2 ~]/2", D: "d5@15 ~", E: "b5@8 e6@5 d6@2 ~ b5@16", F: "c#6@3 ~",
  G: "d6@8 g6@5 f#6@3 e6@13 ~@3", H: "[~@30 f#5 d6@9 c#6@5 d6@3 b5@9 ~@7, ~@15 a5 ~@16, ~@31 b5 ~@32]/2",
  I: "~@29 a5@3", J: "b5@2 d6@21 ~ c#6@2 d6@3 e6@3", K: "c#6@26 d6@3 e6@3", L: "f#6", M: "g6@8 d6@7 ~, b5@15 ~",
  N: "[~@32 f#4@29 ~@2 [g4,b4,d5]@14 ~@3 [a4,d5,f#5]@16, [c#4,e4,a4]@61 ~@35]/3", // G D A
  O: "[~@8 g5@2 f#5@3 d5@2 ~ d5@7 e5@4 ~@2 d6 ~@2 c#6@32, ~@28 c#6@2 e6@33 ~]/2",
  P: "[b5,d6]@8 [a5,c#6]@8 [g5,b5]@15 ~", Q: "a5@8 g5@8 d5@13 ~@3", R: "~@8 e5@3 f#5@20 ~",
  S: "b5@8 e6@5 d6@2 ~ b5@15 ~",
  T: "[~@31 e6 f#6@2 ~@6 f#6 ~@7 f#6@2 ~@6 d6@3 e6@2 f#6@3, ~@12 a4 d5 g5 c#6 ~@16, ~@25 [b4,c#5]@2 [e5,f#5]@2 [a5,b5]@2 d6@2 ~@31]/2", // Bsus2 Esus2 Asus2
  U: "a6@13 g6@3 d6@8 e6@7 ~", V: "f#6@2 ~@6 f#6@2 ~@6 f#6 ~@7 d6@3 e6@2 f#6@3",
  W: "a6@24 ~@7 [d6,e6], ~@12 a4 d5 g5 c#6, ~@25 [b4,c#5]@2 [e5,f#5]@2 [a5,b5]@2 ~", // Dsus2 Bsus2 Esus2 Asus2
  X: "f#6@2 ~@6 f#6 ~@7 f#6@2 ~@6 d6@3 e6@2 f#6@3", Y: "a6@3 ~", Z: "[c#4,e4]", AA: "[d4,f4] [a3,e4]",
  AB: "d4 [c#4,e4], f#4", AC: "[[d4,f#4]@9 ~@9 c#5@2 ~ d5@3 e5@2 f#5@3 a5@35]/2",
  AD: "[~@18 c#6@2 ~ d6@3 e6@2 f#6@3 ~@51 f#6@15 ~ e6@8 [d6,f6]@8 [a5,d6]@8 e6@7 ~, ~@29 a6@66 g6@8 ~@25]/4", // Dm D5
  AE: "[~@5 f#5 [e5,g5]@2 d4@6 c#4@8 ~ a3@39 ~@2, ~@5 a5@2 ~ [f#4,a4]@26 ~@30]/2", // Em F#m
  AF: "~@5 a5@2 b5@2 c#6@2 ~ a5@2 b5@2 c#6@3 a5@3 b5@2 c#6@3 a5@3 b5@2",
  AG: "c#6@3 a5@2 b5@3 c#6@2 a5@3 b5@3 c#6@3 a5@3 b5@3 c#6@3 a5@2 b5@2",
  AH: "~ c#6@2 a5@3 b5@3 c#6@3 a5@2 b5@3 c#6@2 a5@3 b5@3 c#6@3 ~@4",
})).s("gm_string_ensemble_2").gain(0.12)

// other · lead 8 bass lead · "Lead"
const lead_8_bass_lead = note(`<
  ~@5 A B C@2 D E F@2 G H I J K L M N O P Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@3 AR
  AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG@2 BH BI BJ BK BL@3 ~@2
>`.pickRestart({
  A: "~@5 a2@3 d3@2 e3@4 ~ d3 f#3@3 a3@13", B: "~@5 a2@3 d3@2 ~ e3@2 d3@2 ~ f#3 e3 ~ f#3@13",
  C: "[~@5 a2@3 d3@3 e3@2 f#3@2 ~ a3@5 b3@2 ~@2 a3@10 ~@3 d3@2 g3@2 f#3@2 ~ d3@2 ~ d3@8 e3@8, ~@12 b3 ~@19]/2",
  D: "~@5 a2@2 ~ d3@3 e3@4 d3 f#3@3 a3@13", E: "~@5 a2@3 d3@3 e3@2 d3@3 f#3 e3 ~ f#3@13",
  F: "[~@5 a2@2 ~ d3@3 e3@2 f#3@3 a3@5 b3 ~@3 a3@10 ~@2 d3@3 g3@3 f#3@2 d3 ~@2 d3@8 e3@8, ~@12 b3 ~@19]/2",
  G: "a3@8 a3@7 ~ a3 g3 ~ f#3@2 ~@3 f#3@3 g3@2 a3@3", H: "b3@8 a3@5 b3@3 g3@8 e3@2 ~ f#3@2 g3@3",
  I: "a3@8 g3@8 d3@13 e3@2 d3", J: "~ e3 ~ f#3@21 ~@8, f#3 ~@15", K: "b3@8 e4@6 d4@2 b3@15 ~",
  L: "c#4@11 b3@2 a3@3 f#3@11 ~@2 b3@3", M: "d4@8 g4@3 f#4@2 e4@2 ~ e4@14 ~ d4", N: "e4@3 f#4@19 e4@10",
  O: "f#4@5 e4@3 g4@2 ~ f#4@2 e4@2 ~ e4@9 ~@6 a3", P: "b3@3 d4@21 ~@3 e4@2 d4@3",
  Q: "f4@3 e4@2 d4@3 f4@3 e4@2 d4@3 b3@5 a3@11", R: "~@5 a2@3 d3@3 e3@2 d3@3 f#3@2 a3@14",
  S: "~@5 c#4 ~@2 c#4@4 ~ a3 f#3@3 ~ a3@14",
  T: "[~@8 d3@2 e3@3 f#3@2 ~ a3@5 b3 ~@2 b3 a3@11 ~@2 d4@2 a3 ~ a3@6 b3 b3@2 ~ a3@12]/2",
  U: "~@6 a2@2 d3@3 e3@2 d3@3 f#3@2 a3@14", V: "~@8 d3@3 e3@2 a3@3 f#3@13 ~@3",
  W: "~@5 a2@2 ~ d3@3 e3@2 f#3@2 ~ a3@5 ~ b3@2 b3 a3@7", X: "~@5 d3@3 g3@3 f#3@2 d3@2 ~ d3@8 e3@6 ~@2",
  Y: "a3@8 a3@7 ~@2 g3 ~ f#3@2 ~@3 f#3@2 g3@3 a3@3, ~@8 a3 ~@7", Z: "b3@8 a3@5 b3@3 g3@8 e3@3 f#3@2 g3@2 ~",
  AA: "a3@7 ~ g3@8 d3@12 ~ d4 ~ d4", AB: "c#4 a3 a#3 f#3 g3 a3@24 ~@3", AC: "b3@7 ~ e4@5 d4@2 ~ b3@2 ~ b3@13",
  AD: "c#4 d4@2 c#4@7 ~ c#4@2 a3@2 ~ f#3 e3 f#3@8 ~@3 b3@3", AE: "d4@7 ~ g4@3 f#4@2 e4@2 ~ e4@2 ~ e4@12 d4",
  AF: "e4@2 f#4@16 e4 f#4@3 e4 f#4 e4 d4 e4@5 ~", AG: "e4@5 d4@3 g4@3 f#4@2 e4@2 ~ e4@2 ~ e4@6 ~@7",
  AH: "f#4@9 e4 d4 b3@2 d4@18 ~", AI: "f4@2 e4@3 d4@3 f4@3 e4@2 d4@3 b3@15 ~",
  AJ: "d4@2 a3 b3@2 ~ b3 a3@19 ~@3 a3@2 g3, ~@5 c#4@2 ~@25", AK: "~ g3 ~ a3@2 b3@4 ~@20 b3 ~ a3, a3 ~@15",
  AL: "~ a3 b3@3 c#4@2 b3 a3@17 ~@7, d4 ~@15", AM: "a3@2 g3 a3 ~@4 a3 g3 a3 ~@4 g3 ~ g3 ~ b3@6 ~@7, ~@8 a3 ~@7",
  AN: "d4 e4@2 c#4 ~ b3 ~@2 a3 b3@4 ~ [b3,c#4] a3@12 ~@2 a3@2 g3, ~@4 d4@2 ~ c#4@2 ~@23", // Bsus2
  AO: "~ g3 d3@2 ~ d3@11 ~@16, a3 ~@15", AP: "~@3 b3@2 b3@2 ~ a3@24", AQ: "[a4@77 d5@3 b4@12 ~ [a4,b4] ~@2]/3",
  AR: "d5@5 b4@2 ~ d5@16 ~@8, ~@5 a4 ~@26", AS: "e5@9 f5 e5 d5@4 b4 d5@2 b4@11 e5@3",
  AT: "f#5@8 ~ [e5,f#5] d5 b4@2 e5@3 d5@16", AU: "f5@20 ~ f5 ~ d5@7 ~@2, ~@23 e5@2 ~@7",
  AV: "f#5@2 a5@5 ~ f#5@2 e5@6 f5 d5@7 ~@2 e5@5 f5, ~@10 d5 ~@6 e5 ~@14",
  AW: "d5@7 d5 e5 ~ e5@4 ~ d5 ~ g5 f#5 ~ d5@8 ~ [a3,b3] ~ a3, e5 ~@9 d5 ~@5 a5@2 ~@14", // Asus2
  AX: "f#4@8 d4@3 e4@2 f#4@3 d4@3 e4@2 f#4 ~@5 d4@3 e4@2", AY: "a4@4 ~ f4 ~@5 f4@2 g4@5 f4 e4 d4@7 ~@5",
  AZ: "d4 e4@2 c#4 ~ b3 ~ c#4 a3 b3 f#3@3 b3@3 c4 b3 a3@10 ~@2 a3 g3, ~@2 d4 ~@13",
  BA: "a3@7 ~@4 a3 ~ a3@2 ~ b3@6 ~@10", BB: "~@3 a3 b3 d4 e4 ~ e4@4 ~ d4 b3 d4 b3 a3@6 ~@9",
  BC: "~@3 b4 a4 ~@3 d5 ~@3 b4 a4 ~@4 f4 e4 d4@8 ~@4, ~@7 e5@2 ~@23", BD: "~@3 b3 ~ b3@2 ~ a3@9 ~@14 g3",
  BE: "a3 ~@2 a3@2 ~@2 g3 a3@2 ~ b3@3 ~@16 a3 ~", BF: "d4 e4 f#4 g4 ~ f#4 ~@12 e4 d4 e4 ~ e4 ~ d4@5 ~@3",
  BG: "[~@3 f5@17 ~ [e5,f5] d5@7 ~ a4 c#5@5 b4 a4@8 f#4@3 a4@14 ~@2, ~@31 b4 ~@32]/2", // Fmaj7
  BH: "~@2 a4@16 g4 f4 d4@3 a4@7 ~@2", BI: "~@6 d4 a3@2 c#4 b3 a3@10 f#4 ~@2 f#4@3 g4@2 a4@3", BJ: "~ a4@15",
  BK: "g4@13 ~@3", BL: "[~@3 d4@7 e4@9 a4@17 c#5@5 b4 a4@2 ~ f#4@8 a4@8 f#4@25 ~@10]/3",
})).s("gm_lead_8_bass_lead").gain(0.24)

// other · flute
const flute = note("<~@13 A B C D E F G H I ~@10 A B C D E F G H I J ~ K ~ L M N O P M Q ~@27>".pickRestart({
  A: "a4@2 ~@6 a4@2 ~@6 a4@2 ~@6 f#4@3 g4@2 a4@3", B: "b4@8 a4@5 b4@2 ~ g4@7 ~ e4@3 f#4@2 g4@3",
  C: "a4@8 g4@8 d4@11 ~@5", D: "~@10 a3@2 ~ c#4@3 e4 ~ a3@3 c#4@3 e4@2 c#4@3 a3@3", E: "~@3 a3@3 ~@26",
  F: "~@3 a3@2 c#4@3 e4@2 c#4@3 a3@2 ~@4 a3@2 c#4@3 e4@2 c#4@3 a3@2 ~",
  G: "~@2 a3@2 ~ b3@3 c#4@2 d4@3 e4@3 b4@3 g4@2 a4@3 b4@2 c#5@2 ~ d5@3",
  H: "~ f5 ~@8 d5@3 a5@3 e5@10 d5@3 a5@3, e5@11 ~@21", I: "e5@3 ~", J: "~@13 a3@3 b3@3 d4@13",
  K: "~@13 a4@3 [a3,c#4,b4]@2 ~ d4@2 [c#4,e4]@11, ~@18 b3@3 ~@11, ~@19 d5@13", // A C#m
  L: "f#4@2 ~@6 f#4@2 ~@6 f#4@2 ~@6 d4@3 e4@2 f#4@3", M: "a4@13 g4@3 d4@8 e4@8",
  N: "f#4@2 ~@6 f#4@2 ~@6 f#4 ~@7 d4@3 e4@2 f#4@3", O: "d5@23 ~ b4@2 a4@3 d4@3",
  P: "f#4@2 ~@6 f#4@2 ~@6 f#4@2 ~@6 d4@2 e4@3 f#4@3", Q: "f#4 ~@15",
})).s("gm_flute").gain(0.18)

// other · synth drum · "808 drum"
// … 146 more lines

More by Heatwave