Strudelify
Spinning Wheel cover art

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: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~@2 A B A B C D ~ E A B A F A B ~ E G H I J G H K E L M N O P Q@2 R ~@2 S T S U V W ~ E X Y X Y Z@3 AA AB AC@2 AD@7
  AE@3 AF AG AF AH AI AJ ~@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: "e3@7 ~ e3@4 g2@3 ~ a2@7 ~ a2@3 ~ c3@3 ~", D: "d3@7 ~ d3@3 ~ f2@3 ~ g2@8 a2@3 ~ b2@3 ~", E: "~ [f#3,c4,f4]@7",
  F: "d3@7 ~ d3@3 ~ f2@4 g2@7 ~ b2@3 ~ d3@3 ~",
  G: "[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
  H: "[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
  I: "[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
  J: "[a4,b4,d5]@3 ~ d4@3 ~ [a4,b4,d5]@3 ~ d4@3 ~ [a4,b4,d5]@3 ~ d4@3 ~ [a4,b4,d5]@3 ~ d4@3 ~", // Bm7
  K: "[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]@3 ~ d#4@3 ~", // Cm7
  L: "[g#3,c4,d#4]", M: "[a#3,d4,f4]", N: "[c4,e4]@3 ~ g3@3 ~ [c4,e4]@3 ~ g3@3 ~ [c4,e4]@4 g3@3 ~ [c4,e4]@3 ~ g3@3 ~",
  O: "[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 ~", P: "[a3,d4,e4]",
  Q: "d3@3 ~ a2@3 ~ d3@3 ~ a2@2 d3@3 ~ d3@2 a2@3 ~ d3@3 ~ a2@3 ~, [a3,d4,e4]", // Asus4
  R: "f3 ~@3 f3 ~@3 f3 ~@3 f3 ~@3 f3 ~@2 f3@2 f3@2 ~ f3@2 ~ f3@2 f3@2 ~",
  S: "e3@7 ~ g2@3 ~ g#2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~", T: "d3@7 ~ f2@3 ~ f#2@3 ~ g2@7 ~ b2@3 ~ d3@3 ~",
  U: "d3@7 ~ f2@3 ~ f#2@3 ~ g2@7 ~@9", V: "e3@7 ~ e3@3 ~ g2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~",
  W: "d3@7 ~ f2@3 ~ f#2@3 ~ g2@7 ~ a2@3 ~ b2@3 ~", X: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 a1 ~@3 a#1 ~@3 b1 ~@3",
  Y: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 d1@2 ~@2 f1@2 ~@2 f#1@2 ~@2",
  Z: "[~@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
  AA: "~@4 [g3,c#4,f#4]@11 ~@7 [f#3,c4,f4]@10", AB: "~@9 [f3,b3,e4]@11 [g#3,d4,g4]@4 ~ [g#3,d4,g4]@4 [g#3,d4,g4]@3",
  AC: "[~@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
  AD: "[~@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
  AE: "[~@3 [f#3,c4,f4]@65 ~@21 e3@7]/3", AF: "~ g2@3 ~ g#2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~ d3@7",
  AG: "~ f2@3 ~ f#2@4 g2@7 ~ b2@3 d3@4 ~ e3@7", AH: "~ f2@3 ~ f#2@3 ~ g2@7 ~@9 e3@7",
  AI: "~ e3@3 ~ g2@3 ~ a2@7 ~ c3@3 ~ c#3@3 ~ d3@7", AJ: "~ 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 C D E F A B A G A B E F H I J K H I L M N O P Q R@3 S T ~ U V U W X Y E F Z AA Z AA AB AC AD AE AF AG@2
  AH@3 ~@3 AI AJ@2 AK AL AM AL AN AO AP ~ AQ AR@3 ~ AS AT AU AV AW AX AY AZ BA ~@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: "e2@7 ~ e2@4 g1@3 ~ a1@7 ~ a1@3 ~ c2@3 ~", D: "d2@7 ~ d2@3 ~ f1@3 ~ g1@8 a1@3 ~ b1@3 ~", E: "d2@7 ~@25",
  F: "~ d2@7", G: "d2@7 ~ d2@3 ~ f1@4 g1@7 ~ b1@3 ~ d2@3 ~", H: "c2@5 ~ c2 ~ c2@6 c2@2 c2@6 c2@2 c2@2 c2@2 c2@3 ~",
  I: "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 ~",
  J: "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 ~", K: "g1@5 ~ g1 ~ g1@6 g1@2 g1@6 g1@2 g1@2 g1@2 g1@3 ~",
  L: "g#1@5 ~ g#1 ~ g#1@6 g#1@2 g#1@6 g#1@2 g#1@2 g#1@2 g#1@3 ~", M: "g1@7 ~", N: "g2",
  O: "a#1@3 ~ g#2@2 a2@2 a#2@5 ~ f2@3 ~ a#1@3 ~ f2@2 a#1@3 ~ a#1@3 ~",
  P: "c2@3 ~ a#2@2 b2@2 c3@5 ~ g2@4 c2@3 ~ g2@2 c2@3 ~ c2@3 ~",
  Q: "d2@3 ~ c3@2 c#3@2 d3@5 ~ a2@3 ~ d2@3 ~ a2@2 d2@3 ~ a1@3 ~",
  R: "d2@3 ~ a1@3 ~ d2@3 ~ a1@2 d2@3 ~ d2@2 a1@3 ~ d2@3 ~ a1@3 ~",
  S: "f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@2 f2@2 f2@2 ~ f2@2 ~ f2@2 f2@2 ~",
  T: "f2@2 f2@2 f2@2 f2@2 f2@3 ~ f2@2 f2@2 f2@2 f2@5 ~ f2@3 ~@5", U: "e2@7 ~ g1@3 ~ g#1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~",
  V: "d2@7 ~ f1@3 ~ f#1@3 ~ g1@7 ~ b1@3 ~ d2@3 ~", W: "d2@7 ~ f1@3 ~ f#1@3 ~ g1@7 ~@9",
  X: "e2@7 ~ e2@3 ~ g1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~", Y: "d2@7 ~ f1@3 ~ f#1@3 ~ g1@7 ~ a1@3 ~ b1@3 ~",
  Z: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 a1 ~@3 a#1 ~@3 b1 ~@3",
  AA: "g1@2 ~@4 f2 ~@5 g2@2 ~@4 g1@2 d1@2 ~@2 f1@2 ~@2 f#1@2 ~@2",
  AB: "f2@4 ~ b2@4 e3@3 ~ b2 a#2@2 ~@3 a2@4 a1@4 ~ e2@4", AC: "d#2@4 ~ d2@4 a2@4 ~ d2@4 ~ a2@4 ~ g2@4 a2@4",
  AD: "~ a#2@4 b2@4 ~ e2@3 ~ b2 e3@4 b2@4 ~ a#2@4 ~ a2@3", AE: "~ e3@4 ~ a2@4 d#2@4 ~ d2@4 ~ a2@4 d2@4 ~ a2@3",
  AF: "~@2 g2@4 a2@4 ~ a#2@4 b2@4 ~ f2@4 ~ b2@4 e3@3",
  AG: "[~ 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",
  AH: "[~@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",
  AI: "~@28 d2 ~@3", AJ: "[~@3 d2@45 ~@16]/2", AK: "~@25 e2@7", AL: "~ g1@3 ~ g#1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~ d2@7",
  AM: "~ f1@3 ~ f#1@4 g1@7 ~ b1@3 d2@4 ~ e2@7", AN: "~ f1@3 ~ f#1@3 ~ g1@7 ~@9 e2@7",
  AO: "~ e2@3 ~ g1@3 ~ a1@7 ~ c2@3 ~ c#2@3 ~ d2@7", AP: "~ f1@3 ~ f#1@3 ~ g1@7 ~ a1@3 ~ b1@3 ~ d2@7",
  AQ: "~@13 e2@7 ~@4 a1@7 ~", AR: "[~@4 d#2@11 d2@7 ~@8 g1@7 ~ e2@7 ~@5 a1@7 ~@4 d#2@11 ~ d2@7 ~@8 g1@7 ~]/3",
  AS: "~@14 e2@7 ~@4 a1@7", AT: "~@5 d#2@11 d2@7 ~@9", AU: "g1@7 ~@25", AV: "~@22 e2@7 ~@3",
  AW: "~ a1@7 ~@5 d#2@11 d2@7 ~", AX: "~@7 g1@7 ~ e2@7 ~@5 a1@5", AY: "~@6 d#2@11 ~ d2@7 ~@7",
  AZ: "~ g1@7 ~ e2@7 ~@4 a1@7 ~@5", BA: "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 W ~ X Y@2 Z ~ AA
  AB AC@2 AD AE AF AG AH ~@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: "~ c4@7 ~@4 d4@2 ~@2 e4 g4@2 f4@6 ~@7",
  X: "~@16 g#4@3 ~ g#4@3 ~@5 g4@3 ~", Y: "[g4@3 ~@16 f4@3 ~ f4@3 ~@4 a4@7 ~@5 g#4@3 ~ g#4@3 ~@4 g4@3 ~ g4@3 ~@4]/2",
  Z: "~@13 f4@3 f4@3 ~@5 a4@7 ~", AA: "~@18 g#4@3 g#4@3 ~@5 g4@3", AB: "~ g4@3 ~@16 f4@3 ~ f4@3 ~@5",
  AC: "[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",
  AD: "~@5 g4@3 ~ g4@3 ~@16 f4@3 ~", AE: "f4@3 ~@4 a4@7 ~@5 g#4@3 ~ g#4@3 ~@4 g4@2",
  AF: "~@2 g4@3 ~@16 f4@3 ~ f4@3 ~@4", AG: "~ a4@7 ~@5 g#4@3 g#4@3 ~@5 g4@3 ~ g4@3 ~", AH: "~@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 G ~ H ~@4 I J K ~ L M N@2 O@3 P Q ~ D G D F D G ~ H ~@4 R S@4 T U V@2 W@2 X@2 Y Z AA@2 AB AC AB
  AD AB AE ~ AF AG@2 AH ~ AI AJ AK AL AM AN AO AP AQ AR AS ~
