Strudelify

What Kind of Fool

Barbra Streisand

KeyD majorTempo78 bpm
0:00/0:00
// What Kind of Fool — Barbra Streisand
// 78 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: metre changes (4/4 at bar 1, 2/4 at bar 58, 5/8 at bar 58, 4/4 at bar 59, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 83 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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 · epiano1 · "tk1"
const epiano1 = note(`<
  A B C@2 D E@2 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 AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD@8 BE BF BG@7 BH@6 ~@3
>`.pickRestart({
  A: "~@5 a3@2 a3, [d2,e4,f#4,a4], ~ d4@7, ~@2 a3@3 ~@3, ~@3 f#3@5", // D
  B: "~@42 f#4@5 ~, g1@18 b4@5 ~, b3@9 b3@14 ~, ~@3 d4@12 d4@8 ~, ~@6 f#3@17 ~",
  C: "[~@18 d4@24 ~@48 f#4@5 ~, [d2,a4]@48 g1@39 e4@8 ~, ~@6 e4@42 ~@6 b3@6 f#3@35 ~, ~@12 f#4@36 f#4@36 d4@11 ~, ~@42 d4@24 b3@29 ~]/2", // D5
  D: "~@7 e4, [c2,d4,g4], ~ e4@6 ~, ~ c4@2 c4, ~@18 g3@29 ~", // Csus2
  E: "[~ b1@17 ~ [a1,g3,b3,e4]@17 ~ [g1,f#3,a3,b3,d4]@58 ~, [a3,d4,f#4]@18 c4@17 ~@61]/2", // Em Gmaj7 D
  F: "~@18 a3@3 a3@2 ~, [d2,e4,f#4,a4]@23 ~, ~@3 d4@20 ~, ~@6 a2@17 ~, ~@6 a3@3 f#3@14 ~", // D
  G: "~@7 d4, g1@13 e4@3, b3@3 b3@5, ~ d4@5 f#4@2, ~ f#3@3",
  H: "~@21 f#3@2 ~, [d2,e4,a4]@18 a3@5 ~, ~@3 [a2,f#4]@20 ~, ~@6 d3@17 ~, ~@6 d4@3 a3@6 d4@8 ~", // Dsus2 D
  I: "~@2 f#4!2, [g1,f#3,b3], ~ g2@7, ~ d4@3", J: "~@3 c4, [c2,d4,e4,g4], ~ g2@7, ~ c3@3, ~ c4 g3@2",
  K: "d4 ~@5 [a3,f#4]@2, b1, f#4@3 ~, a3 a3@2 ~, ~ d4@3 [d4,b4]@4", // D G
  L: "~@3 [g3,e4], [a1,c4]@15 ~, e4@6 g4@9 ~, g3 g3@2 ~, ~@2 a2@13 ~", M: "[g1,g2,f#3,b3,d4,f#4,b4]@15 ~",
  N: "[e4,f#4,a4,d5]", O: "~@7 d5, [d4,f#4,b4], ~@3 f#5, ~@13 e5@3", P: "~@3 a4@5, [e5,f#5,a5], ~ d5@7",
  Q: "~@4 d5@11 ~, [d4,f#4,b4]@23 ~", R: "[c4,d4,e4,g4]@15 ~", S: "~ d5, [a3,d4,f#4], ~ b4@3", T: "[g3,c4,e4,g4]@23 ~",
  U: "d4@3 ~@6 [f#4,d5]@13 ~@2, [a3,b3]@15 ~, f#4@3 ~@5, ~@3 [d4,b4]@19 ~@2", V: "[e4,f#4,a4,c#5] [c#4,e4,f#4,a4]",
  W: "~@7 c#5, [d#4,f#4,g#4], b4@3 b4, ~ [d#5,f#5,g#5,b5]", X: "[g#4,b4,c#5,e5] [e4,g#4,c#5]", Y: "[b3,d#4,f#4]",
  Z: "~@6 b4@41 ~, [d#5,f#5]@47 ~", AA: "~@5 c#5@3, [b3,d#4,f4], ~ g#4@7, ~@3 b4@5",
  AB: "~@2 c#5 [g#4,c#5], g#4@3 ~, [c#5,e5] e5, ~ g#5@7", AC: "[f#4,b4,d#5]",
  AD: "~@12 b4@11 ~, [d#4,f#4]@23 ~, ~ b4@3 ~@4, ~@9 d#5@14 ~", AE: "~@7 f5, ~ f4@7, ~ g#4@3, ~@3 b4@5, ~ c#5",
  AF: "~ g#4, f#5, ~ e5@7, ~@3 c#5@5", AG: "[d#4,f#4,b4]@23 ~ [e4,g#4,c#5]@23 ~",
  AH: "[c#4,e4,f#4,a4]@24 [b3,e4,f#4,g#4]@23 ~", AI: "[a3,c#4,e4,f#4]@24 [b3,c#4,e4,g#4]@23 ~",
  AJ: "d4@18 ~@12 d5@17 ~, [e4,f#4]@47 ~, a4@24 a4@23 ~, ~@18 d4@29 ~", AK: "b4@6 ~ e5, [d4,f#4], ~@3 b4",
  AL: "e5@2 ~@5 d5, [f#5,a5], ~ e5@2 e5, ~@3 d5@4 ~", AM: "b4@2 ~@4 f#5@9 ~, [d4,f#4]@15 ~, ~@2 b4@13 ~, ~@4 d5@11 ~",
  AN: "~ g4@3, [d5,e5,g5], ~ c5@7", AO: "[a4,d5,f#5]", AP: "[g4,c5,e5]", AQ: "[f#4,b4,d5]", AR: "[e4,a4,c#5]@47 ~",
  AS: "~@7 e5, [d#4,g#4,b4], ~@3 c#5", AT: "~@3 g#4@5, g#5, ~ e5@7, ~ c#5@3",
  AU: "~@3 b4, f#5, ~ d#5@7, ~ f#4@3, ~@2 b4@3 d#4@3", AV: "~@3 f#4@5, f#5, ~ d#5@7, ~ b4@3",
  AW: "~@12 c#5@11 ~, c#5@6 g#4@17 ~, ~@3 f4@20 ~, ~@9 b4@14 ~",
  AX: "b4@9 ~@6 e5@8 ~, [c#5,g#5]@23 ~, e5@5 ~@3, ~@9 b4@14 ~", // C#5
  AY: "b4@12 ~@6 f#4@5 ~, f#4@3 ~, d#4@15 d#4@8 ~, ~@12 b4@11 ~",
  AZ: "d#4@18 ~@12 g#4@17 ~, [b3,f#4]@47 ~, g#4@5 ~@3, ~@18 d#4@29 ~", // B5
  BA: "f4@3 ~@3 b4@2, [b3,d#4], ~@3 f4@5, ~@5 g#4@3", BB: "[f#4,a4,c#5]@23 ~ [e4,g#4,b4]@23 ~",
  BC: "[f#4,a4,c#5]@14 ~@4 [b2,b3,e4,g#4]@3 ~@3 [a2,a3,d4,f#4]@22 ~@2", // F#m E D
  BD: "[[g#2,g#3,b3,e4]@3 ~@27 f#4@12 a4@10 ~@38 b5@11 ~ [f#5,a5,c#6]@24 [e5,g#5,b5]@24 [a4,c#5,f#5]@18 [b2,g#4,b4,e5]@2 ~@4 [a2,f#4,a4,d5]@28 ~@2 [g#2,e4,g#4,c#5]@2 ~@4 [f#2,d4,f#4,b4]@12 [g#2,f4,g#4,b4,c#5]@48 ~@68 b3@4 [f#3,a3,c#4]@42, ~@6 [f#2,f#3,a3,d4]@48 [f4,g#4,b4,c#5]@48 ~@176 f#5@9 e5@7 c#5@4 e5@20 f#4@4 a4@4 e4@4 f#4@4 c#4@8 ~@42, ~@67 f5@36 ~@171 b5@29 b4@3 c#5@36 ~@42, ~@78 g#5@24 ~@168 a5@13 a5@59 ~@42, ~@290 f#5@20 a4@5 b4@27 ~@42]/8", // E F#m E F#m E D C#m Bm …
  BE: "~@11 [e5,g#5,b5]@13, ~ [b3,e4,g#4]@11", BF: "~ [b3,c#4,e4,g#4]@23",
  BG: "[~ [a#3,c#4,e4,f#4]@45 ~ [a4,c#5,e5,f#5]@46 ~ [b4,e5]@46 [c#5,e5,g#5,b5]@46 [a#4,c#5,e5,f#5]@46 f#5@29 ~@6 c#5@11 [c#4,e4,g#4,b4]@43 ~@4 [g#4,b4,c#5,e5]@11, ~@93 [g#4,c#5]@48 ~@91 [e5,a5]@46 ~@58, ~@232 c#5@35 ~@69, ~@261 f#5@17 ~@58]/7", // F#7 F#m7 E5 C#m7 F#7 C#m7 C#5 A5
  BH: "[~@12 [e4,g#4,b4,c#5]@11 [e4,g#4,b4]@10 ~@2 [c#4,e4,f#4,a#4]@46 [e4,f#4,a4,c#5]@46 [c#4,e4,g#4,b4]@46 ~ g#5@46 [a#4,c#5,e5,f#5]@46 ~@22, ~@173 [b4,c#5,e5]@48 ~@67]/6", // C#m7 E F#7 F#m7 C#m7 F#7 C#m7
})).s("gm_epiano1").gain(0.27)

