Strudelify

So What's New?

Alpert

KeyA minorTempo170 bpm
0:00/0:00
// So What's New? — Alpert
// 170 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 trumpet (copy of ch 8 brass section)
// note: Full arrangement: all 172 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(170/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 · piano
const piano = note("<~@5 A ~ B ~@5 A ~ C ~@13 D ~ C ~@93 A ~ B ~@5 A ~ C ~@13 D ~ C ~@20>".pickRestart({
  A: "~@4 g3@3 ~ a3@3 ~ g3 ~@3, ~@7 g#3@2 ~@2 g#3@2 ~@3", B: "~@4 a3@3 ~ b3@3 ~ a3 ~@3, ~@7 a#3@2 ~@2 a#3@2 ~@3",
  C: "~@4 a3@3 ~ b3@3 a#3 a3 ~@3, ~@7 a#3@2 ~@7", D: "~@4 g3@3 ~ a3@3 g#3 g3 ~@3, ~@7 g#3@2 ~@7",
})).s("gm_piano").gain(0.46).pan(0.8)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B A C D ~ E ~ F G H I D ~ E ~ J G K L M N O P Q R S T D ~ U ~ J G V P W X W X Y Z AA AB AC@2 AD AE AF G AG AH AC@2
  AD AE S G AI AJ AK AL AM P AN AO S G AC@2 AD AE AP G AQ AR AS AT AU AV AS AV AW AC@3 AD AE AF G AG AH AC@2 AD AE S G
  AI AJ AK AL AM P AN AO S G AC@2 AD AE AP G AQ AR AS AT AU AV AS AV AW AC D ~ E ~ F G H I D ~ E ~ J G K L M N O P Q R S
  T D ~ U ~ J G V P W X W X Y Z AA AX@8 ~
