Strudelify

Tuxedo Junction

The Manhattan Transfer

KeyB majorTempo110 bpm
0:00/0:00
// Tuxedo Junction — The Manhattan Transfer
// 110 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 97 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · acoustic bass · "ACOU 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 I J K L Y Z AA AB I J K L Y N AA AC AD J K L Y N AE AF I J K AG M AH
  AI ~@3 K AJ AK AL AM N AN AO I J K L M AH AI ~@3 K AJ AK AL AM N AN AO I J K L M AH AI ~ AP AQ@3
>`.pickRestart({
  A: "~@12 d#3@6 ~@4 d#3 ~", B: "e3@7 ~@3 e3@2 f#3@8 g#3@2 f#3@2", C: "b2@7 ~@3 b2@2 d#3@6 ~@4 d#3@2",
  D: "e3@7 ~@3 e3@2 f#3@6 g#3@3 ~ f#3@2", E: "b2@3 ~@2 b2 d#3@3 ~@2 d#3", F: "e3@7 ~@3 e3@2 f3@6 ~@4 f3@2",
  G: "b2@6 ~@4 b2 ~ d#3@6 ~@4 d#3@2", H: "e3@7 ~@3 e3 ~ f#3@6 g#3@3 ~ f#3@2",
  I: "b2@3 ~@3 b2@4 ~@2 d#3@4 ~@2 d#3@4 ~@2", J: "e3@3 ~@3 e3@5 ~ f#3@4 ~@2 f#3@4 ~@2",
  K: "b2@2 ~ b2@2 ~ d#3@2 ~ d#3@2 ~", L: "e3@4 ~@2 e3@4 ~@2 f#3@4 ~@2 f#3@2 ~@2 f#3 ~",
  M: "b2@4 ~@2 b2@4 ~@2 d#3@3 ~@3 d#3@4 ~@2", N: "e3@3 ~@3 e3@4 ~@2 f3@4 ~@2 f3@3 ~@3",
  O: "f#3@4 ~@2 f#3@3 ~@3 f#3@4 ~@2 f#3@4 ~@2", P: "b3 ~@3 f#3 ~ b2@4 ~@2 b2@4 ~@2 b3 ~ f#3@2 f3 ~",
  Q: "e3@4 ~@2 e3@4 ~@2 b2@4 ~@2 b2@5 ~", R: "e3@2 ~@2 e3 ~ f#3@5 ~ g3@3 ~ g3 ~ e3@4 ~@2",
  S: "b2@2 ~ b2@2 ~ f#3@2 ~ f#3@2 ~", T: "b3@4 ~@2 b3@3 ~ f#3 ~ b2@6 d#3@4 ~@2",
  U: "e3@4 ~@2 e3@3 ~ e3@2 b2@4 ~@2 b2@5 ~", V: "e3@3 ~ b2@2 f#3@6 g3@6 e3@3 ~ e3 ~",
  W: "b3@4 ~@2 b3@3 ~ b3@2 g#3@4 ~@2 g#3@3 ~ g#3@2", X: "c#3@4 ~@2 c#3@2 ~@2 c#3 ~ f#3@4 ~@2 f#3@2 c#3 ~ c3@2",
  Y: "b2@4 ~@2 b2@4 ~@2 d#3@3 ~@3 d#3@3 ~@3", Z: "e3@3 ~@3 e3@4 ~@2 f3@3 ~@3 f3@3 ~@3",
  AA: "f#3@4 ~@2 f#3@3 ~@3 f#3@4 ~@2 f#3@3 ~@3", AB: "~@4 f#3 ~ f#2@4 ~@2 f#2@4 ~@2 b3 ~ f#3@2 d#3 ~, b3@3 ~@5",
  AC: "b3 ~@3 f#3 ~ f#2@4 ~@2 f#2@4 ~@2 b3 ~ f#3@2 d#3 ~", AD: "b2@5 ~ b3@2 ~@2 b3@2 d#3@4 ~@2 d#3@3 ~@3",
  AE: "f#3@4 ~@2 f#3@3 ~@3 f#3@3 ~@3 f#3@3 ~@3", AF: "b3 ~@3 f#3 ~ b2@4 ~@2 b2@4 ~@2 b3 ~ f#3@2 d#3 ~",
  AG: "e3@4 ~@2 e3@4 ~@2 f#3@4 ~@2 f#3@3 ~ f#3 ~", AH: "e3@3 ~@3 e3@4 ~@2 f3@4 ~@2 f3@4 ~@2", AI: "b2@7 ~",
  AJ: "e3@3 ~@3 e3@4 ~@2 f#3@3 ~@3 f#3 ~ g#3@2 f#3 ~", AK: "b2@4 ~@2 b2@3 ~@3 d#3@3 ~@3 d#3@4 ~@2",
  AL: "e3@3 ~@3 e3@4 ~@2 f#3@3 ~@3 f#3 ~ g#3@2 f#3@2", AM: "b2@4 ~@2 b2@3 ~@3 d#3@3 ~@3 d#3@3 ~@3",
  AN: "b3@4 ~@2 b3 ~ f#3 ~ d#3 ~ f#2@4 ~@2 f#2@3 ~@3", AO: "b3@4 ~@2 b3@2 ~@3 b3 g#3@3 ~ g#3 ~ f#3@2 ~@2 d#3@2",
  AP: "~ f#2", AQ: "[b3@21 ~ b2 ~]/3",
})).s("gm_acoustic_bass").gain(0.35)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@20 A ~@8 B C ~ D E ~ F G H@3 I J K L M N@2 O P Q R ~ S T U ~ V@2 W X Y Z AA AB AC AD AE ~ AF ~ AG ~@3 AH AI AJ AK AL
  AM AN AB AO AP AQ AR ~ AS AT AU AV ~@5 AW
>`.pickRestart({
  A: "d5 d#5@4 ~@2 d5 ~@2 b4@12 ~@2, f#5@4 ~@3 [d#5,f#5]@16 ~", B: "~@4 [d#5,f#5] ~@19", C: "~@16 [d5,f#5] d#5 b4 ~@5",
  D: "b4 ~@3 b4 ~@19", E: "~@10 d6 d#6@11 ~@2, ~@5 f#6@6 ~", F: "~@9 d6@2 ~ d#6@2 ~@2 g#6@2 ~@3 f#6@2 ~",
  G: "f#5@3 ~@5",
  H: "[~@12 [d6,d#6] f#6@2 ~@3 b6@3 ~ b5@9 ~@11 b5@3 ~ d6@4 d#6 d6 b5@2 f#5@2 ~@2 f#5@5 ~ b4@2 e5@4 b4@2]/3", // D#maj7
  I: "d5 d#5@3 b5@2 ~@4 b4 ~ d5 d#5@3 b4 ~ [c#5,e5]@3 ~ [d5,f5] ~", J: "[d#5,f#5] ~@11",
  K: "g6 g#6@2 ~@7 g6 g#6 ~@12, b6 ~@4 b6 ~@6", L: "~@9 g#5 ~@2",
  M: "[g#5,c#6] ~@5 c#6@2 ~@2 g#5 ~ [e5,b5]@4 g#5 ~@7, d6 ~@11", // C#5 E5
  N: "[g6 g#6 ~@2 b6 ~@13 g6 g#6 ~@2 b5@20 ~@6, b6 ~@8 b6 ~@14]/2", O: "~@16 f#5 ~ g#5@2 ~@4, ~@17 g5@2 ~@5",
  P: "d6@2 ~@4 f5@3 ~@3 e5@3 ~ b4 ~ d5@3 ~ d#5 ~", Q: "~@2 [d#5,f#5,b5] ~@3 [f#4,b4,d#5] ~",
  R: "~@6 [g#4,b4,d5]@2 ~@8 f#4@2 [g#4,a#4,c#5,e5]@3 ~ f#4 ~", S: "~@16 f#4@2 g#4@3 ~ f#4 ~",
  T: "~@3 [d#5,f#5,b5] ~@5 [f#4,b4,d#5] ~@2", U: "~@3 [g#4,b4,d5] ~@5 [a#4,c#5,e5] ~@2",
  V: "[~@18 [d6,f#6]@23 ~@7, ~@18 c#6 ~@29]/2", // D
  W: "[g5,g#5] ~@3 [f#4,e5,g#5,b5,d6]@2 ~@4 g#5 ~ [f#4,e5,g#5,b5,d6]@2 ~@2 e3 f3 f#3@5 ~", X: "~@22 g#6 ~",
  Y: "b6@2 ~@2 b6 ~ b5@3 ~@3 [d6,f#6]@3 ~@9, ~@12 c#6 ~@11", Z: "~@10 [d6,f#6]@2 ~@10 b4 ~, ~@10 c#6 ~@13",
  AA: "d5@2 ~@2 d5@2 b4@3 ~ g#4@2 ~@12", AB: "~@22 g#5 ~", AC: "c#6 d6 ~@2 d6 ~@2 g#5@2 ~@3 b5@3 ~@9, ~@12 a#5 ~@11",
  AD: "~@6 g#6@2 g6@2 f#6@9 ~@5", AE: "c#6@2 d6@2 d#6@2 f#5@4 ~ b5@8 ~@5", AF: "~@4 b5@2 d5@4 d#5@2 b5@3 ~ b4 ~@7",
  AG: "~@16 f#5@2 d5@3 ~ d#5@2", AH: "~@12 f5 [f#5,b5] b5 f#5 b5 f#5 b5 [f#5,b5] f#5 b5 f#5 b5",
  AI: "f#5 b5 [f#5,b5] ~ [f#5,b5] f#5 b5 ~@3 d#5 e5 [f5,a5]@4 [e5,g#5]@8", // B5 F E
  AJ: "[d5,f5]@4 [c#5,e5]@7 ~@2 d5@2 d#5 d5 ~ g#4@3 ~ f#3@2, ~@12 b4@3 ~@2 b4@2 ~@5", AK: "b2 ~@7",
  AL: "g#6@3 ~@3 b5@3 ~@3 c#6 d6@3 ~@8, ~@5 g#5@2 ~@5 f#6@4 ~@8", AM: "~@16 [g6,g#6] ~@5 [d6,d#6,f#6] ~, ~@8 b6 ~@3",
  AN: "~@4 b4 ~ g#5@2 ~@4 [g5,g#5] ~@11, ~@6 b5 ~@5", AO: "c#6 ~@2 [c#6,d6] ~ b5 g#5@2 ~@2 b5 ~ c#6@3 ~@3 g#5@3 ~ b5@2",
  AP: "~@11 g6", AQ: "[e6,g#6]@5 ~ [d#6,f#6]@5 ~ [d6,f6]@4 ~@2 [c#6,e6]@3 ~ d6@2",
  AR: "d#6@3 ~ b5 b6 [b5,b6] b5 [b5,b6] b6 b5 b6 [b5,b6] b5 b6 b5 [b5,b6] b6 b5 [b5,b6] b6 b5 [b5,b6] ~", // B
  AS: "~@6 [d#5,f#5,b5]@2 ~@10 [f#4,b4] ~@5, ~@9 d#5 ~@2", AT: "~@6 [b4,d5]@2 ~@10 [a#4,c#5,e5] ~@3 d5@2, ~@6 g#4 ~@17",
  AU: "d#5@4 b4 b5 b4 [b4,b5] b5 b4 b5 b4 b5 b4 b5 b4 b5 b4 [b4,b5] b5 b4 b5 b4 ~", // B
  AV: "~@6 [g#4,b4] ~@11 [c#5,e5]@2 ~@4, ~@6 d5@2 ~@10 a#4 ~@5", // G#m C#m
  AW: "~@7 a6 [f6,g6] [c6,d6,e6] [a5,b5] [f5,g5] [c5,d5,e5] [g4,a4,b4] [e4,f4] [b3,c4,d4] [f3,g3,a3] [d3,e3] b2@4 ~@2, ~@3 b6 ~@8", // Fsus2 C Asus2 Fsus2 C G Fmaj7 Bm …
})).s("gm_piano").gain(0.44)