// bass · fretless bass · "tk2"
const bass = note(`<
  ~@15 A B C B D E F G H I J K L M N O P Q R S T U V W X Y Z AA F W AB AC J K L AD N AE P AF AG AH AI AJ AK AL@7 AM@3
  AN@5 AO@8
>`.pickRestart({
  A: "d2@47 ~", B: "g1", C: "d2", D: "c2@23 ~", E: "b1", F: "a1@47 ~", G: "g1@36 ~@6 g1@5 ~", H: "f#1@47 ~",
  I: "e1@15 ~", J: "a1@16 ~@2 a1@4 ~@2 e1@11 ~ a1@11 ~", K: "g#1@16 ~@2 d#2@11 ~ g#1@9 ~@3 d#2@5 ~",
  L: "g#1@15 ~@3 g#1@6 d#2@11 ~ g#1@10 ~@2", M: "c#2@19 ~@2 c#2 ~@2 c#2 ~@5 c#2@10 ~@2 c#2@2 ~ b1@2 ~",
  N: "a1@15 ~@3 a1@3 ~@3 e1@11 ~ a1@10 ~@2", O: "g#1@15 ~@3 d#2@9 ~@3 g#1@8 ~@4 d#2@6",
  P: "g#1@15 ~@3 g#1@4 ~@2 d#2@11 ~ g#1@9 ~@3", Q: "c#2@18 ~@3 c#2@2 ~ c#2 ~@5 c#2@9 ~@3 c#2@2 ~ b1@3",
  R: "a1@15 ~@3 a1@5 ~ e1@11 ~ a1@11 ~", S: "g#1@23 ~ c#2@11 ~ c#2@10 ~@2", T: "d2@17 ~ d2@5 ~ e1@9 ~@3 e1@9 ~@3",
  U: "f#1@15 ~@3 f#1@5 ~ c#2@21 ~@3", V: "d2@20 ~ d2@3", W: "g1@23 ~", X: "d2@27 ~@3 d2@10 ~@2 d2@6", Y: "g1@15 ~",
  Z: "c2@13 ~ c2 ~", AA: "b1@9 ~ b1@5 ~", AB: "f#1@13 ~@2 f#1@5 ~ f#1@2 ~", AC: "e1@33 a2@3 g#2@6 e1@5 ~",
  AD: "c#2@21 ~@3 c#2 ~@5 c#2@10 ~@2 c#2@2 ~ b1@2 ~", AE: "g#1@5 ~ d#2@3 ~ g#1@3 ~ d#2@2",
  AF: "c#2@21 ~@3 c#2 ~@5 c#2@9 ~@3 c#2@3 ~@3", AG: "d2@21 ~@3 d2@2 ~@4 d2@10 ~@2 d2@4 ~@2",
  AH: "f#1@15 ~@3 e2@4 ~@2 d2@21 ~@3", AI: "c#2 ~ b1@13 ~",
  AJ: "b1@2 ~ c2@2 ~ c#2@16 ~@2 c#2@4 ~@2 g#1@4 ~@2 c#2@10 ~@2", AK: "c#2@3 ~@3 d2@22 ~@2 d2@3 ~@3 d2@10 ~@2",
  AL: "[d2@3 ~@3 f#1@17 ~ e2@3 ~@3 d2@11 ~ a1@11 ~ d2@4 ~@2 c#2@3 ~@3 b1@10 ~@2 c#2@23 ~ g#1@3 ~@3 c#2@10 ~@2 c#2@3 ~@3 d2@68 ~@4 d2@21 ~@8 d2@8 ~@3 d2@5 ~ c#2@16 ~@2 g#1@11 c#2@12 g#2@11 c#3@12 g#2@11 c#2@16 ~]/7",
  AM: "[~ f#1@10 ~ f#1@9 ~@3 f#1 ~@5 f#1@8 ~@3 f#2@3 e2@2 ~ d2@26 ~@3 d2@10 ~ d2@5 ~ c#2@26 ~@3 g#1@10 ~@2 c#2@10]/3",
  AN: "[~ g#2@11 ~ c#3@11 g#2@8 ~@4 c#2@5 ~ f#1@19 ~@4 f#1@2 ~ f#1@2 f#1@7 ~@5 f#2@2 ~ e2@3 d2@24 ~@5 d2@9 ~@2 d2@5 ~ c#2@19 ~@4 g#1@3 ~@3 c#2@10 ~ g#2@11 ~ c#3@11 ~ g#2@9 ~@2 g#2@5 ~ c#2@11 ~ f#1@4 ~ f#1@4 ~@2 f#1@2]/5",
  AO: "[~@4 f#1@4 ~@2 f#1@5 f#1@4 ~@5 f#1@2 ~ f#2@2 ~ e2@2 ~ d2@24 ~@5 d2@10 ~ d2@5 ~ c#2@27 ~@2 g#1@10 ~ c#2@10 ~@2 g#2@10 ~ c#3@11 ~ g#2@11 c#2@5 ~ f#1@5 ~ f#1@9 ~@2 f#1@10 ~@2 f#1@11 ~ f#1@2 ~ e1@2 ~ d1@137 ~@29]/8",
})).s("gm_fretless_bass").gain(0.44)