>`.pickRestart({
  A: "[c4,e4,g4] ~@3 [c4,e4,g#4] ~@3 [c4,e4,a4] ~@7", // C Caug Am
  B: "[c4,e4,g4] ~@3 [c4,e4,g#4] ~@2 [c4,e4,a4] ~@3 [e4,a4] [c4,e4,g#4] ~@3", // C Caug Am A5 Caug
  C: "[c4,e4,g4] ~@3 [c4,e4,g#4] ~@2 [c4,e4,a4] ~@3 [c4,e4,a4] [c4,e4,g#4] ~@3", // C Caug Am Caug
  D: "[c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3", // C Am
  E: "[c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,b4] ~@3 [c#4,e4,b4] ~@3", F: "~@4 [d4,f4,a4,c5] ~@7 [d4,f4,a4,c5] ~@3",
  G: "[d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3", // G7
  H: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [d#4,f#4,c5] ~@3 [d#4,f#4,c5] ~@3", // C Cdim
  I: "[d4,f4,c5] ~@3 [d4,f4,c5] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,b4] ~@3", // Dm7 G7 Bdim
  J: "~@4 [d4,f4,c5] ~@3 [d4,f4,c5] ~@3 [d4,f4,c5] ~@3", // Dm7
  K: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // C
  L: "[e4,g4,a#4] ~@3 [e4,g4,a#4] ~@3 [e4,g4,a#4] ~@3 [e4,g4,a#4] ~@3", // Edim
  M: "[f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~@3", // F Dm
  N: "[f4,g#4,c5] ~@3 [f4,g#4,c5] ~@3 [f4,g#4,d5] ~@3 [f4,g#4,d5] ~@3", // Fm Ddim
  O: "~@4 [e4,g#4,b4,d5] ~@3 [e4,g#4,b4,d5] ~@3 [e4,g#4,b4,d5] ~@3", // E7
  P: "[e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3 [e4,a4,c5] ~@3", Q: "~@4 [f#4,a4,c5,e5] ~@7 [f#4,a4,e5] ~@3",
  R: "[f#4,a4,c5,e5] ~@3 [f#4,a4,c5,e5] ~@3 [f#4,a4,c5,e5] ~@3 [f#4,a4,c5,e5] ~@3", // F#m7b5
  S: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Dm7
  T: "~@4 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@7", U: "[c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3",
  V: "~@4 [e4,g#4,d5] ~@3 [e4,g#4,d5] ~@3 [e4,g#4,d5] ~@3", W: "[a3,d4,f4] ~@7 [a3,d#4,f#4] ~@7",
  X: "[b3,e4,g4] ~@3 [e4,a4,c5] ~@11", Y: "[a3,d4,f4] ~@7 [b3,d#4,f#4] ~@7", Z: "[b3,e4,g4] ~@7 [c4,e4,a4] ~@7",
  AA: "[f#4,a4,c5,e5] ~@7 [d4,f4,g4,b4] ~@3 [e4,g4,c5] ~@3", AB: "~@4 [c4,c5] ~@3 [c4,c5] ~@7",
  AC: "[e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3 [e4,g4,a4,c5] ~@3", // Am7
  AD: "[e4,g4,a4,c#5] ~@3 [e4,g4,a4,c#5] ~@3 [e4,g4,a4,c#5] ~@3 [e4,g4,a4,c#5] ~@3", // A7
  AE: "[e4,g4,a4,c#5] ~@3 [e4,g4,a4,c#5] ~@3 [e4,g4,a4,c#5] ~@3 [e4,g4,c#5] ~@3", // A7 C#dim
  AF: "[d4,f4,a4,c5,d5] ~@3 [d4,f4,a4] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Dm7 Dm Dm7
  AG: "[e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [d#4,f#4,c5] ~@3 [d#4,f#4,a4,c5] ~@3", // C Cdim D#dim
  AH: "[d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3", // Dm7 G7
  AI: "[e4,g4,a4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3", // Am7 C
  AJ: "[e4,g4,a#4,c5] ~@3 [e4,g4,a#4,c5] ~@3 [e4,g4,a#4,c5] ~@3 [e4,g4,a#4,c5] ~@3", // C7
  AK: "[f4,a4,c5,d5] ~@3 [f4,a4,c5,d5] ~@3 [f4,a4,c5,d5] ~@3 [f4,a4,c5,d5] ~@3", // Dm7
  AL: "[f4,g#4,c5,d5] ~@3 [f4,g#4,c5,d5] ~@3 [f4,g#4,c5,d5] ~@3 [f4,g#4,c5,d5] ~@3", // Dm7b5
  AM: "[e4,g#4,b4,d5] ~@3 [e4,g#4,b4,d5] ~@3 [e4,g#4,b4,d5] ~@3 [e4,g#4,b4,d5] ~@3", // E7
  AN: "[d4,f#4,a4,c5,e5] ~@3 [f#4,a4,c5,e5] ~@3 [f#4,a4,c5,e5] ~@3 [f#4,a4,c5,e5] ~@3", // D7 F#m7b5
  AO: "[d4,f#4,a4,c5] ~@3 [d4,f#4,a4,c5] ~@3 [d4,f#4,a4,c5] ~@3 [d4,f#4,a4,c5] ~@3", // D7
  AP: "[d4,f4,a4,c5,d5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~@3", // Dm7
  AQ: "[e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3", // E
  AR: "[c4,e4,a4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3", // Am
  AS: "[a3,d4,e4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d#4,f#4] ~@3 [a3,d#4,f#4] ~@3", // Dm D#dim
  AT: "[b3,e4,g4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3", // Em Am
  AU: "[a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@3", // Dm B
  AV: "[b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3", // Em Am
  AW: "[d4,f4,a4,c5] ~@3 [d4,f#4,a4,c5] ~@3 [d4,f4,g4,b4] ~@3 [d4,f4,g4,b4] ~@3", AX: "[~@4 [c4,c5] ~@3 c4@120]/8",
})).s("gm_acoustic_guitar_nylon").gain(0.44).pan(0.2)

// chords · banjo
const banjo = note(`<
  A B A C D ~ E ~ F G H I D ~ E ~ J G K L M N O P Q R S T D ~ U ~ J G V P W X W X Y Z AA AB AC@2 AD AE AF G AG AH AC@2
  AD AE S G AI AJ AK AL AM P AN AO S G AC@2 AD AE AP G AQ AR AS AT AU AV AS AV AW AC@3 AD AE AF G AG AH AC@2 AD AE S G
  AI AJ AK AL AM P AN AO S G AC@2 AD AE AP G AQ AR AS AT AU AV AS AV AW AC D ~ E ~ F G H I D ~ E ~ J G K L M N O P Q R S
  T D ~ U ~ J G V P W X W X Y Z AA AX@8 ~