// other · trumpet
const trumpet = note("<~@9 A@2 B@2 C@4 ~@7 D E F G H I J K L ~@64>".pickRestart({
  A: "[~@10 c#5 d5 d#5@4 f#5@5 ~ f#4@20 ~@6]/2", B: "[~@9 c#5 d5 ~ d#5@4 f#5@6 f#4@23 ~@3]/2",
  C: "[~@9 c#5 ~ d5 d#5@4 f#5@6 b4@19 ~ b4@4 d5@8 b4@3 ~ f#5@8 b4@4 b4@20 ~@6]/4", D: "~@8 f#4 g#4@2 f#4",
  E: "b4@11 f#4", F: "a4@16 g#4@2 f#4@3 ~ b3@2", G: "d4@3 ~ d#4@17 ~@3, c#4 ~@23",
  H: "~@4 d5 ~ d5 ~ d#5 ~ d5@2 b4@4 f#4@2 g#4 a4@3 g#4@2, ~@5 d#5@2 ~@17", I: "f#4@9 g4 g#4@2 ~ d4@3 b3@4 ~@4",
  J: "f#5@15 ~ b4@2 ~@4 d5@2", K: "d#5@2 b4 d5@2 d#5 g#5@2 g5 f#5@2 d#5", L: "c#5@4 b4@2 g#4@4 b4@11 ~@3",
})).s("gm_trumpet").gain(0.29)

