Strudelify
Spinning Wheel cover art

1968 · Blood, Sweat & Tears

Spinning Wheel

Blood, Sweat & Tears

KeyG majorTempo96 bpm
0:00/0:00
// Spinning Wheel — Blood, Sweat & Tears
// 96 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 89 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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.

// chords · piano
const piano = note(`<
  ~@2 A B A B A C ~ D A B A B A B ~ D E F G H E F G D I J K L M N@2 O ~@2 P Q P R S T ~ D U V U V W@3 X Y Z@2 AA@7 AB@3
  AC AD AC AE AF AG ~@18
>`.pickRestart({
  A: "e3@7 ~ e3@3 ~ g2@3 ~ a2@7 ~ a2@3 ~ c3@3 ~", B: "d3@7 ~ d3@3 ~ f2@3 ~ g2@7 ~ b2@3 ~ d3@3 ~",
  C: "d3@7 ~ d3@3 ~ f2@3 ~ g2@8 a2@3 ~ b2@3 ~", D: "~ [f#3,c4,f4]@7",
  E: "[d5,e5,g5]@3 ~ g4@3 ~ [d5,e5,g5]@3 ~ g4@3 ~ [d5,e5,g5]@3 ~ g4@3 ~ [d5,e5,g5]@3 ~ g4@3 ~", // Em7
  F: "[c5,d5,f5]@3 ~ f4@3 ~ [c5,d5,f5]@3 ~ f4@3 ~ [c5,d5,f5]@3 ~ f4@3 ~ [c5,d5,f5]@3 ~ f4@3 ~", // Dm7
  G: "[a#4,c5,d#5]@3 ~ d#4@3 ~ [a#4,c5,d#5]@3 ~ d#4@3 ~ [a#4,c5,d#5]@3 ~ d#4@3 ~ [a#4,c5,d#5]@2 ~@2 d#4@3 ~", // Cm7
  H: "[a4,b4,d5]@3 ~ d4@3 ~ [a4,b4,d5]@3 ~ d4@3 ~ [a4,b4,d5]@3 ~ d4@3 ~ [a4,b4,d5]@3 ~ d4@3 ~", I: "[g#3,c4,d#4]",
  J: "[a#3,d4,f4]", K: "[c4,e4]@3 ~ g3@3 ~ [c4,e4]@3 ~ g3@3 ~ [c4,e4]@4 g3@3 ~ [c4,e4]@3 ~ g3@3 ~",
  L: "[a3,d4,e4]@3 ~ f#3@3 ~ [a3,d4,e4]@3 ~ f#3@3 ~ [a3,d4,e4]@3 ~ f#3@4 [a3,d4,e4]@3 ~ f#3@3 ~", M: "[a3,d4,e4]",
  N: "d3@3 ~ a2@3 ~ d3@3 ~ a2@2 d3@3 ~ d3@2 a2@3 ~ d3@3 ~ a2@3 ~, [a3,d4,e4]", // Asus4
  O: "f3 ~@3 f3 ~@3 f3 ~@3 f3 ~@3 f3 ~@2 f3@2 f3@2 ~ f3@2 ~ f3@2 f3@2 ~",
  P: "e3@7 ~ g2@3 ~ g#2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~", Q: "d3@7 ~ f2@3 ~ f#2@3 ~ g2@7 ~ b2@3 ~ d3@3 ~",
  R: "d3@7 ~ f2@3 ~ f#2@3 ~ g2@7 ~@9", S: "e3@7 ~ e3@3 ~ g2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~",
  T: "d3@7 ~ f2@3 ~ f#2@3 ~ g2@7 ~ a2@3 ~ b2@3 ~", U: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 a1 ~@3 a#1 ~@3 b1 ~@3",
  V: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 d1@2 ~@2 f1@2 ~@2 f#1@2 ~@2",
  W: "[~@7 [g#3,d4,g4]@11 ~@8 g3@11 ~@7 [f#3,c#4,f4]@11 ~@8 [f3,b3,e4]@11 ~@7 [g#3,d4,g4]@11 ~@4, ~@25 [c#4,f#4]@11 ~@60]/3", // G F#maj7 E G F#5
  X: "~@4 [g3,c#4,f#4]@11 ~@7 [f#3,c4,f4]@10", Y: "~@9 [f3,b3,e4]@11 [g#3,d4,g4]@4 ~ [g#3,d4,g4]@4 [g#3,d4,g4]@3",
  Z: "[~@2 [g#3,d4,g4]@4 [g3,c#4,f#4]@4 ~ [g3,c#4,f#4]@4 ~ [g3,c#4,f#4]@4 [g3,c#4,f#4]@4 ~ [f#3,c#4,f4]@4 ~ [f#3,c#4,f4]@4 [f#3,c#4,f4]@4 ~ [f#3,c#4,f4]@4 ~ [f3,b3,e4]@4 [f3,b3,e4]@4 ~ [f3,b3,e4]@4 ~ b3@4 [g#3,d4,g4]@2, ~@57 [f3,e4]@4 ~@3]/2", // G F# F#maj7 E G Fmaj7
  AA: "[~@2 [g#3,d4,g4]@4 ~ [g#3,d4,g4]@4 ~ [g#3,d4,g4]@4 ~ [g3,c#4,f#4]@4 [g3,c#4,f#4]@4 ~ [g3,c#4,f#4]@4 ~ [g3,c#4,f#4]@4 [f#3,c4,f4]@4 ~ [f#3,c4,f4]@4 [f#3,c4,f4]@4 ~ [f#3,c4,f4]@4 ~ [f3,b3,e4]@4 [f3,b3,e4]@4 ~ [f3,b3,e4]@4 [f3,b3,e4]@4 ~ [g#3,d4,g4]@4 ~@3 [g#3,d4,g4]@60 ~@7 [g3,c#4,f#4]@4 ~@4 g3@56 ~@10 [f#3,c4,f4]@4, ~@153 [c#4,f#4]@56 ~@15]/7", // G F# F E G F# F F#5
  AB: "[~@3 [f#3,c4,f4]@65 ~@21 e3@7]/3", AC: "~ g2@3 ~ g#2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~ d3@7",
  AD: "~ f2@3 ~ f#2@4 g2@7 ~ b2@3 d3@4 ~ e3@7", AE: "~ f2@3 ~ f#2@3 ~ g2@7 ~@9 e3@7",
  AF: "~ e3@3 ~ g2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~ d3@7", AG: "~ f2@3 ~ f#2@3 ~ g2@7 ~ a2@3 ~ b2@3 ~@8",
})).s("gm_piano").gain(0.3).pan(0.3)