>`.pickRestart({
  A: "[c5,e5,g5] ~@3 [c5,e5,g#5] ~@3 [c5,e5,a5] ~@7", // C Caug Am
  B: "[c5,e5,g5] ~@3 [c5,e5,g#5] ~@2 [c5,e5,a5] ~@3 [e5,a5] [c5,e5,g#5] ~@3", // C Caug Am A5 Caug
  C: "[c5,e5,g5] ~@3 [c5,e5,g#5] ~@2 [c5,e5,a5] ~@3 [c5,e5,a5] [c5,e5,g#5] ~@3", // C Caug Am Caug
  D: "[c5,e5,g5] ~@3 [c5,e5,g5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3", // C Am
  E: "[c#5,e5,a5] ~@3 [c#5,e5,a5] ~@3 [c#5,e5,b5] ~@3 [c#5,e5,b5] ~@3", F: "~@4 [d5,f5,a5,c6] ~@7 [d5,f5,a5,c6] ~@3",
  G: "[d5,f5,g5,b5] ~@3 [d5,f5,g5,b5] ~@3 [d5,f5,g5,b5] ~@3 [d5,f5,g5,b5] ~@3", // G7
  H: "[e5,g5,c6] ~@3 [e5,g5,c6] ~@3 [d#5,f#5,c6] ~@3 [d#5,f#5,c6] ~@3", // C Cdim
  I: "[d5,f5,c6] ~@3 [d5,f5,c6] ~@3 [d5,f5,g5,b5] ~@3 [d5,f5,b5] ~@3", // Dm7 G7 Bdim
  J: "~@4 [d5,f5,c6] ~@3 [d5,f5,c6] ~@3 [d5,f5,c6] ~@3", // Dm7
  K: "[e5,g5,c6] ~@3 [e5,g5,c6] ~@3 [e5,g5,c6] ~@3 [e5,g5,c6] ~@3", // C
  L: "[e5,g5,a#5] ~@3 [e5,g5,a#5] ~@3 [e5,g5,a#5] ~@3 [e5,g5,a#5] ~@3", // Edim
  M: "[f5,a5,c6] ~@3 [f5,a5,c6] ~@3 [f5,a5,d6] ~@3 [f5,a5,d6] ~@3", // F Dm
  N: "[f5,g#5,c6] ~@3 [f5,g#5,c6] ~@3 [f5,g#5,d6] ~@3 [f5,g#5,d6] ~@3", // Fm Ddim
  O: "~@4 [e5,g#5,b5,d6] ~@3 [e5,g#5,b5,d6] ~@3 [e5,g#5,b5,d6] ~@3", // E7
  P: "[e5,a5,c6] ~@3 [e5,a5,c6] ~@3 [e5,a5,c6] ~@3 [e5,a5,c6] ~@3", Q: "~@4 [f#5,a5,c6,e6] ~@7 [f#5,a5,e6] ~@3",
  R: "[f#5,a5,c6,e6] ~@3 [f#5,a5,c6,e6] ~@3 [f#5,a5,c6,e6] ~@3 [f#5,a5,c6,e6] ~@3", // F#m7b5
  S: "[d5,f5,a5,c6] ~@3 [d5,f5,a5,c6] ~@3 [d5,f5,a5,c6] ~@3 [d5,f5,a5,c6] ~@3", // Dm7
  T: "~@4 [d5,f5,g5,b5] ~@3 [d5,f5,g5,b5] ~@7", U: "[c#5,e5,a5] ~@3 [c#5,e5,a5] ~@3 [c#5,e5,a5] ~@3 [c#5,e5,a5] ~@3",
  V: "~@4 [e5,g#5,d6] ~@3 [e5,g#5,d6] ~@3 [e5,g#5,d6] ~@3", W: "[a4,d5,f5] ~@7 [a4,d#5,f#5] ~@7",
  X: "[b4,e5,g5] ~@3 [e5,a5,c6] ~@11", Y: "[a4,d5,f5] ~@7 [b4,d#5,f#5] ~@7", Z: "[b4,e5,g5] ~@7 [c5,e5,a5] ~@7",
  AA: "[f#5,a5,c6,e6] ~@7 [d5,f5,g5,b5] ~@3 [e5,g5,c6] ~@3", AB: "~@4 [c5,c6] ~@3 [c5,c6] ~@7",
  AC: "[e5,g5,a5,c6] ~@3 [e5,g5,a5,c6] ~@3 [e5,g5,a5,c6] ~@3 [e5,g5,a5,c6] ~@3", // Am7
  AD: "[e5,g5,a5,c#6] ~@3 [e5,g5,a5,c#6] ~@3 [e5,g5,a5,c#6] ~@3 [e5,g5,a5,c#6] ~@3", // A7
  AE: "[e5,g5,a5,c#6] ~@3 [e5,g5,a5,c#6] ~@3 [e5,g5,a5,c#6] ~@3 [e5,g5,c#6] ~@3", // A7 C#dim
  AF: "[d5,f5,a5,c6,d6] ~@3 [d5,f5,a5] ~@3 [d5,f5,a5,c6] ~@3 [d5,f5,a5,c6] ~@3", // Dm7 Dm Dm7
  AG: "[e5,g5,c6] ~@3 [e5,g5,c6] ~@3 [d#5,f#5,c6] ~@3 [d#5,f#5,a5,c6] ~@3", // C Cdim D#dim
  AH: "[d5,f5,a5,c6] ~@3 [d5,f5,a5,c6] ~@3 [d5,f5,g5,b5] ~@3 [d5,f5,g5,b5] ~@3", // Dm7 G7
  AI: "[e5,g5,a5,c6] ~@3 [e5,g5,c6] ~@3 [e5,g5,c6] ~@3 [e5,g5,c6] ~@3", // Am7 C
  AJ: "[e5,g5,a#5,c6] ~@3 [e5,g5,a#5,c6] ~@3 [e5,g5,a#5,c6] ~@3 [e5,g5,a#5,c6] ~@3", // C7
  AK: "[f5,a5,c6,d6] ~@3 [f5,a5,c6,d6] ~@3 [f5,a5,c6,d6] ~@3 [f5,a5,c6,d6] ~@3", // Dm7
  AL: "[f5,g#5,c6,d6] ~@3 [f5,g#5,c6,d6] ~@3 [f5,g#5,c6,d6] ~@3 [f5,g#5,c6,d6] ~@3", // Dm7b5
  AM: "[e5,g#5,b5,d6] ~@3 [e5,g#5,b5,d6] ~@3 [e5,g#5,b5,d6] ~@3 [e5,g#5,b5,d6] ~@3", // E7
  AN: "[d5,f#5,a5,c6,e6] ~@3 [f#5,a5,c6,e6] ~@3 [f#5,a5,c6,e6] ~@3 [f#5,a5,c6,e6] ~@3", // D7 F#m7b5
  AO: "[d5,f#5,a5,c6] ~@3 [d5,f#5,a5,c6] ~@3 [d5,f#5,a5,c6] ~@3 [d5,f#5,a5,c6] ~@3", // D7
  AP: "[d5,f5,a5,c6,d6] ~@3 [d5,f5,a5,c6] ~@3 [d5,f5,a5,c6] ~@3 [d5,f5,a5,c6] ~@3", // Dm7
  AQ: "[e5,g#5,b5] ~@3 [e5,g#5,b5] ~@3 [e5,g#5,b5] ~@3 [e5,g#5,b5] ~@3", // E
  AR: "[c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3", // Am
  AS: "[a4,d5,e5,f5] ~@3 [a4,d5,f5] ~@3 [a4,d#5,f#5] ~@3 [a4,d#5,f#5] ~@3", // Dm D#dim
  AT: "[b4,e5,g5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3", // Em Am
  AU: "[a4,d5,f5] ~@3 [a4,d5,f5] ~@3 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3", // Dm B
  AV: "[b4,e5,g5] ~@3 [b4,e5,g5] ~@3 [c5,e5,a5] ~@3 [c5,e5,a5] ~@3", // Em Am
  AW: "[d5,f5,a5,c6] ~@3 [d5,f#5,a5,c6] ~@3 [d5,f5,g5,b5] ~@3 [d5,f5,g5,b5] ~@3", AX: "[~@4 [c5,c6] ~@3 c5@120]/8",
})).s("gm_banjo").gain(0.19).pan(0.1)

// bass · acoustic bass
const bass = note(`<
  A B C D C E F G H I J K L M N G O P A Q R S T U V W X Y Z AA AB G AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AO AP AQ AR AW AT AX AY AZ BA BB BC BD AS BE BF AO AP AQ AR BG BH BI BJ BK BL BK BL BM BN BO AO@2 AP AQ AR AS
  AT AU AV AO AP AQ AR AW AT AX AY AZ BA BB BC BD AS BE BF AO AP AQ AR BG BH BI BJ BK BL BK BL BM BN BO AN C E F G H I J
  K L M N G O P A Q R S T U V W BP Y Z AA AB G AC AD AE AF AG AH AI AJ AK BQ AM AN ~@8