// chords · synth brass 2 · "SYNBRASS 2"
const synth_brass_2 = note(`<
  A B A B A B ~ C D B A B A B ~ C D ~@24 E F G A E ~ C H E I E I B J K@2 ~@2 E F G A E ~ C H B I B I B J K@2 ~@2 E F G A
  E ~ C H E L G I E J ~@2 M N@3
>`.pickRestart({
  A: "~@18 [b3,d#4] ~@3 [b3,d#4] ~", B: "~@4 [b3,d#4] ~@7 [b3,d#4] ~@11", C: "b3@9 ~@3 b3@7 ~@5", D: "b3@3 ~@2 b3 ~@6",
  E: "~@4 [b3,d#4] ~@7 [b3,d#4,f#4] ~@11", F: "~@18 [b3,d#4,g#4] ~@3 [b3,d#4] ~",
  G: "~@4 [b3,d#4,f#4] ~@7 [b3,d#4,f#4] ~@11", H: "b3 ~@9 b3@2 ~@12", I: "[e4,g#4,b4] ~@17 [b3,d#4] ~@3 [b3,d#4] ~",
  J: "[e4,g#4,b4] ~@23", K: "b3/2", L: "[e4,g#4] ~@17 [b3,d#4,g#4] ~@3 [b3,d#4] ~, b4 ~@11", M: "~ [a#4,c#5,e5]",
  N: "[[b4,d#5,f#5]@64 ~@2 [b4,d#5,f#5] ~@5]/3", // B
})).s("gm_synth_brass_2").gain(0.3)