// bass · electric bass finger · "FINGERED BASS"
const bass = note(`<
  ~@2 A B A B A C D E A B A B A B D E F G H I F G H J K L M N O@3 P Q ~ R S R T U V D E W X W X Y Z AA AB AC AD@2 AE@3
  ~@3 AF AG@2 AH AI AJ AI AK AL AM ~ AN AO@3 ~ AP AQ AR AS AT AU AV AW AX ~@3
>`.pickRestart({
  A: "e2@7 ~ e2@3 ~ g1@3 ~ a1@7 ~ a1@3 ~ c2@3 ~", B: "d2@7 ~ d2@3 ~ f1@3 ~ g1@7 ~ b1@3 ~ d2@3 ~",
  C: "d2@7 ~ d2@3 ~ f1@3 ~ g1@8 a1@3 ~ b1@3 ~", D: "d2@7 ~@25", E: "~ d2@7",
  F: "c2@5 ~ c2 ~ c2@6 c2@2 c2@6 c2@2 c2@2 c2@2 c2@3 ~", G: "a#1@5 ~ a#1 ~ a#1@6 a#1@2 a#1@6 a#1@2 a#1@2 a#1@2 a#1@3 ~",
  H: "g#1@5 ~ g#1 ~ g#1@6 g#1@2 g#1@6 g#1@2 g#1 ~ g#1@2 g#1@3 ~", I: "g1@5 ~ g1 ~ g1@6 g1@2 g1@6 g1@2 g1@2 g1@2 g1@3 ~",
  J: "g1@7 ~", K: "g2", L: "a#1@3 ~ g#2@2 a2@2 a#2@5 ~ f2@3 ~ a#1@3 ~ f2@2 a#1@3 ~ a#1@3 ~",
  M: "c2@3 ~ a#2@2 b2@2 c3@5 ~ g2@4 c2@3 ~ g2@2 c2@3 ~ c2@3 ~",
  N: "d2@3 ~ c3@2 c#3@2 d3@5 ~ a2@3 ~ d2@3 ~ a2@2 d2@3 ~ a1@3 ~",
  O: "d2@3 ~ a1@3 ~ d2@3 ~ a1@2 d2@3 ~ d2@2 a1@3 ~ d2@3 ~ a1@3 ~",
  P: "f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@2 f2@2 f2@2 ~ f2@2 ~ f2@2 f2@2 ~",
  Q: "f2@2 f2@2 f2@2 f2@2 f2@3 ~ f2@2 f2@2 f2@2 f2@5 ~ f2@3 ~@5", R: "e2@7 ~ g1@3 ~ g#1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~",
  S: "d2@7 ~ f1@3 ~ f#1@3 ~ g1@7 ~ b1@3 ~ d2@3 ~", T: "d2@7 ~ f1@3 ~ f#1@3 ~ g1@7 ~@9",
  U: "e2@7 ~ e2@3 ~ g1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~", V: "d2@7 ~ f1@3 ~ f#1@3 ~ g1@7 ~ a1@3 ~ b1@3 ~",
  W: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 a1 ~@3 a#1 ~@3 b1 ~@3",
  X: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 d1@2 ~@2 f1@2 ~@2 f#1@2 ~@2", Y: "f2@4 ~ b2@4 e3@3 ~ b2 a#2@2 ~@3 a2@4 a1@4 ~ e2@4",
  Z: "d#2@4 ~ d2@4 a2@4 ~ d2@4 ~ a2@4 ~ g2@4 a2@4", AA: "~ a#2@4 b2@4 ~ e2@3 ~ b2 e3@4 b2@4 ~ a#2@4 ~ a2@3",
  AB: "~ e3@4 ~ a2@4 d#2@4 ~ d2@4 ~ a2@4 d2@4 ~ a2@3", AC: "~@2 g2@4 a2@4 ~ a#2@4 b2@4 ~ f2@4 ~ b2@4 e3@3",
  AD: "[~ b2 a#2@2 ~@2 a2@4 ~ a1@4 ~ e2@4 d#2@4 ~ d2@4 ~ a2@4 d2@4 ~ a2@4 ~ g2@4 a2@4 ~ a#2@4 ~ b2@4 e2@2]/2",
  AE: "[~@2 e3@4 ~ b2@4 ~ a#2@4 ~ a2@4 e3@4 ~ a2@4 ~ d#2@4 d2@4 ~ a2@4 d2@4 ~ a2@4 ~ g2@4 a2@4 ~ a#2@4 b2@4 ~@25, ~@2 b2 ~@93]/3",
  AF: "~@28 d2 ~@3", AG: "[~@3 d2@45 ~@16]/2", AH: "~@25 e2@7", AI: "~ g1@3 ~ g#1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~ d2@7",
  AJ: "~ f1@3 ~ f#1@4 g1@7 ~ b1@3 d2@4 ~ e2@7", AK: "~ f1@3 ~ f#1@3 ~ g1@7 ~@9 e2@7",
  AL: "~ e2@3 ~ g1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~ d2@7", AM: "~ f1@3 ~ f#1@3 ~ g1@7 ~ a1@3 ~ b1@3 ~ d2@7",
  AN: "~@13 e2@7 ~@4 a1@7 ~", AO: "[~@4 d#2@11 d2@7 ~@8 g1@7 ~ e2@7 ~@5 a1@7 ~@4 d#2@11 ~ d2@7 ~@8 g1@7 ~]/3",
  AP: "~@14 e2@7 ~@4 a1@7", AQ: "~@5 d#2@11 d2@7 ~@9", AR: "g1@7 ~@25", AS: "~@22 e2@7 ~@3",
  AT: "~ a1@7 ~@5 d#2@11 d2@7 ~", AU: "~@7 g1@7 ~ e2@7 ~@5 a1@5", AV: "~@6 d#2@11 ~ d2@7 ~@7",
  AW: "~ g1@7 ~ e2@7 ~@4 a1@7 ~@5", AX: "d#2@11 d2@7 ~@9 g1@5",
})).s("gm_electric_bass_finger").gain(0.3)