>`.pickRestart({
  A: "c2@3 ~@5 g1@4 ~@4", B: "c2@4 ~@4 g1@5 ~@3", C: "c2@3 ~@5 g1@3 ~@5", D: "c2 ~@3 a1 ~ b1 ~, ~@7 g1@2 ~@7",
  E: "c2@3 ~@5 b1@2 ~@2 a#1@2 ~@2, ~@7 c2@2 ~@7", F: "a1@4 ~@4 e2@3 ~@5", G: "a1@3 ~@5 b1@3 ~ c2@2 ~@2, ~@7 a1@2 ~@7",
  H: "~@4 d2@6 ~@2 a1@3 ~", I: "g1@2 ~@2 a1@2 b1 ~", J: "c2 ~ d#2 ~", K: "d2@2 ~@2 g1@4 a1@4 b1@3 ~",
  L: "c2@4 ~@4 g1@3 ~@5", M: "c2@3 ~@5 b1@3 ~ a#1@2 ~@2, ~@7 c2@2 ~@7", N: "a1@5 ~@3 e2@4 ~@4", O: "~@4 d2@7 ~ a1@3 ~",
  P: "g1@3 ~@5 a1@3 ~ b1@2 ~@2", Q: "c2@5 ~@3 e2@4 ~@4", R: "f2@4 ~@4 c2@5 ~@3", S: "f2@4 ~@4 c2@3 ~@5",
  T: "~@4 e2@7 ~ b1@4", U: "a1@6 ~@2 e2@5 ~@3", V: "~@4 d2@7 ~ a1@4", W: "d2@5 ~@3 a1@5 ~@3",
  X: "d2@5 ~@3 e2@4 f2@2 ~@2", Y: "~@2 g2 ~ g2 ~@3", Z: "c2@5 ~@3 g1@5 ~@3", AA: "c2@3 ~@5 b1@3 ~ a#1@4, ~@7 c2@2 ~@7",
  AB: "a1@4 ~@4 e2@5 ~@3", AC: "~@3 d2@7 ~@2 a1@3 ~", AD: "g1@5 ~@3 d2@4 ~@4", AE: "~@3 e2@6 ~@2 b1@4 ~",
  AF: "a1@6 ~@2 b1@4 c2@3 ~", AG: "d2@6 ~@2 d#2@5 ~@3", AH: "e2@2 ~@2 a2@6 ~@2 e2@3 ~", AI: "d2@5 ~@3 d#2@5 ~@3",
  AJ: "e2 ~ a2@3 ~ e2 ~", AK: "d2@4 ~@4 d#2@5 ~@3", AL: "e2@5 ~@3 a2@5 ~@3", AM: "d2@5 ~@2 g2@3 ~@2 c2@2 ~@2",
  AN: "~@2 c2 ~ c2 ~@3", AO: "c2 g1 a1 b1", AP: "c2 e2 c2 a#1", AQ: "a1 e2 d2 c#2", AR: "a1@3 ~ a1@4 b1@4 c#2@4",
  AS: "d2@4 c2@4 b1@4 a1@3 ~", AT: "g1@3 ~ g1@4 a1@4 b1@4", AU: "c2 g2 f#2 f2", AV: "d2 g1 a1 b1", AW: "d2 c2 b1 a1",
  AX: "c2@4 g1@4 a1@3 ~ b1@4", AY: "c2@2 ~@2 c2@4 d2@3 ~ e2@4", AZ: "f2@4 c2@4 d2@4 e2@3 ~", BA: "f2 a2 g2 f2",
  BB: "e2 d2 c2 b1", BC: "a1@4 b1@4 c2@3 ~ c#2@3 ~", BD: "d2 a1 b1 c2", BE: "d2@4 e2@4 f2@3 ~ f#2@3 ~",
  BF: "g2@4 f2@4 e2@4 d2@3 ~", BG: "d2@4 e2@4 f2@3 ~ f#2@4", BH: "g2 f2 e2 d2", BI: "e2@4 f2@3 ~ f#2@4 g#2@3 ~",
  BJ: "a2 g2 f2 e2", BK: "d2@3 ~ d2@4 d#2@3 ~ d#2@4", BL: "e2@2 ~@2 e2@4 a2@3 ~ a2@4",
  BM: "d2@2 ~@2 d2@4 d#2@3 ~ d#2@4", BN: "e2@2 ~@2 e2@4 a2@3 ~ a2@2 ~@2", BO: "d2@4 a1@3 ~ g1@4 b1@4",
  BP: "d2@2 ~@2 e2@2 f2 ~", BQ: "e2@5 ~@3 f2@5 ~@3",
})).s("gm_acoustic_bass").gain(0.4)

// other · brass section
const brass_section = note(`<
  ~@4 A ~ B ~ C D E F G ~ B ~ C D H ~ I J K L K M N O G ~ B ~ C P Q R S T S U S V W X ~@80 A ~ B ~ C D E F G ~ B ~ C D H
  ~ I J K L K M N O G ~ B ~ C P Q R S T S U S V W X ~@8