// chords · acoustic guitar steel · "tk3"
const acoustic_guitar_steel = note("<~@15 A B C D E F G H I J ~@12 A B C K E L M N O J ~@36>".pickRestart({
  A: "~@3 f#4@3 ~ d4, f#4@3 ~@3 f#4@2, ~@2 a3@11 a3@3, ~@2 d4@5 ~",
  B: "~@6 f#4@5 ~@3 d4@2, f#4@3 ~@3 f#4@2, ~@3 g3@13, ~@4 d4@7 d4@2 ~@3",
  C: "~@7 d4, ~ d4@2 a3@8 a3@2 a3@3, ~ f#4@2 f#4@5, ~@2 d4@4 d4 ~",
  D: "~@42 d4@5 ~, ~ f#4@2 f#4@3 f#4@2, ~@4 d4@6 d4@3 g3@3, ~ b3",
  E: "~@15 e4, e3@4 g3@3 c4, ~@3 g3@6 a3@27 e4@7 ~@5, ~@2 e4@4 e4@5 c4@2 a3@3, ~@2 c4@3 e3@3",
  F: "~@15 f#4, f#3@4 a3@3 d4, ~@3 a3@6 b3@27 f#4@7 ~@5, ~@2 f#4@4 f#4@5 d4@2 b3@3, ~@2 d4@3 f#3@3",
  G: "~@7 c4, e3@24 g3@19 ~@5, ~@3 g3@6 a3@27 e4@7 ~@5, ~@2 e4@4 e4@5 c4@2 a3@3, ~@2 c4@3 e3@3",
  H: "~@15 e4, ~ d4@2 g3@7 g3@3 g3@3, ~ f#4@2 f#4@3 f#4@2, ~@4 d4@7 d4@3 d4@2",
  I: "~@8 c#4@2 ~@5 f#4, f#3@5 f#3@3, ~ c#4@2 a3@10 a3@3, ~@2 f#4@4 f#4@6 f#4@3 ~, ~@4 c#4@4 ~@3 c#4@3 c#4@2",
  J: "~@6 [d#4,g#4]@9 ~, ~ [d#4,g#4]@2 ~@5, ~@4 [f#4,d#5]@11 ~", // G#5 D#m
  K: "~@42 d4@5 ~, ~@6 f#4@12 f#4@18 f#4@11 ~, ~@12 d4@18 d4@9 g3@8 ~, ~ b3",
  L: "~@15 f#4, f#3@4 a3@3 d4, ~@3 a3@5 ~ b3@27 f#4@7 ~@5, ~@2 f#4@4 f#4@5 d4@2 b3@3, ~@2 d4@3 f#3@3",
  M: "~@7 c4, e3@24 g3@19 ~@5, ~@3 g3@5 ~ a3@27 e4@7 ~@5, ~@2 e4@4 e4@5 c4@2 a3@3, ~@2 c4@3 e3@3",
  N: "~@45 e4@2 ~, ~ d4@2 g3@7 g3@3 g3@3, ~ f#4@2 f#4@3 f#4@2, ~@12 d4@21 d4@9 d4@5 ~",
  O: "~@8 c#4@2 ~@5 f#4, f#3@30 f#3@17 ~, ~@3 c#4@6 a3@30 a3@8 ~, ~@2 f#4@4 f#4@6 f#4@3 ~, ~@4 c#4@4 ~@3 c#4@3 c#4@2",
})).s("gm_acoustic_guitar_steel").gain(0.27).pan(0.3)