// chords · synth brass 2 · "SYNBRASS 2" · soft notes
const synth_brass_2_soft = note(`<
  A B A B A B ~@3 B A B A B ~@27 C D ~ A C ~@3 C A C A B ~@5 C D ~ A C ~@3 B A B A B ~@5 C D ~ A C ~@3 C D ~ A C ~@7
>`.pickRestart({
  A: "~@18 g#4 ~@3 f#4 ~", B: "~@4 f#4 ~@7 f#4 ~@11", C: "~@4 f#4 ~@19", D: "~@22 f#4 ~",
})).s("gm_synth_brass_2").gain(0.15)

// chords · trombone
const trombone = note(`<
  ~@16 A B C D A E A F@2 ~@24 G H I J I J K L ~@10 M N O P O P Q R ~@10 G H I J I J S T U V ~ W
>`.pickRestart({
  A: "~@8 d5 c#5 ~@2", B: "[e4,g#4,b4]@5 [e4,g#4] ~@6, ~@10 b3 ~@13", C: "~@16 d5@2 c#5@3 ~@3",
  D: "[d#4,f#4] ~@5 [d#4,f#4,b4]@4 [f4,a#4] [d4,e4,a4] c#4 b3@2 ~@9, b4@3 ~@9 [d#4,g#4]@4 ~@8", // D#m B A#5 Dsus2 G#5
  E: "[e4,g#4,b4]@5 [b3,e4,g#4] ~@6", // E
  F: "[[d#4,f#4,b4]@3 ~@2 [d#4,f#4,b4,d#5]@4 ~@2 [c#4,g#4,b4,e5]@4 ~@2 [f#4,b4]@4 ~@3, ~@33 f#5@8 ~@7, ~@17 c#4@3 ~@4]/2", // B C#m7 B5
  G: "~@4 [d#5,f#5,b5] ~@7 [d#5,f#5,b5]@10 ~@2", H: "[e5,g#5,b5] ~@11", I: "~@4 [d#5,f#5,b5] ~@7 [d#5,f#5,b5]@11 ~",
  J: "[e5,g#5,b5] ~@23", K: "f#5 ~ f#5 ~ f#5 ~ f#5 ~ g#5 ~ a#5 ~ b5 ~ f#5 ~ f#5 ~ f#5 ~ f#5 ~ e5 ~",
  L: "d#5 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ g#4 ~ f#4 ~@9", M: "~@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4]@10 ~@2",
  N: "[e4,g#4,b4] ~@11", O: "~@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4]@11 ~", P: "[e4,g#4,b4] ~@23",
  Q: "f#4 ~ f#4 ~ f#4 ~ f#4 ~ g#4 ~ a#4 ~ b4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ e4 ~",
  R: "d#4 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ g#3 ~ f#3 ~@9",
  S: "f#5 ~ f#5 ~ f#5@2 f#5 ~ g#5@2 a#5 ~ b5@2 f#5@2 f#5@2 f#5 ~ f#5@2 e5 ~",
  T: "d#5 ~ b4 ~ d#5@2 e5 ~ c#5@2 e5@2 f5 ~ d5@2 f5@2 f#5 ~ g#5@2 a#5 ~", U: "b5 ~@11 [f#5,a5]@11 ~",
  V: "[b4,d#5,f#5] ~@11", W: "~@9 [b4,d#5,f#5] ~@2",
})).s("gm_trombone").gain(0.4)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = 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 AB AC AD AE AF I AG K AH AI N O AJ AK AL K AM M N AN AO ~@10
  AP AQ AR AS AT AU AV AW ~@10 K AX AR AQ AT AU AV AW ~@12