>`.pickRestart({
  A: "g4 ~@3 g#4 ~@3 a4 ~@3 g#4 ~ g4@2", B: "a4@2 ~@2 a#4 ~@3 b4 ~@3 a#4 ~ a4@2", C: "~@2 c5@2 ~@2 a4 ~",
  D: "g4@3 ~ f4 ~@3 e4@4 d4 ~@3", E: "g4@2 ~@13 e4", F: "f4@2 ~ g4 f4 ~@3 e4@4 d4 ~@3",
  G: "g4@2 ~@2 g#4 ~@3 a4 ~@3 g#4 ~ g4@2", H: "c4@5 ~@11", I: "c5@2 ~@2 c#5 ~@3 d5 ~@7",
  J: "c5@2 ~@2 c#5 ~ d5 ~@5 c5 ~@3, ~@11 d5@2 ~@3", K: "~@4 e5@5 ~@3 d5@2 ~@2", L: "c5@6 ~@2 a4@3 ~@5",
  M: "c5@2 ~@5 a4 b4@2 ~@2 c5 ~@3", N: "e5@2 ~ d5 ~@4 b4 ~@3 a4@2 ~@2, ~@7 c5@2 ~@7", O: "~@2 g4 ~ g4 ~@3",
  P: "g4@3 ~ f4@2 ~@2 e4@4 d4 ~@3", Q: "~@4 d5@5 ~@3 b4@2 ~@2", R: "a4@4 g4 ~@3 f4@3 ~ e4 ~@3", S: "f4 ~@3 f#4 ~@3",
  T: "g4@2 ~@2 c5@5 ~@3 a4 ~@3", U: "g4 ~@3 c5@4 ~@4 a4 ~@3", V: "g4 ~@3 a4 ~@3", W: "e5@2 d5 ~@3 c5@2 b4 ~@3 c5@2 ~@2",
  X: "~@4 c5 ~@3 c5 ~@7",
})).s("gm_brass_section").gain(0.71).pan(0.8)

// drums · kick
const kick = s("bd").struct("<A@27 B A@15 B A@63 B A@15 B A@23 B A@15 B ~@8>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.46)

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

// drums · hihat
const hihat = s("hh").struct(`<
  A@8 B A@2 C A@4 B A@2 C ~ D ~@6 A@4 B A B A@2 B A B A@2 ~@2 D@15 ~ D@7 ~ D@15 ~ A@4 B A@2 C A@4 B A@2 C ~ D ~@6 A@4 B
  A B A@2 B A B A@2 ~@2 A@4 B A@2 C A@4 B A@2 C ~ D ~@6 A@4 B A B A@2 B A B A@2 ~@10
>`.pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@2 x", B: "~@7 x ~@4 x ~@2 x", C: "~@4 x ~@2 x ~@8", D: "~ x ~ x",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@8 B A@7 B A@3 ~@8 A@4 B A B A@2 B A B A@2 ~ C ~@40 A@4 B A@7 B A@3 ~@8 A@4 B A B A@2 B A B A@2 ~ C A@4 B A@7 B A@3
  ~@8 A@4 B A B A@2 B A B A@2 ~ C ~@8
>`.pickRestart({
  A: "x!2", B: "~ x", C: "~ x!2 ~",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@7 A ~@5 A ~ A ~@2 B ~@4 A ~ A ~@2 A ~ A ~@48 A ~@7 A ~@5 A ~ A ~@2 B ~@4 A ~ A ~@2 A ~ A ~@8 A ~@7 A ~@5 A ~ A
  ~@2 B ~@4 A ~ A ~@2 A ~ A ~@12
>`.pickRestart({
  A: "~@3 x ~@12", B: "x",
})).gain(0.51)

// … 8 more lines

More by Alpert