// chords · acoustic guitar steel · "tk5"
const acoustic_guitar_steel_2 = note(`<
  ~@7 A B C D E F@3 ~@6 G@2 ~@10 H I J K@2 L M N O P@2 Q R S ~@17 T@4 U@7 V@2 W X@4 ~
>`.pickRestart({
  A: "~ f#3!7", B: "f#3@6 f#3@3 f#3@13 ~@2", C: "~@6 f#3@5 ~ f#3@6 f#3@6 f#3@6 f#3@6 f#3@6 f#3@6",
  D: "b3@4 a3@4 f#3@4 e3 d3@3", E: "~ e3!3 e3@2 f#3@2",
  F: "[~@7 d3@5 d3@6 d3@6 d3@12 e3@6 c3@21 ~@3 c3@5 ~ e3@12 d3@6 b2@38 ~@16]/3", G: "[~@9 e3@3 g3@6 f#3@3 d3@23 ~@4]/2",
  H: "~ g#4!3 c#5@2 g#4 f#4", I: "g#4@6 g#4@18 ~@6 f#4@5 ~ e4@12", J: "~ e4!2 c#4 f#4@2 e4@2",
  K: "[~@6 g#4@5 ~ g#4@6 g#4@3 a4@2 g#4@6 ~ e4@6 c#4@6 d4@12 a3@6 a3@5 ~ a3@6 a3@6 a3@6 a3@6 a3@6]/2",
  L: "b3@4 b3@2 b3@3 a3 g3@6", M: "~@7 a3@5 a3@6 a3@6 a3@6 a3@6 a3@5 a3@7", N: "d4@4 c#4@4 a3@4 g3 f#3@3",
  O: "~@6 g3@6 g3@6 g3@6 g3@11 a3@13", P: "[~@6 f#3@5 ~ f#3@6 f#3@5 f#3@13 g3@6 e3@18 e3@6 g3@18 f#3@5 ~ f#3@3 e3@3]/2",
  Q: "d3 ~", R: "~@6 c#3@12 e3@11 ~ f#3@12 e3@6", S: "~ c#3 b2@7 ~@7",
  T: "[~@12 [c#4,f#4,a4]@17 [c#4,f#4,a4]@6 [c#4,f#4,a4]@6 [b3,e4,g#4]@5 [b3,e4,g#4]@26 ~@3 [g#3,c#4,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@6 [b3,e4,g#4]@26 ~@3 [g#3,c#4,e4]@5 [a3,d4,f#4]@6 [b3,e4,g#4]@6 [a#3,c#4,f#4]@17 [a#3,c#4,f#4]@6 [b3,e4,g#4]@12 [c#4,f#4,a#4]@17 ~]/4", // F#m E C#m D E C#m D E …
  U: "[~@5 [c#4,f#4,a4]@17 [c#4,f#4,a4]@6 [c#4,f#4,a4]@11 [b3,e4,g#4]@26 ~@3 [g#3,c#4,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@6 [b3,e4,g#4]@26 ~@2 [g#3,c#4,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@6 [a#3,c#4,f#4]@17 [a#3,c#4,f#4]@6 [b3,e4,g#4]@11 [c#4,f#4,a#4]@17 ~@7 [c#4,f#4,a4]@17 [c#4,f#4,a4]@6 [c#4,f#4,a4]@5 [b3,e4,g#4]@6 [b3,e4,g#4]@26 ~@3 [g#3,c#4,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@5 [b3,e4,g#4]@26 ~@3 [g#3,c#4,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@6 [a#3,c#4,f#4]@17 [a#3,c#4,f#4]@2]/7", // F#m E C#m D E C#m D E …
  V: "[~@4 [b3,e4,g#4]@11 [c#4,f#4,a#4]@17 ~@6 [c#4,f#4,a4]@17 ~ [c#4,f#4,a4]@6 [c#4,f#4,a4]@11 [b3,e4,g#4]@23]/2", // E F# F#m E
  W: "~@6 [g#3,c#4,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@5 [b3,e4,g#4]@25", // C#m D E
  X: "[~@4 [g#3,c#4,e4]@6 [a3,d4,f#4]@6 [b3,e4,g#4]@6 [a#3,c#4,f#4]@17 [a#3,c#4,f#4]@6 [b3,e4,g#4]@11 [c#4,f#4,a#4]@17 ~ [c#4,e4,f#4,a4]@92 ~@26]/4", // C#m D E F# E F# F#m7
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.4)

// chords · electric guitar jazz · "tk6" · D B5 D A5 G#m A G#m G#5 …
const electric_guitar_jazz = note(`<
  ~@44
  [[d5,f#5]@6 ~@3 [f#4,b4]@8 ~ [d4,f#4]@5 ~]
  [[e4,a4]@7 ~@5]
  [[g#4,b4]@3 [a4,c#5]@3 [g#4,b4]@6 [d#4,g#4]@3 ~@3 [g#4,b4]@3 [a4,c#5]@3 [g#4,b4]@6 [d#4,g#4]@4 ~@14]
  ~@4
  [~@13 e5@3 ~@2 g4@2 g#4@17 ~@11, ~@4 c#5 ~ c#5@7 ~@3]
  ~@31
>`).s("gm_electric_guitar_jazz").gain(0.2).pan(0.7)

// chords · string ensemble 2 · "tk7"
const string_ensemble_2 = note("<~@25 A@3 B C D@2 B E F@4 G H I J K@5 L@4 M@4 N@2 O@7 P@2 Q R@2 S@8 T@6>".pickRestart({
  A: "[[b3,c#4,e4,g#4]@47 ~ b3@96, ~@47 [d#4,f#4]@96 ~]/3", B: "[b3,c#4,f4,g#4]", C: "[b3,e4,g#4]",
  D: "[[g#3,b3,d#4,f#4]@47 ~ [g#3,b3,d#4]@48, ~@47 f#4@48 ~]/2", // G#m7 G#m
  E: "[g#4,g#5]@30 [e4,e5]@5 ~ c#4@5 ~ b3@6, ~@35 c#5@6 b4@6 ~", // G# E
  F: "[[d#4,d#5]@5 ~ e4@29 ~ g#4@5 ~ a3@11 [e4,e5]@29 ~ b4@6 [c#4,c#5]@12 ~ g#4@29 ~ c#4@5 ~@7 [a3,f#4,a5]@48, ~@5 e5@30 g#3@6 a4@13 ~@28 b3@7 ~@12 g#5@30 c#5@6 [d4,d5]@54 ~]/4", // D# E C# D
  G: "[g3,f#4,d5,b5]", H: "[a3,d4,f#4,d5,a5]", I: "[g3,b3,f#4,d5,f#5]", J: "[c4,e4,g4]",
  K: "[[a3,d4,f#4]@47 ~ [g3,e4]@47 ~ [g3,b3]@47 ~ c#4@47 ~ [g#3,d#4,f#4,g#4]@48, ~@47 c4@48 [d4,f#4]@48 [e4,a4]@48 b3@48 ~]/5", // D C G G#7 D A5
  L: "[~@5 [d#5,d#6] ~@7 [c#5,c#6]@3, [e4,g#4]@47 [d#4,f#4]@96 ~ [c#4,f4,g#4]@48, ~@12 [c#5,c#6]@48 ~@12 [b4,b5]@85 ~@35]/4", // D# C# E D#m C# B
  M: "[[c#4,e4,g#4,g#5]@47 ~ f#5@12 ~@36 [b3,f#4]@47 ~@13 c#6@36, ~@47 [d#4,f#4]@48 d#4@48 [f4,g#4]@48 ~, ~ b3 ~ b3, ~@5 b5@8 ~@3]/4", // C#m B5 D#m Fm
  N: "[[c#4,f#4,a4,f#5]@24 [b3,e4,g#4,e5]@23 ~ [c#4,a4]@17 ~ [b3,e4,g#4,e5]@3 ~@3 [a3,d4,f#4,d5]@24, ~@47 [f#4,f#5]@16 ~@33]/2", // F#m E F#m E D F#
  O: "[[g#3,c#4,e4,c#5]@3 ~@3 [f#3,b3,d4,b4]@48 [b3,f4,g#4,c#5]@48 [c#4,f#4,a4,f#5]@24 [b3,e4,g#4,e5]@23 ~ [c#4,a4]@17 ~ [b3,e4,g#4,e5]@3 ~@3 [a3,d4,f#4,d5]@27 ~@3 [g#3,c#4,e4,c#5]@3 ~@3 [f#3,b3,d4,b4]@12 [c#4,f4,g#4,b4,f5]@48 [c#4,f#4,a4]@66, ~@149 [f#4,f#5]@16 ~@171]/7", // C#m Bm C#7 F#m E F#m E D …
  P: "[~@6 [a4,c#5,f#5]@45 ~ b4@44, ~@17 [g#4,e5]@15]/2", Q: "~ [g#4,b4,e5]@23",
  R: "[[a#4,c#5,e5,f#5]@46 ~@47 b4@3, ~@23 a4@23 g#4@2, ~@47 [c#5,f#5]@49]/2", // F#7 F#5
  S: "[~@9 g#5@11 e5@22 ~ [g#4,b4,e5]@46 [a#4,c#5,e5,f#5]@46 [a4,c#5,f#5]@46 ~ b4@46 [g#4,b4,e5]@46 [a#4,c#5,e5,f#5]@46 [a4,c#5]@46 ~@12 g#5@6, ~@181 [g#4,e5]@46 ~@93 f#5@58 ~@6, ~@61 [g#4,b4]@3]/8", // E F#7 F#m E F#7 A C#m G#m
  T: "[~@6 e5@22 ~ [g#4,b4,e5]@46 [a#4,c#5,e5,f#5]@46 [c#4,e4,f#4,a4]@139 ~@28]/6", // E F#7 F#m7
})).s("gm_string_ensemble_2").gain(0.27)

// other · trumpet · "tk8"
const trumpet = note("<~@56 A B@2 ~ C@3 ~@20>".pickRestart({
  A: "~@9 e5 ~@2 d5@11 ~", B: "[c#5 ~@2 b4@24 ~@21]/2",
  C: "[~@24 e5@2 ~@4 d5@26 ~@4 c#5@2 ~@4 b4@12 ~ [g#4,c#5]@46 ~@19]/3", // C#5
})).s("gm_trumpet").gain(0.28)

// other · vibraphone · "tk11"
const vibraphone = note("<~@64 A B C D@2 E F G@4 H@3 I@5>".pickRestart({
  A: "~@6 c#5@26 ~@3 c#5@5 ~@2 b4@6", B: "~ a4@3 ~ b4@7 ~ a4@2 ~ g#4@3 f#4@3 e4@11 ~@15",
  C: "g#4@5 ~@2 a4@4 b4@4 ~ b4@14 ~@4 g#4@4 a4@4 ~ b4@5",
  D: "[~ a#4@10 ~@2 a#4@4 ~ b4@10 ~@2 c#5@14 ~@3 c#5@24 ~@3 c#5@3 ~@2 c#5@11 b4@5 ~]/2", E: "~ b4@20 ~@27",
  F: "~@18 g#4@6 ~ a4@5 b4@5 ~ a#4@12",
  G: "[~@5 a#4@6 b4@11 ~ c#5@40 ~@4 c#5@4 ~@3 c#5@10 b4@4 ~@3 b4@14 ~@9 e5@8 ~@2 c#5@5 b4@5 ~@2 c#5@14 ~@15 b4@5 ~ c#5@4 ~ e5@6 c#5@6 b4@3 ~]/4",
  H: "[a#4@6 ~@4 c#5@8 b4@3 a#4@9 ~@8 c#5@18 ~ b4@5 c#5@11 b4@12 e4@15 ~@2 g#4@5 ~ a4@5 ~ b4@5 ~ b4@24]/3",
  I: "[~@4 g#4@6 a4@5 ~ b4@5 ~ a#4@11 f#4@36 ~@22 a5@4 ~@27 a4@6 ~@13 d4@7 ~@18 a3@43 ~@31, ~@80 [b5,e6]@6 b5@15 e5@9 e5@18 a4@14 ~@98, ~@82 c#6@20 ~@4 d5@22 e4@7 e4@13 b3@9 b3@52 ~@31, ~@95 a5@21 b4@26 ~@98, ~@95 e5@2 f#5@13 b4@2 c#5@18 f#4@17 ~@3 c#4@61 ~@29]/5", // E5
})).s("gm_vibraphone").gain(0.33).pan(0.7)

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

// drums · snare
const snare = s("sd").struct("<~@25 A@11 B A@20 C D E C F G ~ H I J ~ K L M ~ N O P Q R H S ~@4>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x ~@3 x", D: "~@6 x ~@3 x ~ x!3 ~", E: "x ~@2 x ~@3 x", F: "~@7 x",
  G: "~@3 x ~@4", H: "~@18 x ~@22 x ~@6", I: "~@16 x ~@22 x ~@8", J: "~@14 x ~@22 x ~@10", K: "~@5 x ~@11 x ~@6",
  L: "~@9 x ~@22 x ~@15", M: "~@4 x ~@2 x ~@22 x ~@17", N: "~@3 x ~@22 x ~@21", O: "~@2 x ~@22 x ~@22",
  P: "x ~@22 x ~@22 x ~", Q: "~@21 x ~@22 x ~@3", R: "~@19 x ~@22 x ~@5", S: "~ x ~",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<~@32 A ~@3 B ~@9 C ~@16 D E ~@2 F ~@3 G ~@3 H ~@7>".pickRestart({
  A: "~@7 x", B: "~@11 x ~@2 x ~", C: "~@2 x ~@8 x ~@4", D: "~@29 x!2 ~@17", E: "x", F: "~@12 x ~@16 x ~@11 x ~@6",
  G: "~@19 x ~@3 x ~ x ~@2 x ~@5 x ~@13", H: "~@9 x ~@6",
})).gain(0.33)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@25 A@2 B C D E F C D E F C D E F C G E F C F C H A B C D E F C I J K C K L M N ~ O P Q R S T U V W X Y Z AA AB AC
  ~@4