// bass · electric bass finger · "FINGERED BASS" · soft notes
const bass_soft = note("<~@44 A B A B ~@38 C@2 ~>".pickRestart({
  A: "g0@2 ~@4 f1 ~@5 g1@2 ~@4 g0@2 a0 ~@3 a#0 ~@3 b0 ~@3",
  B: "g0@2 ~@4 f1 ~@5 g1@2 ~@4 g0@2 d0@2 ~@2 f0@2 ~@2 f#0@2 ~@2",
  C: "[~@2 e2@7 ~@5 a1@7 ~@4 d#2@11 ~ d2@7 ~@8 g1@7 ~@5]/2",
})).s("gm_electric_bass_finger").gain(0.2)

// other · alto sax · "TENOR SAX"
const alto_sax = note(`<
  ~ A ~@6 B ~ C D C E C D ~ F ~@4 G H I ~ J K L M N@3 O P ~ C D C E C D ~ F ~@4 Q ~@8 R@5 S@3 T U T V T U ~ W X@2 Y ~ Z
  AA AB@2 AC AD AE AF AG ~@3
>`.pickRestart({
  A: "f#4@2 f#4@2 f#4@2 f#4@2 f#4@3 ~ f#4@2 f#4@2 f#4@2 f#4@5 ~ f#4@3 ~@5", B: "c4@7 ~@25", C: "~@8 d4@7 ~@9 c#4@7 ~",
  D: "~@8 c3@7 ~@5 d3 ~@2 e3 g3@2 f3@6", E: "~@8 c3@7 ~@17", F: "~ f#3@7", G: "e4", H: "d4", I: "c4", J: "g#3",
  K: "a#3@3 ~", L: "g3", M: "a3@3 ~", N: "[a3@11 ~]/3",
  O: "f4 ~@3 f4 ~@3 f4 ~@3 f4 ~@3 f4 ~@2 f4@2 f4@2 ~ f4@2 ~ f4@2 f4@2 ~",
  P: "a#4@2 a#4@2 a#4@2 a#4@2 a#4@3 ~ a#4@2 a#4@2 a#4@2 a#4@5 ~ a#4@3 ~@5", Q: "g#4 ~@7",
  R: "[~@8 d5@4 ~@3 d5@62 ~@5 c#4@4 ~@3 c#4@58 ~@9 c5@2 ~@2]/5", S: "[~@3 c5@65 ~@28]/3", T: "~ d5@7 ~@9 c#5@7 ~@8",
  U: "~ c4@8 ~@4 d4 ~@2 e4 g4@2 f4@6 ~@7", V: "~ c4@7 ~@24", W: "~@16 g#4@3 ~ g#4@3 ~@5 g4@3 ~",
  X: "[g4@3 ~@16 f4@3 ~ f4@3 ~@4 a4@7 ~@5 g#4@3 ~ g#4@3 ~@4 g4@3 ~ g4@3 ~@4]/2", Y: "~@13 f4@3 f4@3 ~@5 a4@7 ~",
  Z: "~@18 g#4@3 g#4@3 ~@5 g4@3", AA: "~ g4@3 ~@16 f4@3 ~ f4@3 ~@5",
  AB: "[a4@7 d3@3 ~ d4@3 ~ d4@3 ~ d3@4 c#4@7 d3@4 c4@6 ~@2 c4@5 ~ b3 ~ a3 ~ b3@2 ~@3 g#4@3 ~ g#4@3]/2",
  AC: "~@5 g4@3 ~ g4@3 ~@16 f4@3 ~", AD: "f4@3 ~@4 a4@7 ~@5 g#4@3 ~ g#4@3 ~@4 g4@2",
  AE: "~@2 g4@3 ~@16 f4@3 ~ f4@3 ~@4", AF: "~ a4@7 ~@5 g#4@3 g#4@3 ~@5 g4@3 ~ g4@3 ~", AG: "~@15 f4@3 ~ f4@3 ~@5 a4@5",
})).s("gm_alto_sax").gain(0.56).pan(0.3)