>`.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 ~ a#4@6", F: "~@8 a4@7 ~@17",
  G: "~@8 a4@7 ~@5 d4 ~@2 e4 g4@2 a#4@6", H: "~ f4@7", I: "e5", J: "d5", K: "c5", L: "d#4", M: "f4@3 ~",
  N: "[e4@7 ~]/2", O: "[e4@11 ~]/3", P: "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 ~",
  Q: "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", R: "b4@4 ~ d5@2 e5@11 ~ c#5@4 ~@9",
  S: "[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",
  T: "~@2 g5@2 e5@4 ~ a4@7 ~@11 f#4@2 ~ a4 c5", U: "~ d#5 d5@4 ~ c5@4 ~ b4@2 g5@2 ~@12 a5@2 b5@2",
  V: "[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",
  W: "[~@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",
  X: "[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",
  Y: "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",
  Z: "~@10 d5@2 d5@2 ~ f#5@3 d5@3 f#5@3 a5@3 f#5@3 a5@2", AA: "[~ c6@2 f6@37 ~@24]/2", AB: "~ b5@7 ~@9 a5@7 ~@8",
  AC: "~ a5@8 ~@4 d5 ~@2 e5 g5@2 a#5@6 ~@7", AD: "~ a5@7 ~@24", AE: "~ a5@7 ~@4 d5@2 ~@2 e5 g5@2 a#5@6 ~@7",
  AF: "~@16 g5@3 ~ g5@3 ~@5 f#5@3 ~", AG: "[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",
  AH: "~@13 f5@3 f5@3 ~@5 f#5@7 ~", AI: "~@18 g5@3 g5@3 ~@5 f#5@3", AJ: "~ f#5@3 ~@16 f5@3 ~ f5@3 ~@5",
  AK: "f#5@7 ~@25", AL: "~@25 g5@3 ~ g5@3", AM: "~@5 f#5@3 ~ f#5@3 ~@16 f5@3 ~",
  AN: "f5@3 ~@4 f#5@7 ~@5 g5@3 ~ g5@3 ~@4 f#5@2", AO: "~@2 f#5@3 ~@17 f5@3 f5@3 ~@4",
  AP: "~ f#5@7 ~@5 g5@3 g5@3 ~@5 f#5@3 ~ f#5@3 ~", AQ: "~@15 f5@3 ~ f5@3 ~@5 f#5@5",
  AR: "~@6 g5@3 ~ g5@3 ~@5 f#5@3 ~ f#5@3 ~@7", AS: "~@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 Y ~ Z AA@3 ~ AB
  AC@2 AD AE AF@2 AG AH AI@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: "~ f#4@7 ~@4 d4@2 ~@2 e4 g4@2 f4@6 ~@7", Z: "~@13 e3@7 ~@4 a2@8",
  AA: "[~@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", AB: "~@14 e3@7 ~@4 a2@7",
  AC: "[~@5 d#2@11 d2@6 ~@9 g2@6 ~@27]/2", AD: "~@22 e3@7 ~@3", AE: "~ a2@8 ~@3 d#2@11 ~ d2@6 ~@2",
  AF: "[~@7 g2@6 ~@2 e3@7 ~@5 a2@8 ~@3 d#2@11 ~ d2@6 ~@8]/2", AG: "~ g2@6 ~@2 e3@8 ~@3 a2@8 ~@4",
  AH: "d#2@11 d2@6 ~@9 g2@6", AI: "[~@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 H G@4 ~ I J K L ~ M N ~ O P J K L Q R S ~
>`.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: "~@5 x ~@3 x ~@10 x ~@4 x ~@6", I: "~@13 x ~@10 x ~@7",
  J: "~@4 x ~@10 x ~@11 x ~@4", K: "~@6 x ~@11 x ~@10 x ~@2", L: "~@9 x ~@10 x ~@11", M: "~@14 x ~@10 x ~@6",
  N: "~@5 x ~@10 x ~@11 x ~@3", O: "~@11 x ~@4", P: "~ x ~@11 x ~@10 x ~@7", Q: "x ~@10 x ~@11 x ~@8",
  R: "~@2 x ~@11 x ~@10 x ~@6", S: "~@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
// … 73 more lines

More by Blood, Sweat & Tears