>`.pickRestart({
  A: "x ~ x!3 ~ x ~", B: "x!3 ~ x!4", C: "x!8", D: "~ x!4 ~ x!2", E: "x!7 ~", F: "x ~ x ~ x!4", G: "x!5 ~ x!2",
  H: "~@2 x!3 ~ x ~", I: "~ x!7", J: "x!3 ~@2 x!3", K: "x ~ x!6", L: "x!4 ~@3 x", M: "~ x ~@4 x!2", N: "x!5 ~@3",
  O: "~@12 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@4 x ~", P: "~@4 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@8",
  Q: "~@2 x ~@11 x ~@11 x ~@4 x ~@5 x ~@5 x ~@4", R: "~ x ~@4 x ~@5 x ~@5 x ~@5 x ~@10 x ~@5 x ~@6",
  S: "~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@2", T: "~@3 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@10 x ~@4",
  U: "~@7 x ~@10 x ~@5 x ~@5 x ~@5 x ~@4 x ~@6", V: "~@5 x ~@11 x ~@10 x ~@17 x ~",
  W: "~@3 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@3", X: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@10 x ~@11",
  Y: "x ~@10 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~", Z: "~@4 x ~ x ~ x ~ x ~ x ~ x!2 ~@5 x ~ x!2 ~@14 x ~@4 x ~@3",
// … 39 more lines

More by Barbra Streisand