// other · alto sax · "TENOR SAX" · soft notes
const alto_sax_soft = note("<[f#3@31 ~] ~@85 [~@6 g#4@3 ~ g#4@3 ~@5 g4@3 g4@3 ~@8] [~@9 f4@3 ~ f4@3 ~@4 a4@7 ~@5] ~>")
  .s("gm_alto_sax").gain(0.24).pan(0.3)

// chords · recorder
const recorder = note("<~@76 A B ~ C@2 ~ D E@2 F G H ~>".pickRestart({
  A: "[d5,b5]@5 e5 c6 [d5,b5] ~ [c5,a5] ~ [b4,g5]@3 ~ [g4,d5]@3 ~ [g4,d5]@4 b5@4 d5@2 c6 d5@2, ~@23 a4@9, ~@23 a5@3 ~@4 b5 ~", // G F Em G5
  B: "a5 ~ g5@3 ~ d5@3 ~ d5@3 ~@19, ~@2 g4@11 ~@19",
  C: "[~@7 [d5,b5]@5 ~ [e5,c6] ~ [d5,b5] ~ [c5,a5] ~ [b4,g5]@3 ~ [g4,d5]@3 ~ [g4,d5]@3 b5@4 d5@2 c6 ~ d5@2 a5 ~ g5@3 ~ d5@3 ~ d5@3 ~@11, ~@30 a4@11 ~ g4@11 ~@11, ~@30 a5@3 ~@5 b5 ~@25]/2", // G C G F Em G5
  D: "~@15 b5@5 ~@2 b5@2 ~@2 g5@3 ~ d5@2, ~@21 c6@2 ~@2 a5@2 ~@5",
  E: "[~@2 d5@4 a5@3 ~ d5@3 ~ d5@3 g5@10 ~@2 b5@5 ~ c6 ~ b5@2 a5@2 g5@3 d5@3 ~ d5@4 a5@3 ~ d5@3 ~ d5@4]/2",
  F: "g5@10 ~ b5@5 ~ c6 ~ b5@2 a5@2 g5@3 d5@3 ~ d5@2", G: "~@2 a5@3 ~ d5@3 d5@4 g5@11 ~ b5@5 ~ c6",
  H: "b5@2 ~@3 g5@3 d5@3 ~ d5@3 ~@17",
})).s("gm_recorder").gain(0.21).pan(0.3)