>`.pickRestart({
  A: "~@12 d#3@6 [d#4,f#4,a4]@2 ~@2 d#3 ~", B: "e3@6 [b3,e4,g#4]@3 ~ e3@2 ~@6 [c#4,e4,a#4]@2 g#3@2 f#3@2, ~@3 f#3@2 ~",
  C: "b2@3 [d#4,f#4,b4] ~ b2 d#3@3 [d#4,f#4,a4] ~ d#3", // B D#dim
  D: "e3@6 [b3,e4,g#4]@3 ~ e3@2 f#3@6 [g#3,c#4,e4]@4 f#3@2, ~@9 a#4 ~@2", // E C#m
  E: "b2@6 [d#4,f#4,b4]@2 ~@2 b2@2 d#3@6 [d#4,f#4,a4]@3 ~ d#3@2", F: "e3@3 [b3,e4,g#4] ~ e3 f3@3 [d4,f4,g#4] ~ f3",
  G: "b2@6 [d#4,f#4,b4]@2 ~@2 b2 ~ d#3@6 [d#4,f#4,b4]@2 ~@2 d#3@2", // B
  H: "e3@3 [b3,e4,g#4] ~ e3 f#3@3 [g#3,c#4,e4,a#4] ~ f#3", // E A#m7b5
  I: "b2@3 ~@3 [d#4,f#4,b4]@2 ~@4 d#3@4 ~@2 [d#4,f#4,a4]@2 ~@4, ~@3 b2@2 ~@4 d#3@2 ~", // B D#dim
  J: "e3@2 ~ [b3,e4,g#4] ~@2 f#3@2 ~ [c#4,e4,a#4] ~@2, ~@6 e3@5 ~@7 f#3@4 ~@2", // E A#dim
  K: "b2@2 ~ [d#4,f#4,b4] ~@2 d#3@2 ~ [d#4,f#4,a4] ~@2, ~@3 b2@2 ~@4 d#3@2 ~", // B D#dim
  L: "e3@4 ~@2 [e3,e4,g#4]@4 ~@2 f#3@4 ~@2 [f#3,c#4,e4,a#4]@2 ~@2 f#3 ~, ~@3 b3 ~@8", // E F#7
  M: "b2@4 ~@2 [d#4,f#4,b4]@2 ~@4 d#3@3 ~@3 [d#3,d#4,f#4,a4]@3 ~@3, ~@3 b2@2 ~@7", // B D#dim
  N: "e3@3 ~@3 [b3,e4,g#4]@2 ~@4 f3@4 ~@2 [d4,f4,g#4]@2 ~@4, ~@3 e3@2 ~@4 f3@2 ~", // E Ddim
  O: "f#3@2 ~ [f#3,d#4,f#4,b4] ~@2 f#3@2 ~ [d#4,f#4,b4] ~@2, ~@9 f#3@2 ~", // B
  P: "b3 ~@3 f#3 ~ [d#4,f#4,b4]@2 ~@4 b2@4 ~@2 [b3,d#4,f#4,a4]@2 f#3 ~ f3 ~, ~@3 b2@2 ~@7", // B B7
  Q: "e3@4 ~@2 [e4,g#4,b4] ~@5 b2@4 ~@2 [d4,g#4,b4] ~@5, ~@6 e3@4 ~@8 b2@5 ~", // E G#dim
  R: "e3@2 ~@2 e3 ~ [d4,g#4,b4]@2 ~@4 g3@3 ~ g3 ~ [d4,g#4,b4]@2 ~@4, ~@6 f#3@5 ~@7 e3@4 ~@2", // G#dim
  S: "b2@2 ~ [d#4,f#4,b4] ~@2 f#3@2 ~ [d#4,f#4,b4] ~@2, ~@3 b2@2 ~@4 f#3@2 ~", // B
  T: "b3@4 ~@2 b3@3 ~ f#3 ~ b2@6 d#3@4 ~@2, ~@6 b4 ~@17",
  U: "e3@4 ~@2 [e3,e4,g#4,d5]@2 ~@2 e3@2 b2@4 ~@2 [e4,g#4] ~@5, ~@18 b2@5 ~, ~@9 b4 ~@2", // E7 E
  V: "e3@4 b2@2 [g#4,d5] ~@5 g3@6 [e3,g#4]@3 ~ e3 ~, ~ f#3 ~@2, ~@6 e4@2 ~@10 [e4,d5] ~@5", // G#dim E E7
  W: "b3@2 ~ [b3,d#4,f#4,b4] ~ b3 g#3@2 ~ [g#3,d#4,f#4,b4] ~ g#3", // B G#m7
  X: "c#3@4 ~@2 [c#3,d#4,f#4,b4]@2 ~@2 c#3@2 f#3@4 ~@2 [f#3,c#4,e4,a#4]@2 c#3 ~ c3@2", // B F#7
  Y: "b2@3 ~@3 [d#4,f#4,b4]@2 ~@4 d#3@4 ~@2 [d#3,a4]@4 ~@2, ~@3 b2@2 ~@4 [d#4,f#4] ~@2", // B D#dim D#m
  Z: "e3@3 ~@3 [b3,e4,g#4]@3 ~@3 f#3@4 ~@2 [f#3,c#4,a#4]@4 ~@2, ~@6 e3@5 ~@7 e4@2 ~@4", // E F#
  AA: "b2@4 ~@2 [d#4,f#4,b4]@2 ~@4 d#3@4 ~@2 [d#3,d#4,f#4,a4]@3 ~@3, ~@3 b2@2 ~@7", // B D#dim
  AB: "e3@4 ~@2 [e3,b3,g#4]@4 ~@2 f#3@4 ~@2 [f#3,c#4,e4,a#4]@3 ~ f#3 ~, ~@3 e4 ~@8", // E F#7
  AC: "b2@4 ~@2 [d#4,f#4,b4]@2 ~@4 d#3@3 ~@3 [d#3,a4]@4 ~@2, ~@3 b2@2 ~@4 [d#4,f#4] ~@2", // B D#dim D#m
  AD: "e3@3 ~@3 [e3,e4,g#4]@4 ~@2 f3@4 ~@2 [f3,d4,f4,g#4]@3 ~@3, ~@3 b3 ~@8", // E Ddim
  AE: "f#3@4 ~@2 [f#3,d#4,f#4,b4]@3 ~@3 f#3@4 ~@2 [f#3,d#4,f#4,b4]@2 ~@4", // B
  AF: "~@4 f#3 ~ [f#2,b3]@4 ~@2 f#2@4 ~@2 [b3,c#4,e4,a#4]@2 f#3@2 d#3 ~, b3@3 [e4,g#4] ~@8", // B5 A#dim E
  AG: "e3@3 ~@3 [b3,e4,g#4]@2 ~@4 f#3@4 ~@2 [f#3,c#4]@4 ~@2, ~@6 e3@5 ~@7 [e4,a#4]@2 ~@4", // E F#5 Edim
  AH: "e3@4 ~@2 [e3,b3,g#4]@4 ~@2 f#3@4 ~@2 [f#3,c#4,e4,a#4]@2 ~@2 f#3 ~, ~@3 e4 ~@8", // E F#7
  AI: "b2@4 ~@2 [b2,d#4,f#4,b4]@3 ~@3 d#3@3 ~@3 [d#3,a4]@4 ~@2, ~@9 [d#4,f#4] ~@2", // B D#dim D#m
  AJ: "b3 ~@3 f#3 ~ [f#2,b3]@4 ~@2 f#2@4 ~@2 [b3,c#4,e4,a#4]@2 f#3 ~ d#3 ~, ~@3 [e4,g#4] ~@8", // B5 A#dim E
  AK: "b2@5 ~ [b3,d#4,f#4,b4]@2 ~@2 b3@2 d#3@4 ~@2 [f#4,a4]@2 ~@4, ~@9 d#3@2 ~, ~@18 d#4 ~@5", // B F#m
  AL: "e3@3 ~@3 [b3,e4,g#4]@2 ~@4 f#3@4 ~@2 [c#4,e4,a#4]@2 ~@4, ~@6 e3@5 ~@7 f#3@4 ~@2", // E A#dim
  AM: "e3@4 ~@2 [b3,e4,g#4]@2 ~@4 f#3@4 ~@2 [f#3,c#4,e4,a#4]@2 ~@2 f#3 ~, ~@3 e3@2 ~@7", // E F#7
  AN: "f#3@2 ~ [f#3,d#4,f#4,b4] ~@2 f#3@2 ~ [d#4,f#4] ~@2, ~@9 f#3@2 ~, ~@18 b4 ~@5", // B D#m
  AO: "~@4 f#3 ~ [d#4,f#4,b4]@2 ~@4 b2@4 ~@2 [b3,d#4,f#4,a4]@2 f#3@2 d#3 ~, b3@3 ~@5, ~@3 b2@2 ~@7", // B B7
  AP: "b2@2 ~ [d#4,f#4,b4] ~@2 d#3@2 ~ [f#4,a4] ~@2, ~@3 b2@2 ~@4 d#3@2 ~, ~@18 d#4 ~@5", // B F#m
  AQ: "e3@3 ~@3 [b3,e4,g#4]@2 ~@4 f#3@3 ~@3 [f#3,c#4,e4,a#4]@2 g#3@2 f#3@2, ~@3 e3@2 ~@7", // E F#7
  AR: "b2@4 ~@2 [b2,d#4,f#4,b4]@2 ~@4 d#3@3 ~@3 [d#4,f#4,a4]@2 ~@4, ~@9 d#3@2 ~", // B D#dim
  AS: "e3@3 ~@3 [e3,e4]@4 ~@2 f#3@3 ~@3 [f#3,c#4,e4,a#4]@2 g#3@2 f#3@2, ~@3 [b3,g#4] ~@8", // E F#7 E
  AT: "b2@4 ~@2 [b2,d#4,f#4,b4]@2 ~@4 d#3@3 ~@3 [d#3,d#4,f#4,a4]@3 ~@3", // B D#dim
  AU: "e3@3 ~@3 [b3,e4,g#4]@2 ~@4 f3@4 ~@2 [f3,d4,f4,g#4]@2 ~@4, ~@3 e3@2 ~@7", // E Ddim
  AV: "b3@4 ~@2 [b3,d#4,f#4,b4]@2 f#3 ~ d#3 ~ f#2@4 ~@2 [f#2,d#4,f#4]@3 ~@3, ~@18 b4 ~@5", // B D#m
  AW: "b3@4 ~@2 [b3,d#4,f#4,b4]@2 ~@3 b3 g#3@3 ~ g#3 ~ [f#3,d#4,f#4,a4]@2 ~@2 d#3@2", // B D#dim
  AX: "e3@3 ~@3 [b3,e4,g#4]@2 ~@4 f#3@3 ~@3 [f#3,c#4,e4,a#4]@2 g#3@2 f#3 ~, ~@3 e3@2 ~@7", // E F#7
})).s("gm_acoustic_guitar_steel").gain(0.21)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@15 B A@7 C A@15 C A@7 C D E D E D E ~@2 F G A@14 ~@3 H A@7 C D E D E D E ~@2 I J ~ K
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~", C: "x ~@4 x!2 ~@4 x", D: "x ~@4 x!2 ~@5", E: "x ~@4 x ~@6", F: "~@11 x",
  G: "x ~@7 x!2 ~@2", H: "~@2 x!2 ~@4 x!2 ~@2", I: "~ x!2 ~", J: "x", K: "~@3 x",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct("<~@4 A@5 B@31 C B@8 ~@6 B@30 ~@6 B@2 ~@4>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@24 A ~@15 A ~@7 A B@6 ~@21 C ~@7 A B@6 ~@4 D E>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x", D: "~@16 x!8", E: "x!4 ~@3 x!3 ~ x!7 ~@6",
})).gain(0.3)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@40 [~@8 x ~@2 x] ~@54 [x!16 ~@8] [~@4 x!3 ~@3 x ~@13]>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~ A B@47 ~@6 C@4 B@14 C@4 B@8 ~@6 C@2 ~@4>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x!2 ~ x ~@2 x!2 ~ x",
})).gain(0.3)

// … 13 more lines

More by The Manhattan Transfer