Strudelify

I'll Be There

Jackson 5

KeyF majorTempo94 bpm
0:00/0:00
// I'll Be There — Jackson 5
// 94 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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 · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@3 A@2 ~@7 B@7 C D E F@3 G H I J@2 K ~@8 L M N O P Q R S E F@3 G H I J@2 K L M N O P Q R S L M N O P Q R S L M N O P
  Q R S L M N O P Q R S ~@2
>`.pickRestart({
  A: "[~@5 [f4,bb4]@17 ~@10, ~@4 c4@17 ~@11]/2", // Bb5
  B: "[~@20 f4@2 ~@2 f4@2 c4 ~@3 g4@2 ~@9 g4@3 ~@7 d4@2 ~@7 c4@2 ~@4 e4 ~@7 e4 c4 e4 c4 ~@5 f4 d4 f4@2 ~@5 bb3 d4@2 ~@4 d4 ~@10 d4@2, ~@12 a3@15 ~@10 g4@4 ~@7 d4@3 ~@5 c4@2 ~@6 c4@3 c4@2 c4@3 c4@3 ~@5 d4@3 ~@5 d4@2 ~ d4@2 ~@3 d4@3 ~@2 d4@3 d4@2 ~@2 d4@2 ~@2, ~@14 f4@6 ~@12 e4@6 ~ e4@4 ~@4 f4@3 f4@4 ~ f4@2 ~@2 f4@3 ~ e4@2 ~@3 e4@2 ~ e4@2 ~@6 f4@3 ~@7 bb3@3 ~@5 bb3@3 bb3@2 bb3@3 bb3@3 ~ bb3@2 ~, ~@16 c4@5 ~ c4@4 ~@2 c4@15 ~@2 a3@8 a3@8 ~ a3@8 a3@8 bb3@8 ~ g3@8 c3@8 c3@7 ~@2, ~@18 a4@9 ~@7 c5@8 ~@7 a4@8 a4@4 ~@4 a4@7 ~ a4@5 ~@3 bb4@4 ~@5 g4@4 ~@4 g4@8 g4@4 ~@2]/7",
  C: "[f3,a3] ~ f3 ~ f3 ~ [f3,c4]@2 [f3,a3,c4,f4]@2 [f3,c4]@2 [f3,c4]@2 f3@2", // F F5 F F5
  D: "[f3,a3,c4] ~ f3 ~ [f3,a3,c4,f4]@2 [f3,c4]@2 [f3,c4] ~ [f3,a3,c4,f4]@2 [f3,bb3,c4,f4]@2 [f3,a3,c4,f4]@2", // F F5 F Fsus4 F
  E: "[ab3,c4,eb4,ab4]@4 [ab3,c4,eb4]@3 [db4,eb4,ab4] [ab3,db4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 ~@2 [g3,bb3,eb4,g4]@2, ~@2 ab4 ~@5", // Ab Dbsus2 Absus4 Ab Eb
  F: "[~ [g3,bb3,eb4] [g3,bb3,eb4]@2 [g3,bb3,eb4,g4]@4 [g3,bb3,eb4,g4]@3 eb4 [g3,eb4,g4] ~ [bb3,d4]@3 ~ bb3@2 [bb3,d4,f4,bb4]@3 [f4,bb4] [bb3,eb4,f4,bb4]@2 [bb3,d4,f4,bb4]@2 ~@2 [c4,f4,a4]@3 f4 f4@2 [a3,c4,f4,a4]@3 [c4,f4] [a3,c4,f4,a4]@3 [c4,f4,a4] [a3,c4,f4,a4]@2 ~@2, ~ g4@3 ~@10 f4@6 ~@13 [c4,a4]@3 ~@12, ~@14 bb4@2 ~ d4@3 ~@10 a3@6 ~@12]/3", // Eb Cm Bb Bb5 Bbsus4 Bb F F5 …
  G: "[ab3,c4,eb4,ab4]@4 [c4,ab4]@2 ~ [c4,eb4] [ab3,db4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 ~@2 [g3,bb3,eb4,g4]@2, ~ [ab3,eb4] ~@2, ~@3 [c4,ab4] ~@4", // Ab Fm Cm Absus4 Ab Eb Ab5 Fm
  H: "~ [bb3,eb4,g4] [bb3,eb4,g4]@2 [g3,eb4]@3 [bb3,eb4,g4] [g3,bb3,eb4,g4]@3 [bb3,eb4,g4] [g3,bb3,eb4,g4] ~ [bb3,d4,f4,bb4]@2, ~ g3@3 [bb3,g4]@2 ~@10", // Eb Cm Eb Bb Eb
  I: "~ [bb3,d4,f4] [bb3,d4,f4]@2 [bb3,d4,f4,bb4]@3 [d4,f4,bb4] [bb3,eb4,f4,bb4]@2 [bb3,d4,f4,bb4]@2 ~@2 [a3,c4,f4,a4]@2", // Bb Bbsus4 Bb F
  J: "[~ [c4,f4] [a3,c4,f4]@2 [a3,c4,f4,a4]@3 [c4,f4,a4] [a3,c4,f4,a4]@3 [c4,f4,a4] f4@2 [bb3,c4,f4]@18, ~ a4@3 ~@28]/2", // F5 F Bbsus2
  K: "[c5,f5,bb5]", L: "~@8 f4@2 ~@2 f4@2 c4 ~, a3@15 ~, ~ f4@2 a4@4 ~, ~@4 c4@5 ~ c4@4 ~@2",
  M: "~@2 g4@2 ~@4 g4@2 e4@2 g4@3 ~, c4@7 ~, ~@4 e4@5 ~@7, ~@3 c5@4 ~",
  N: "~@6 d4@2 ~@6 c4 ~, a3!2, ~@2 f4@2 a4@7 c4@2 f4@3, ~@3 d4@2 f4@4 ~ f4@2 a4@4",
  O: "~ e4@2 ~ e4 ~@4 e4@2 ~ e4 c4 e4 c4, a3!2, ~@3 a4@7 ~ a4@5, ~@5 c4@2 c4@2 ~@7, ~@3 e4 ~@4",
  P: "~@5 d4 f4 ~@5 d4 bb3 d4@2, bb3@7 ~ g3@8, ~ f4@2 bb4@4 ~@3 bb3@3 ~@3, ~@2 d4@3 ~@4 d4@2 g4@4 ~",
  Q: "~@4 d4 ~@7 d4 ~ d4@2, c3@4 c3@3 ~, ~ d4@2 g4@7 ~ g4@4 ~, ~@2 bb3@3 bb3@2 bb3@3 bb3@3 bb3@2 ~, ~@6 d4@2 ~ d4@2 ~@5",
  R: "[f3,a3] ~ f3 ~ f3 ~ [f3,c4]@2 [f3,a3,c4,f4]@2 f3@2 f3@2 f3@2", // F F5 F
  S: "[f3,c4] ~ f3 ~ [f3,c4,f4]@2 f3@2 [f3,c4] ~ [f3,a3,c4,f4]@2 [f3,bb3,c4,f4]@2 [f3,a3,c4,f4]@2", // F5 F Fsus4 F
})).s("gm_acoustic_guitar_nylon").gain(0.22).pan(0.2)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@19 A B ~@2 C D E F G H ~@13 I J ~ K L ~@2 C D E F G H ~@5 I J ~ K L ~@3 I J ~ K L ~@3 I J ~ K L ~@3 I J ~ K L ~@2
>`.pickRestart({
  A: "~@2 [a3,f4] ~ c4 ~@9 c4@2", B: "~@2 f4 ~@3 f4@2 a3 ~@7", C: "~@13 a3 ~@2", D: "~@7 a4 ~@7 e4",
  E: "~@13 [g3,bb3] ~@2", F: "~@6 g4 ~@9", G: "~@2 bb4@2 ~@8 eb4 ~@3", H: "~@6 a4 ~", I: "~@2 c4@2 ~@6 c4@3 ~@3",
  J: "~@4 f4 ~@11", K: "~@2 [a3,f4] ~ c4 ~@5 c4@2 c4@2 c4@2", L: "a3 ~ f4 ~ a3@2 [c4,f4]@2 a3 ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.14).pan(0.2)

// bass · fretless bass
const bass = note(`<
  ~@3 A B@3 C@2 D@2 E F@7 G H I@2 J K I@2 L M@2 N O P Q R S T U@2 V W X Y Z AA AB AC AD AE AF K I@2 L M@2 AG AH AI AJ AK
  AL AM AN@2 AO AP AQ AR AS AT AU@2 AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL@2
>`.pickRestart({
  A: "~@5 f2@11", B: "[~@2 d3@4 f3@16 ~ e3@16 d3@8 ~]/3", C: "[bb2@8 a2@16 ~ c3@7]/2",
  D: "[~ g3@8 c3@12 ~ d3@4 f3@6]/2", E: "e3@8 ~ d3@4 c3@3",
  F: "[~ bb2@4 a2@2 g2@4 ~ f2@12 f2@4 e2@12 ~ e2@4 d2@8 c2@6 ~ bb1@2 a1@8 a1 ~ a1@4 a1@2 bb1@7 ~@2 g2@6 g2@2 c2@5 ~ c2@2 c2@3 ~@2 c2 g2 c3@2]/7",
  G: "f2@4 f2@3 ~ f2@4 f2@2 c2@2", H: "f1 g1 a1 c2 d2 f2 g2 f2",
  I: "[ab2@2 ab2@2 ab2@2 ab2@2 ab2@2 c2@4 eb2@4 eb2@2 eb2@2 eb2@2 eb2@2 g1@3 ~ bb1@2]/2",
  J: "~@2 bb1@2 bb1 ~ bb1@2 bb1@2 d2@3 ~ f2@2", K: "f1 ~ g1@2 a1@2 c2@2 d2@2 f2@2 g2@2 f2 ~",
  L: "~@2 bb1@2 bb1@2 bb1 ~ bb1@2 d2@3 ~ f2@2", M: "[f1 ~ g1@2 a1@2 c2@2 d2@2 f2@2 g2@2 f2@13 ~ g2@4]/2",
  N: "f3@6 f3@9 ~, ~@6 e3 ~@9", O: "f2@6 f2 ~ f2 ~ f2@4 f2@2", P: "e2@5 ~ f2 ~ g2@2 f2@2 e2@3 ~",
  Q: "d2@6 d2@2 c2@5 ~ bb1@2", R: "a1@5 ~ a2@4 e2@2 c2@2 a1@2", S: "bb1@5 ~ bb1@2 g2@5 ~ g2@2",
  T: "c2@5 ~ g2@2 c3@3 ~ d3@4", U: "[f3@5 ~ e3@7 ~ d3@4 c3@4 bb2@3 ~ a2@2 g2@3 e2]/2", V: "f2@6 f2@2 f2@2 c2 d2 f2@3 ~",
  W: "e2@6 f2@2 g2@2 f2 ~ e2@3 ~", X: "d2@5 ~ d2 ~ c2@3 ~ c2 b1 bb1 ~", Y: "a1@6 ~@2 a2 g2 e2@2 c2@2 a1@2",
  Z: "bb1@7 ~ g2@5 ~ g2@2", AA: "c2@3 ~ c2@3 g2 c3 ~ c3@4 g2@2", AB: "f2@2 f2@2 f2@2 f2 c2",
  AC: "f1 ~ g1@2 a1 ~ c2@2 d2@2 f2@2 g2@2 f2@2", AD: "ab2!5 c2@2 eb2", AE: "eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 g1@3 ~ bb1@2",
  AF: "bb1@2 bb1@2 bb1 ~ bb1@2 bb1@2 d2@3 ~ f2@2", AG: "f3@6 f3@6 c3@3 ~, ~@6 e3 ~@9",
  AH: "f2@5 ~ f2@2 c2 d2 f2@3 ~ f2@2", AI: "e2@5 ~ f2@2 g2@2 e2@4 e2@2", AJ: "d2@6 d2@2 c2@5 ~ c2 ~",
  AK: "a1@2 a2@4 e2@3 ~ c2@4 a1@2", AL: "bb1@5 ~ f2 gb2 g2 ~ g2@3 ~ g2@2", AM: "c2@4 ~@2 c3 g2 c3@5 ~ d3@2",
  AN: "[f3@5 ~ e3@4 d3@3 ~ c3@4 a2@3 ~ g2@3 ~ f2@2 d2@2 c2@2]/2", AO: "f2@5 ~ f2@2 f2@4 c2 d2 f2@2",
  AP: "e2@5 ~ f2@2 g2@2 f2@2 e2@3 ~", AQ: "d2@5 ~ d2@2 c2@5 ~ bb1@2", AR: "a1@3 a1!2 a1@2 a1",
  AS: "bb1@5 ~ c2@2 g2@5 ~ g2@2", AT: "c2@2 g2@2 c3@3 ~ c3@3 ~ d3@4",
  AU: "[f3@6 e3@3 ~ d3@3 ~ c3@4 a2 g2 a2@2 c3 d3@2 c3 a2 ~ g2 f2 c2@2]/2", AV: "f2@5 ~ f2 ~ f2@2 c2 d2 f2@3 ~",
  AW: "e2@6 f2 ~ g2@2 f2 ~ e2@3 ~", AX: "d2@5 ~ d2@2 c2@2 g2@2 c3@2 bb2@2", AY: "a2@5 ~ g2@2 e2@2 c2@2 b1@2 a1@2",
  AZ: "bb1@5 ~ bb1@2 g2@6 d2@2", BA: "c2@4 c2@3 g2 c3 ~ c3@3 ~ d3@2", BB: "f3@5 ~ e3@4 d3@3 ~ c3@2",
  BC: "~ a2 g2@2 f2@2 d2 c2@2 a1 bb1 ~ c2@2 g1@2", BD: "f1@5 ~ f1 ~ f1@2 c2@2 f2@4", BE: "e2@2 c2 ~ e1@6 e2@4 e2@2",
  BF: "d2@3 d2 c2@3 bb1", BG: "a1@5 ~ a2@2 e2@2 c2@2 a1@3 ~", BH: "c2@8 g2@4 g2@3 ~", BI: "c2@2 g2@2 c3@4 c3@4 c3@3 ~",
  BJ: "g2@2 f3@4 e3@4 d3@4 c3 a2", BK: "f2 ~ f3@4 e3@4 d3@2 c3 a2 g2@2", BL: "[f2@7 ~]/2",
})).s("gm_fretless_bass").gain(0.44)

// chords · harpsichord
const harpsichord = note(`<
  A@7 B@3 C D@2 E F@2 G H@2 I@2 ~@10 I J I K L@2 I@3 J I K L@2 I@2 ~@10 I J I K L@2 I@3 J I K L@2 I@3 J I K L@2 I@3 J I
  K L@2 I@2 M@2
>`.pickRestart({
  A: "[~@3 [c5,f5,a5]@4 [c5,f5,a5]@4 [c5,f5,bb5] [c5,f5,a5]@3 [f2,c5,f5,a5]@4 ~ [bb4,eb5,ab5] ~ [bb4,eb5,g5]@3 ~ bb2@4 c3@2 d3@2 ~@2 [c5,f5,a5]@4 [c5,f5,a5]@4 ~ [c5,f5,bb5] [c5,f5,a5]@3 [c5,f5,a5]@4 [f2,c5,f5,bb5]@16 ~ [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 ~ [e4,g4,c5]@2 c4@2 [e4,g4,c5]@2 c4@2 [e4,g4,c5]@2 [f3,c4]@2 [g3,e4,g4,c5]@2 [e3,c4]@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 ~, ~@3 f2@11 ~@6 eb3@5 ~ [bb4,d5,f5]@10 ~@76, ~@26 db5 ~@3 b2 ~@3 f3@18 ~@18 f3@17 e3@10 ~@6 d3@8 ~]/7", // F Fsus4 F Ebsus4 Eb F Fsus4 F …
  B: "[[f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 [bb2,c4]@2 [e4,a4,c5]@2 c4@2 [e4,a4,c5]@2 c4@2 [e4,a4,c5]@2 [a2,c4]@2 [bb2,e4,a4,c5]@2 ~ [c3,c4]@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 d4@2 ~ [f4,bb4,d5]@2, c3@7 ~ a2@10 ~@7 bb2@8 g3@8 c3@7]/3", // F Bbsus2 Am C Bb
  C: "d4 [g3,f4,bb4,d5] [a3,d4] [bb3,f4,bb4,d5] c4 [f4,a4,c5] c4 [f4,a4,c5], ~@5 f3@3", // Gm7 D5 Bb F
  D: "[c4@2 [f4,a4,c5]@2 c4@2 ~ [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 [a2,c4]@2 [a4,c5]@2 c4@2 ~ [f4,a4,c5]@2 c4@2, e3@8 ~ d3@4 c3@4 bb2@4 ~@2 [g2,f4]@4 ~@5]/2", // F Am F G7
  E: "[f4,a4,c5] c4 [f4,a4,c5] c4 [f4,a4,c5] c4 [e4,g4,c5] c4", // F C
  F: "[[e4,g4,c5]@2 ~ c4@2 [e4,g4,c5]@2 c4@2 [e4,g4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 [f4,a4,c5]@2 c4@2 ~ [e4,a4,c5]@2]/2", // C F Am
  G: "c4 [e4,a4,c5] c4 [e4,a4,c5] c4 [e4,a4,c5] c4 [f4,bb4,d5]", // Am Bb
  H: "[d4@2 [f4,bb4,d5]@3 d4@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 d4@2 [f4,bb4,d5]@2 ~ d4@2 [f4,bb4,d5]@2 d4@2]/2", // Bb
  I: "[f4,a4,c5] c4 [f4,a4,c5] c4 [f4,a4,c5] c4 [f4,a4,c5] c4", // F
  J: "[e4,g4,c5] c4 [e4,g4,c5] c4 [e4,g4,c5] c4 [e4,g4,c5] c4", // C
  K: "[e4,a4,c5] c4 [e4,a4,c5] c4 [e4,a4,c5] c4 [e4,a4,c5] c4", // Am
  L: "[f4,bb4,d5] d4 [f4,bb4,d5] d4 [f4,bb4,d5] d4 [f4,bb4,d5] d4", M: "[[c4,f4,a4,c5]@7 ~]/2",
})).s("gm_harpsichord").gain(0.22).pan(0.3)

// chords · pan flute
const pan_flute = note(`<
  ~@11 A@2 ~@6 B@2 ~@16 B@2 ~@6 B@2 ~@16 C@2 D@2 E@2 F G@2 ~ D@2 E@2 ~ H@2 ~ D@2 E@2 ~ H@2 ~ I@2
>`.pickRestart({
  A: "[~@2 [d3,d4]@4 ~ f4@2 f4@19 ~@4]/2", B: "[~@4 [d3,d4]@2 f4 f4@9]/2", C: "[~@4 [d3,d4]@2 f4 f4@3 ~@6]/2",
  D: "[~@4 a3@2 c4 [a3,c4,e4,g4]@9]/2", E: "[~@4 a3@2 [c4,e4,g4,a4] [c4,e4,g4,a4]@9]/2",
  F: "~@8 [d3,d4]@3 [f3,f4]@2 [bb3,bb4]@3", G: "[[a3,a4] [c3,c4]@3 [g3,bb3,d4]@2 [g3,bb3,d4,f4] [a3,c4,e4,g4]@9]/2",
  H: "[~@4 [g3,bb3,d4]@2 [g3,bb3,d4,f4] [a3,c4,e4,g4]@9]/2", I: "[[a3,c4,e4,g4]@7 ~]/2",
})).s("gm_pan_flute").gain(0.24).pan(0.3)

// chords · pan flute · soft notes
const pan_flute_soft = note("<~@11 A@2 ~@6 B@2 ~@16 B@2 ~@6 B@2 ~@16 C@2 ~@26>".pickRestart({
  A: "[~@7 f3@2 f3@19 ~@4]/2", B: "[~@6 f3 f3@9]/2", C: "[~@6 f3 f3@3 ~@6]/2",
})).s("gm_pan_flute").gain(0.16).pan(0.3)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@3 A@2 ~@5 B C D@7 E F ~@6 G@3 H ~@6 I@2 J K L M N O E P Q ~@5 G@3 H E K L M N O E ~ E K L M N O E ~ E K L M N O E ~
  E K L M R O E ~@3
>`.pickRestart({
  A: "[~@5 [bb4,c5,f5]@17 ~@10]/2", B: "~@5 f5@3", C: "e5@8 ~ d5@4 c5@3",
  D: "[~ bb4@4 a4@2 g4@4 f4@14 ~@3 e5@16 ~ d5@8 c5@8 ~ a4@16 bb4@8 ~ g5@8 c5@16 ~]/7", E: "f5@15 ~",
  F: "a4 bb4 c5@2 f5 a5 bb5 a5", G: "[~@14 a4@4 bb4@2 c5@2 e5@2 f5@2 a5 ~ bb5@2 bb5@17 ~]/3", H: "[bb4,c5,f5]@15 ~",
  I: "[f5@3 e5@4 d5@2 c5@2 bb4@2 a4 g4@2]/2", J: "f4@7 ~", K: "e5@15 ~", L: "d5@7 ~ c5@7 ~", M: "a4@15 ~",
  N: "bb4@7 ~ g5@8", O: "c5@15 ~", P: "a4 bb4 c5 e5 f5 a5 bb5 a5", Q: "c6@9 ~@7", R: "bb4@7 ~ g4@8",
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.9)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@3 A@2 ~@15 B@5 C@6 D E F G H I J ~ D E F G H I J B@5 C@6 D E F G H I J ~ D E F G H I J ~ D E F G H I J ~ D E F G H I
  J ~@3
>`.pickRestart({
  A: "[~@5 [bb3,c4,f4]@17 ~@10, ~@2 f3@9 ~@5]/2", // Bbsus2
  B: "[~@16 [c4,eb4]@4 c4@2 c4@2 [ab3,db4]@2 [ab3,c4]@2 ~@2 g4@4 ~@4 bb3@2 [bb3,eb4,ab4]@2 [bb3,eb4] ~@3 f4@3 ~@5 bb3@2 [bb3,eb4,f4]@2 [bb3,d4]@2 bb3 ~ f4@4 ~@8 c4@2 a3 ~@3, ~@15 ab3@5 ab3@4 ~@6 bb3@8 ~@8 bb3@8 ~@7 a3@8 ~ a3@6 ~@4, ~@16 ab4@11 ~@3 eb4@6 eb4@4 ~@6 d4@6 d4@4 ~@6 c4@6 c4@6 ~@6, ~@34 g4@6 ~@10 f4@6 ~@6 c5@15 ~@3, ~@66 f4@6 f4@5 ~@3]/5", // Cm Db5 Ab Ebsus4 Eb5 Bbsus4 Bb
  C: "[eb4@4 ~@4 ab3@2 [ab3,c4]@2 ~@2 g4@3 ~@3 eb4@2 bb3 ~ [bb3,eb4,ab4]@2 [bb3,eb4]@2 ~@2 f4@3 ~@3 d4@2 bb3@2 eb4@2 [d4,f4]@2 ~@2 c5@4 ~@10 c4@2 [f3,bb3]@17 ~ [bb3,c4,f4]@15 ~, ab3@8 ~@6 bb3@8 ~@8 bb3@8 ~@2 bb3@4 ~ a3@10 ~ a3@6 ~@17 f3@16 ~, c4@3 c4@2 ~@4 g4@3 ~@5 f4@3 ~@3 f4@3 f4@3 f4@2 ~@17, ~@2 eb4@2 ~@3 eb4@3 ~@5 d4@3 ~@5 c4@4 c4@3 ~@18, ~@50 c5@11 ~@35]/6", // Ab Ebsus4 Eb5 Dm Bb5 Bbsus2
  D: "[ab4,db5]@3 a4@2 ~ c4@2, ~@5 f4@2 ~", E: "d3@2 g3@4 e3@2 [g3,c4]@7 ~", F: "~ db4@2 d4 c4@2 c4 ~",
  G: "ab3@2 a3@4 ~@4 c4 [c4,d4] a3@2 e3@2, ~@2 c4@7 ~@7, ~@3 a4@3 ~@2", // Csus2
  H: "bb3@2 f4 g4 f4@2 d4@2 f4 g4@3 bb4@4, ~ bb4@2 ~ bb4@2 ~@2",
  I: "[f4,bb4]@5 ~ [f4,bb4]@2 ~ c5 f4 ~ [f4,bb4] ~ d4 ~, ~@8 [f4,bb4]@2 ~@3 g4@2 ~", J: "f3@9 ~@7",
})).s("gm_electric_guitar_jazz").gain(0.18).pan(0.8)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@21 A B ~@2 C D E F@2 ~@2 G H I J K ~@3 G H I J K ~@2 A B ~@2 C D E F@2 ~@2 G H I J K ~@3 G H I J K ~@3 G H I J K ~@3
  G H I J K ~@4
>`.pickRestart({
  A: "~@2 eb4@2 eb4 ~@3", B: "~@10 g4 ~@5", C: "~@8 eb4@2 eb4@2 ab3 ~@3", D: "~@5 g4 ~@2", E: "~@3 d4 f4 ~@3",
  F: "[~@14 c4@17 ~]/2", G: "~ c4@3 ~@4", H: "~@4 f4@2 f4 ~, ~@4 a4@3 ~", I: "~@4 e4@7 ~@5",
  J: "~@12 g4@3 ~, ~@12 f4 ~@3", K: "~@10 bb4 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.8)

// other · vibraphone
const vibraphone = note(`<
  ~@3 A@4 B@2 C@2 ~ D@7 E F G@4 H@5 I@2 J K L M N O ~ E P Q R S T U@2 G@4 H@5 I E P V W X Y Z ~ E P V W S Y Z ~ E P V W
  X Y Z ~ E P V W S Y Z ~@3
>`.pickRestart({
  A: "[~@5 f5@16 ~ f5@16 ~ c5@16 d5@8 ~]/4", B: "[f5@7 ~ a4@16 ~ d5@7]/2", C: "[~ bb4@8 d5@14 ~@9]/2",
  D: "[~@12 f5@15 ~ e5@16 ~ d5@8 c5@8 ~ a4@16 bb4@16 ~ c5@8 g5@8 ~]/7", E: "f5@15 ~",
  F: "a4@2 bb4 ~ c5@4 f5@2 a5 ~ bb5@2 a5 ~",
  G: "[c5@2 c5@2 db5 c5@2 bb4@3 eb5@2 eb5 eb5@2 d5@3 [d5,f5]@2 [eb5,f5] [d5,f5]@2 c5@2 c5 c5@6, ~@46 f5@17 ~]/4", // Dm Ebsus2 Dm
  H: "[c5@2 c5@2 db5 c5@2 bb4@3 eb5@2 eb5 eb5@2 d5@3 [d5,f5]@2 [eb5,f5] [d5,f5]@2 [c5,f5]@8 [c5,f5]@9]/5", I: "[c5,f5]",
  J: "[c5,e5]@15 ~", K: "[f4,a4,d5]@8 [a4,d5,f5]@7 ~", L: "[a4,c5,e5]@15 ~", M: "d5@2 f5@5 f5",
  N: "~@3 f5 f5@2 f5 d5, f5@3 ~@5, ~ bb5@3", O: "c5@9 ~@7", P: "e5@15 ~", Q: "d5@8 c5@7 ~", R: "a5@7 ~", S: "bb4@15 ~",
  T: "c5@15 ~", U: "[f5@9 ~@7]/2", V: "d5@7 ~ c5@8", W: "a4@15 ~", X: "bb4@7 ~ g5@7 ~", Y: "c5", Z: "f5@13 ~@3",
})).s("gm_vibraphone").gain(0.3).pan(0.7)

// chords · pan flute
const pan_flute_2 = note(`<
  ~@12 A@6 ~@3 B@4 C@5 D E F ~@6 G H I J K L ~@2 B@4 M@5 D N F ~@8 O@2 ~@6 O@2 ~@4 P Q R S ~@6
>`.pickRestart({
  A: "[~@12 [a3,c4,f4]@16 [c4,e4,g4]@17 [a3,d4,f4]@8 [c4,f4,a4]@8 ~ [a3,c4,e4]@16 [bb3,d4]@17 ~]/6", // F C Dm F Am Bb
  B: "[c5@12 db5@2 bb4@15 ~ bb4@16 a4@17 ~]/4", C: "[c5@12 db5@2 bb4@16 bb4@15 ~ a4@19 ~ f4@14, ~@23 [c5,f5]@17]/5",
  D: "~@2 a4@2 f4@2 f4@3 ~@4 a4@2 d5", E: "~@3 g4 f4@6 ~@6, a4", F: "g4", G: "[a3,c4,f4]", H: "[c4,e4,g4,a4]",
  I: "d4 c4, [f4,a4]", J: "[a3,c4,e4,g4]", K: "[bb3,d4,f4,bb4]", L: "[bb3,d4,f4]",
  M: "[c5@12 db5@2 bb4@16 bb4@15 ~ [c5,f5]@18 ~@2 f4@14, ~@23 a4@13 ~@4]/5", N: "~@3 g4@2 f4@8 ~@3, a4",
  O: "[~@7 a3@9]/2", P: "~@4 a4@3 ~ a4@4 bb4@3 ~", Q: "c5@2 d5 c5@2 g4@3", R: "~@4 f4@3 ~ f4@3 ~ g4@4",
  S: "a4 ~ bb4@4 a4@4 e4@5 ~",
})).s("gm_pan_flute").gain(0.24).pan(0.3)

// chords · piano
const piano = note("<~@21 A@4 B@5 C ~@16 A@4 B@5 C ~@34>".pickRestart({
  A: "[[ab3,c4,eb4]@4 [ab3,c4,eb4]@4 db4@2 c4@4 [bb3,eb4,g4]@6 [bb3,eb4,g4]@4 ab4@2 g4@4 [bb3,d4,f4]@6 [bb3,d4,f4]@4 eb4@2 d4@3 ~ [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2, ~@8 [ab3,eb4]@6 ~@10 [bb3,eb4]@6 ~@10 [bb3,f4]@5 ~@19]/4", // Ab Eb Bb F Ab5 Eb5 Bb5
  B: "[[ab3,c4,eb4]@4 [ab3,c4,eb4]@4 db4@2 c4@4 [bb3,eb4,g4]@6 [bb3,eb4,g4]@4 ab4@2 g4@4 [bb3,d4,f4]@6 [bb3,d4,f4]@4 eb4@2 d4@3 ~ [a3,c4,f4]@15 ~ [bb3,c4,f4]@17 ~, ~@8 [ab3,eb4]@6 ~@10 [bb3,eb4]@6 ~@10 [bb3,f4]@5 ~@35]/5", // Ab Eb Bb F Bbsus2 Ab5 Eb5 Bb5
  C: "[bb3,c4,f4]@15 ~", // Bbsus2
})).s("gm_piano").gain(0.35).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B ~@7 C D E F G H I J K L@2 M@3 L M@3 L N L O@6 P Q O@3 R P S L@2 M@3 Q M T M N@2 L O@3 U O@3 V O@3 U O S O L O@3
  U O W O X O@3 U O@3 Y Z ~
>`.pickRestart({
  A: "~@5 x ~ x", B: "x!2 ~@6", C: "~@5 x ~@2", D: "x ~ x ~@6 x ~@3 x ~@2", E: "~ x ~@3 x ~@3 x ~@2 x ~@3",
  F: "~ x!2 ~@3 x ~", G: "~@3 x ~ x ~@7 x ~@2", H: "~@3 x ~ x ~@8 x ~", I: "~@2 x!3 ~ x!2", J: "~@5 x ~ x ~@5 x ~ x",
  K: "~@5 x ~ x ~@8", L: "x!8", M: "x!2 ~@3 x ~ x", N: "~ x!7", O: "x ~@2 x!2 ~@3", P: "x ~@2 x!2 ~@2 x",
  Q: "~ x ~ x!5", R: "x ~@2 x!5", S: "x ~@2 x!2 ~ x ~", T: "~ x ~@3 x ~ x", U: "x ~@2 x!3 ~ x", V: "x ~ x!6",
  W: "x ~@2 x!3 ~@2", X: "x ~ x ~ x!4", Y: "x ~ x ~@2 x ~@2", Z: "x",
})).gain(0.49)

// drums · rim
const rim = s("rim").struct("<~@13 A B@2 C D E@2 ~@11 F@7 G ~@18 E@7 ~ E@7 ~ E@7 ~ E@7 H ~@2>".pickRestart({
  A: "~ x", B: "~@9 x ~@6", C: "~@5 x ~@2", D: "~@11 x ~@4", E: "~@3 x", F: "~ x ~ x", G: "~ x ~@2", H: "~@3 x ~@4",
})).gain(0.44)

// drums · snare
// … 68 more lines

More by Jackson 5