// chords · recorder · soft notes
const recorder_soft = note("<~@87 A@2>".pickRestart({
  A: "[~@3 a5@2 ~@11 a5@3 ~ d5@3 ~ d5@3 g5@20 ~@17]/2",
})).s("gm_recorder").gain(0.09).pan(0.3)

// other · trumpet · "1ST TRUMPET"
const trumpet = note(`<
  A B ~@6 C ~ D E D F D E ~ G ~@4 H I J ~ K L M@2 N@3 O P ~ D E D F D E ~ G ~@4 Q R@4 S T U@2 V@2 W@2 X Y Z@2 AA AB AA
  AC AA AB ~ AD AE@2 AF ~ AG AH AI AJ AK AL AM AN AO AP AQ ~
>`.pickRestart({
  A: "f#4@31 ~", B: "f#5@2 f#5@2 f#5@2 f#5@2 f#5@3 ~ f#5@2 f#5@2 f#5@2 f#5@5 ~ f#5@3 ~@5", C: "d6@7 ~@25",
  D: "~@8 b4@7 ~@9 a4@7 ~", E: "~@8 a4@7 ~@5 d4 ~@2 e4 g4@2 a#4@6", F: "~@8 a4@7 ~@17", G: "~ f4@7", H: "e5", I: "d5",
  J: "c5", K: "d#4", L: "f4@3 ~", M: "[e4@7 ~]/2", N: "[e4@11 ~]/3",
  O: "d#5 ~@3 d#5 ~@3 d#5 ~@3 d#5 ~@3 d#5 ~@2 d#5@2 d#5@2 ~ d#5@2 ~ d#5@2 d#5@2 ~",
  P: "g#5@2 g#5@2 g#5@2 g#5@2 g#5@3 ~ g#5@2 g#5@2 g#5@2 g#5@5 ~ g#5@3 ~@5", Q: "b4@4 ~ d5@2 e5@11 ~ c#5@4 ~@9",
  R: "[a4@3 ~ a4 c5@4 ~@5 c5@4 ~ d5@2 b4@4 ~ g4@4 d4@4 ~ b3@4 ~ c4 ~@3 c#5@4 ~ d5@4 ~ e5@4 a4@4 ~ e4@4 a4@4 ~ g4@4 ~ f#4@4 a4@4 ~ c5@4 ~ d#5@4 c#5@2 ~ d5@4 c5@2 c5@2 ~ b4@2 a4@2 g#4@2 ~ b4@2 f5@4 ~ f5@4 f5@3]/4",
  S: "~@2 g5@2 e5@4 ~ a4@7 ~@11 f#4@2 ~ a4 c5", T: "~ d#5 d5@4 ~ c5@4 ~ b4@2 g5@2 ~@12 a5@2 b5@2",
  U: "[c6@2 b5@2 ~ a5@2 g#5@4 ~ f5@2 f5@2 ~ e5@2 a4@2 ~@5 a4@2 b4@2 ~ a4@2 g4@2 f#4@4 ~ a4 c5 ~ d#5 d5@2 ~@3 c5@2 c5@2 ~ b4@2 g5@2 ~@6]/2",
  V: "[~@22 e4@3 e4 ~ g#4@4 e4@2 ~ g4@2 b4@4 g4@2 ~ b4@2 d5@4 ~ b4@2 d5@2 f5@2 ~ f5@2 d5@2 f5@2 ~]/2",
  W: "[d5@2 d5@2 b4@2 d5@2 ~ b4@2 g4@2 ~@17 a#4@4 d#5@7 c#5@2 ~ d#5@2 c5@2 c5@2 ~ a#4@2 c5@2 a#4@2 a#4@2 ~ a4@2 a#4@2]/2",
  X: "a4@2 ~ a4@2 g#4@2 a4@2 ~ g#4@2 g#4@2 g4@2 ~ g#4@2 g4@2 g4@2 ~ f#4@4 ~@4",
  Y: "~@10 d5@2 d5@2 ~ f#5@3 d5@3 f#5@3 a5@3 f#5@3 a5@2", Z: "[~ c6@2 f6@37 ~@24]/2", AA: "~ b5@7 ~@9 a5@7 ~@8",
  AB: "~ a5@8 ~@4 d5 ~@2 e5 g5@2 a#5@6 ~@7", AC: "~ a5@7 ~@24", AD: "~@16 g5@3 ~ g5@3 ~@5 f#5@3 ~",
  AE: "[f#5@3 ~@16 f5@3 ~ f5@3 ~@4 f#5@7 ~@5 g5@3 ~ g5@3 ~@5 f#5@3 f#5@3 ~@4]/2", AF: "~@13 f5@3 f5@3 ~@5 f#5@7 ~",
  AG: "~@18 g5@3 g5@3 ~@5 f#5@3", AH: "~ f#5@3 ~@16 f5@3 ~ f5@3 ~@5", AI: "f#5@7 ~@25", AJ: "~@25 g5@3 ~ g5@3",
  AK: "~@5 f#5@3 ~ f#5@3 ~@16 f5@3 ~", AL: "f5@3 ~@4 f#5@7 ~@5 g5@3 ~ g5@3 ~@4 f#5@2",
  AM: "~@2 f#5@3 ~@17 f5@3 f5@3 ~@4", AN: "~ f#5@7 ~@5 g5@3 g5@3 ~@5 f#5@3 ~ f#5@3 ~", AO: "~@15 f5@3 ~ f5@3 ~@5 f#5@5",
  AP: "~@6 g5@3 ~ g5@3 ~@5 f#5@3 ~ f#5@3 ~@7", AQ: "~@9 f5@3 ~ f5@3 ~@4 f#5@7 ~@5",
})).s("gm_trumpet").gain(0.56).pan(0.3)

// other · trumpet · "2ND TRUMPET"
const trumpet_2 = note(`<
  ~ A ~@6 B ~ C ~ C ~ C ~@2 D ~@4 E F G ~ H I H I J@3 K L ~ C ~ C ~ C ~@2 D ~@13 M@5 N@3 O ~ O ~ O ~@2 P Q@2 R ~ S T U V
  W X Y Z AA ~@3
>`.pickRestart({
  A: "c5@2 c5@2 c5@2 c5@2 c5@3 ~ c5@2 c5@2 c5@2 c5@5 ~ c5@3 ~@5", B: "a5@7 ~@25", C: "~@8 g4@7 ~@9 f#4@7 ~",
  D: "~ c4@7", E: "g4", F: "f4", G: "d#4", H: "c4", I: "d4@3 ~", J: "[d4@11 ~]/3",
  K: "a#4 ~@3 a#4 ~@3 a#4 ~@3 a#4 ~@3 a#4 ~@2 a#4@2 a#4@2 ~ a#4@2 ~ a#4@2 a#4@2 ~",
  L: "d#5@2 d#5@2 d#5@2 d#5@2 d#5@3 ~ d#5@2 d#5@2 d#5@2 d#5@5 ~ d#5@3 ~@5",
  M: "[~@8 g5@4 ~@3 g5@62 ~@5 f#5@4 ~@3 f#5@58 ~@9 f5@2 ~@2]/5", N: "[~@3 f5@65 ~@28]/3", O: "~ g5@7 ~@9 f#5@7 ~@8",
  P: "~@16 d5@3 ~ d5@3 ~@5 c#5@3 ~", Q: "[c#5@3 ~@16 c5@3 ~ c5@3 ~@4 b4@7 ~@5 d5@3 ~ d5@3 ~@5 c#5@3 c#5@3 ~@4]/2",
  R: "~@13 c5@3 c5@3 ~@5 b4@7 ~", S: "~@18 d5@3 d5@3 ~@5 c#5@3", T: "~ c#5@3 ~@16 c5@3 ~ c5@3 ~@5", U: "b4@7 ~@25",
  V: "~@25 d5@3 ~ d5@3", W: "~@5 c#5@3 ~ c#5@3 ~@16 c5@3 ~", X: "c5@3 ~@4 b4@7 ~@5 d5@3 ~ d5@3 ~@4 c#5@2",
  Y: "~@2 c#5@3 ~@17 c5@3 c5@3 ~@4", Z: "~ b4@7 ~@5 d5@3 d5@3 ~@5 c#5@3 ~ c#5@3 ~", AA: "~@15 c5@3 ~ c5@3 ~@5 b4@5",
})).s("gm_trumpet").gain(0.56).pan(1)

// other · trumpet · "2ND TRUMPET" · soft notes
const trumpet_soft = note("<[c4@31 ~] ~@85 [~@6 d5@3 ~ d5@3 ~@5 c#5@3 ~ c#5@3 ~@7] [~@9 c5@3 ~ c5@3 ~@4 b4@7 ~@5] ~>")
  .s("gm_trumpet").gain(0.24).pan(1)

// other · trombone
const trombone = note(`<
  A B ~@6 C ~ D E D F D E ~ G ~@4 H I J ~ K@2 L M N@3 O P ~ D E D Q R E ~ G ~@4 S ~@8 T@5 U@3 V W V X V W ~ Y Z@3 ~ AA
  AB@2 AC AD AE@2 AF AG AH@2 ~
>`.pickRestart({
  A: "d3@31 ~", B: "d4@2 d4@2 d4@2 d4@2 d4@3 ~ d4@2 d4@2 d4@2 d4@5 ~ d4@3 ~@5", C: "f4@7 ~@25",
  D: "~@8 g#3@7 ~@9 g3@7 ~", E: "~@8 f#3@7 ~@5 d3 ~@2 e3 g3@2 f3@6", F: "~@8 f#3@7 ~@17", G: "~ d3@7", H: "d4@31 ~",
  I: "c4", J: "a#3", K: "[g2@7 ~]/2", L: "c3", M: "d3@3 ~", N: "[d3@11 ~]/3",
  O: "c4 ~@3 c4 ~@3 c4 ~@3 c4 ~@3 c4 ~@2 c4@2 c4@2 ~ c4@2 ~ c4@2 c4@2 ~",
  P: "f4@2 f4@2 f4@2 f4@2 f4@3 ~ f4@2 f4@2 f4@2 f4@5 ~ f4@3 ~@5", Q: "~@8 f#3@7 ~@5 d2@12",
  R: "e2@7 ~ g#3@7 ~@9 g3@7 ~", S: "d5@5 ~@27", T: "[~@8 g#4@4 ~@3 g#4@62 ~@5 g4@4 ~@3 g4@58 ~@9 f4@2 ~@2]/5",
  U: "[~@3 f4@65 ~@28]/3", V: "~ g#4@7 ~@9 g4@7 ~@8", W: "~ f#4@8 ~@4 d4 ~@2 e4 g4@2 f4@6 ~@7",
  X: "~ f#4@7 ~@5 d2@12 e2@7", Y: "~@13 e3@7 ~@4 a2@8",
  Z: "[~@3 d#2@11 ~ d2@6 ~@9 g2@6 ~@2 e3@8 ~@4 a2@8 ~@3 d#2@11 ~ d2@6 ~@9 g2@6 ~@2]/3", AA: "~@14 e3@7 ~@4 a2@7",
  AB: "[~@5 d#2@11 d2@6 ~@9 g2@6 ~@27]/2", AC: "~@22 e3@7 ~@3", AD: "~ a2@8 ~@3 d#2@11 ~ d2@6 ~@2",
  AE: "[~@7 g2@6 ~@2 e3@7 ~@5 a2@8 ~@3 d#2@11 ~ d2@6 ~@8]/2", AF: "~ g2@6 ~@2 e3@8 ~@3 a2@8 ~@4",
  AG: "d#2@11 d2@6 ~@9 g2@6", AH: "[~@2 e3@7 ~@5 a2@8 ~@3 d#2@11 ~ d2@6 ~@9 g2@6 ~@6]/2",
})).s("gm_trombone").gain(0.44).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A@2 B@2 A@6 B@2 C@7 B D@4 C@3 ~@2 B A@6 B@2 E@4 ~@16 F G@6 ~ H I J K ~ L M ~ N O I J K P Q R ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x", C: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", D: "x!3 ~", E: "x ~@5 x ~@2 x!2 ~@5",
  F: "~@25 x ~@6", G: "~@5 x ~@3 x ~@11 x ~@3 x ~@6", H: "~@13 x ~@10 x ~@7", I: "~@4 x ~@10 x ~@11 x ~@4",
  J: "~@6 x ~@11 x ~@10 x ~@2", K: "~@9 x ~@10 x ~@11", L: "~@14 x ~@10 x ~@6", M: "~@5 x ~@10 x ~@11 x ~@3",
  N: "~@11 x ~@4", O: "~ x ~@11 x ~@10 x ~@7", P: "x ~@10 x ~@11 x ~@8", Q: "~@2 x ~@11 x ~@10 x ~@6",
  R: "~@5 x ~@10 x ~@15",
})).gain(0.41)

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

More by Blood, Sweat & Tears