Strudelify

Let the Healing Begin

Joe Cocker

KeyA minorTempo116 bpm
0:00/0:00
// Let the Healing Begin — Joe Cocker
// 116 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C@2 A D A E C F A@2 G C H E I J K L M N O J P A B C@2 A E C F A@2 G C H E I J K L M N O J P A B C@2 A D Q R Q S
  Q R Q S J K T M N O J P A B C@2 A B A E C F A@2 G C H E I J K L M N O J P A M N O J P@2 A B C@2 A D A B C@2 A D A B
  C@2 A D A B C@2 A D A B U@5
>`.pickRestart({
  A: "a1@5 ~ a1 ~ a1@6 ~@2", B: "a1@4 ~@2 a1 ~ a1@4 g1@4", C: "f1@5 ~ f1 ~ f1@6 ~@2", D: "a1@4 ~@2 a1 ~ a1@5 ~@3",
  E: "a1@4 ~@2 a1 ~ a1@7 ~", F: "f1@5 ~ f1 ~ f1@7 ~", G: "a1@5 ~ a1 ~ a1@4 g1@4", H: "f1@4 ~@2 f1 ~ f1@4 g1@4",
  I: "a1@5 ~ a1 ~ a1@4 c2@2 d2@2", J: "f2@4 ~@2 f2 ~ f2@6 d2@2", K: "g2@4 ~@2 g2 ~ g2@4 g2@4", L: "f2@4 ~@2 f2 ~ f2@8",
  M: "e2@4 ~@2 e2 ~ e2@8", N: "d2@4 ~@2 d2 ~ d2@6 a1@2", O: "d2@4 ~@2 d2 ~ d2@8", P: "g2@5 ~ g1 ~ g1@8",
  Q: "c2@5 ~ c2 ~ c2@6 ~@2", R: "g1@4 ~@2 g1 ~ g1@5 ~ g1@2", S: "c2@4 ~@2 c2 ~ c2@5 ~ g1@2", T: "a2@4 ~@2 a2 ~ a2@8",
  U: "[f1@77 ~@3]/5",
})).s("gm_fretless_bass").gain(0.38)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A@2 B@2 C D E@2 ~@9 F G F H I@2 J K L@4 M@4 ~@7 F G F N O@2 P Q R@4 S@2 T U V W X Y Z@2 AA Q F H AB@2 AC Q AD@4 AE@2
  AF@2 AG@4 ~ AH@2 AI@2 F G F H AJ AK AL AM AN AO AP@2 AQ AR@2 AS@2 AT@4 AU@2 AV@2 AW@2 C AX AY@2 AZ@2 C AX BA@2 BB@2 C
  AX BC@5
>`.pickRestart({
  A: "[a3@3 b3@3 c4@4 b3 a3 g3@2 e3@2]/2", B: "f3/2", C: "a3 b3", D: "c4@4 b3@2 a3 g3", E: "[e3@27 ~@5]/2",
  F: "[a3,c4,e4]", G: "g3 g4, [b3,d4]", H: "[g3,b3,d4]",
  I: "[b3 c4 b3 c4 b3 c4 b3 c4 b3 c4 b3 c4 b3 c4 b3 c4, [f3,a3]]/2", J: "[a3,c4]", K: "[b3,d4]",
  L: "[a3@3 b3@3 c4@4 b3 a3 g3@2 e3@2 f3@16, e5]/4", M: "e4/4", N: "d5@2 g5 f5, [b3,d4]",
  O: "[b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5, [f3,a3,e5]]/2", P: "[a3,c4,a4]", Q: "[b3,d4,g4]",
  R: "[a3@3 b3@3 c4@4 b3 a3 g3@2 e3@2 ~@4 g4@4 e4@4 d4@4, a4@5 ~@3, ~ f3]/4", S: "[b3@9 c4 b3 a3 g3@2 e3@2, e4]/2",
  T: "e3@3 f3 g3 a3 a#3@2, c4", U: "g3@2 a3 a#3@2 a3 g3 f3", V: "e3@7 g3", W: "e4@2 f4 g4@2 f4 e4@2", X: "c4", Y: "a#3",
  Z: "[c4@5 e3 f3 g3@2 c4 d4 e4@2 f4 g4@2]/2", AA: "[a3,c4,e4,a4]",
  AB: "[b3 c4 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5, [f3,a3]]/2", AC: "[c4,e4,a4]",
  AD: "[~ e5!15 e5!16 e5!16 e5!4 b4@2 c5@2 b4@2 c5@2 b4@2 c5@2, a3, c4@18 b3 c4 b3 c4 b3 c4@3 ~@6]/4",
  AE: "[e5@3 [a4,d5]@3 [e4,g4]@2, b4@3 ~, c5 ~@31]/2", AF: "[[a3,e4]@27 ~@5]/2", AG: "[[b4,c5,a5]@63 ~]/4",
  AH: "[~@3 e4 d4@2 c4 a3@3 g3 f3 e3 f3 g3 c4]/2", AI: "[c4@31 ~]/2", AJ: "b3 c4 b3 c4 b3 c4 b3 c4, [f3,a3]",
  AK: "e4 f4 e4 f4 b4 c5 b4 c5, [a3,c4]", AL: "[c4,a4]", AM: "[b3,g4]", AN: "e5@3 d5@3 c5@2, [e4,a4]",
  AO: "b4@3 d5@3 g5@2, [d4,g4]", AP: "[b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5, [d4,f4]]/2", AQ: "[f4,a4]",
  AR: "[~ g5, [g4,b4]]/2", AS: "[a4,a5]/2", AT: "[e5@2 ~@3 c5 b4 a4, a4 e4, ~@2 d5@3 ~@3]/4",
  AU: "[a3@4 b3@4 c4@2 b3 a3 g3@2 e3@2, e5]/2", AV: "[f3,e5]/2", AW: "[e4,a4]/2", AX: "c4@2 b3 a3 g3@2 e3@2",
  AY: "[b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5 b4 c5, [f3,e4]]/2", AZ: "[a4 g4@3, e4 ~@31]/2", BA: "[f3,a3]/2",
  BB: "[a3,c4]/2", // Am
  BC: "[~@3 b3@2 c4@2 ~@2 c4@2 ~@2 c4@2 e4@2 ~@2 e4@2 ~ f4@2 b4@2 c5@2 b4@2 c5@2 ~ e5@2 f5@2 ~ e5@3 f5@3 b5@4 c6@3 b5@5 c6@21 ~@3, [f3,a3]@77 ~@3, ~@8 b3@2 ~@2 b3@2 ~@4 f4@2 ~@4 f4@53 ~@3]/5", // F
})).s("gm_string_ensemble_1").gain(0.29).pan(0.4)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F@2 G H@2 I@2 ~@8 A@2 B@2 D@2 E@2 F@2 J H@2 I@2 ~@8 A@2 B@2 C@2 ~@16 A@2 B@2 A@2 D@2 E@2 F@2 G
  H@2 I@2 ~@8 K@2 ~@5 A@2 B@2 C@2 A@2 B@2 C@2 A@2 B@2 C@2 A@2 B@2 C@2 L@2 M ~@4
>`.pickRestart({
  A: "[[e3,a3,c4]@11 ~ [e3,a3,c4]@4]/2", B: "[[f3,a3,c4,e4]@27 ~@5]/2", C: "[[e3,a3,c4]@29 ~@3]/2",
  D: "[[e3,a3]@31 ~]/2", E: "[[f3,a3,c4]@23 ~ [f3,a3,c4]@7 ~]/2", F: "[e3,a3,b3]/2", G: "[e3,a3]@7 ~",
  H: "[[f3,a3,c4]@11 ~ [f3,a3,d4]@4]/2", I: "[[e3,a3,b3]@15 ~]/2", J: "[e3,a3] [a3,c4,e4]", K: "[[e3,a3,c4]@11 ~@5]/2",
  L: "[[e3,a3,c4]@15 ~]/2", M: "[f3,a3,c4,e4]",
})).s("gm_epiano2").gain(0.29).pan(0.8)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~ A@7 ~@18 B@6 ~@7 C@2 ~@8 D@4 ~@2 E F G@2 H I J@2 ~@2 K L M@2 N O P@4 Q@2 ~@7 R@2 S ~@7 T U V@2 W@2 E X@2 Y@4 Z@2 AA
  ~@11 AB@8 ~@5
>`.pickRestart({
  A: "[[e5,a5]@50 g5@9 ~ d#6 ~ a6@30 g6@2 [a5,e6]@7 ~@11, ~@60 e6@32 f#6 ~@19]/7", B: "[a5@52 e5@29 ~@15]/6",
  C: "[g5@24 d5@2 c5 ~ d5@4]/2", D: "[a5@50 g5@13 ~, e5@53 ~@11]/4", E: "[c6,e6]", F: "[a#5,f6]",
  G: "[e6@16 ~@2 e6@2 f6@2 g6@2 e6@2 d6@2 c6@3 ~, c6@5 ~@3, ~@18 d#6 ~@5 d#6 ~@7]/2", H: "[g5,c6]", I: "[f5,a#5]",
  J: "[g5,c6]/2", K: "~ c7@3, ~@4 b6 ~@11", L: "b6@2 g6 ~@5 [e6,g6]@3 ~ [e6,g6]@4", M: "[f6@31 ~, d6@23 ~@9]/2",
  N: "[a5,c6]", O: "[g5,b5]@15 g6", P: "[[e6,a6]@30 d6 c6, ~@15 a6, ~@60 e6 ~@3]/4", Q: "[e6@15 ~]/2",
  R: "[a5@24 d5@2 c5 ~ d5@2 c5 ~]/2", S: "e5 a4@7, d#5 ~@15", T: "e6", U: "d6", V: "[a6 g6, e6]/2", W: "[~ c6@3, e6]/2",
  X: "[b5,d6]/2", Y: "[c7@15 e6@43 c6 ~ d6 e6 d6 c6, a6@59 ~ a6@2 ~@2]/4",
  Z: "[d6@2 c6@8 d6@2 c6 ~ [e6,a6]@18, a6@13 ~ d#6 ~@17]/2", AA: "a6",
  AB: "[~@4 g#6 a6@21 a6@3 ~ a6@8 a6@4 ~@10 g6@2 ~@2 d6@2 c6@2 d#6 e6@17 g6@10 a6@2 ~@2 g6@4 ~@32, ~@4 c7@25 ~ c7@16 a6@13 ~ a6@18 c7@50, ~@38 g#6 ~@3 e6@7 ~ e6@6 ~@34 e6@38]/8",
})).s("gm_rock_organ").gain(0.19).pan(0)

// chords · electric guitar jazz · "+HAWAIIGT"
const electric_guitar_jazz = note(`<
  ~ A@2 B@2 C@2 ~@4 D E ~@3 F G H I J K L@2 M@2 N@2 O P@2 ~@3 Q R ~@3 S@2 H I J K T@4 U@2 V W X@2 ~@2 Y Z AA@2 AB AC ~@4
  L@2 M@2 A@2 AD AE AF E ~@4 AG@3 ~@4 H I J K L@2 M@2 ~@7 AH@4 AI@6 AJ@2 AK@3 AL AM AN AO@2 AP AQ AR AS AT@2 AU ~@4
>`.pickRestart({
  A: "[~@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@6 [a3,e4]@11 ~]/2", B: "[~@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@10 d4@2 c4@6]/2",
  C: "[a3@4 ~@10 d4 ~ d4@4 ~@12, ~@14 a4@13 ~@5]/2", D: "~@8 c5 a4@5 g4 a4", E: "d4@3 ~@5",
  F: "~@4 c4 ~ d4 ~ c4 ~ d4 ~ d4@4", G: "c4@13 ~@3", H: "~@3 c5@5, ~ e4@7, ~ a4@3",
  I: "~@3 b4@4 ~, ~ d4@6 ~, ~@2 g4@5 ~", J: "~@3 a4@5, ~ c4@7, ~ e4@3", K: "~ d4 a4@5 ~",
  L: "[~@6 g4@4 f4@3 ~ d4@4 c4@2 a3@2 g3@2 ~@2 c3@3 ~@3, ~@7 f4@6 ~@3]/2",
  M: "[~@6 c4@15 ~ d4@9 ~, ~@2 g3@13 ~@17, ~@2 a3@7 ~@7]/2", N: "[~@3 a4@7 ~@6]/2", O: "~ e4 a4@2 g4 e4 c4 d4",
  P: "[d4 c4 a3@2 d3 e3 g3@3 ~@7]/2", Q: "~@4 c5 a4@3 g4@8", R: "~ a4 d4@14", S: "[~@4 a#5@15 ~ g5@2 a5@2 a5@8]/2",
  T: "[~@2 a4@2 ~@2 a4@4 ~@2 g4@6 [d4,g4]@2 [c4,f4]@2 [a3,d4]@12 ~@4 e4@15 ~ g4@9 ~, ~@4 d5@6 c5@6 ~@18 g3@13 ~@17, ~@18 a3@7 ~@7]/4", // G5 F5 D5
  U: "[~@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@6 [a3,e4]@3 ~ d4@2 c4@2 a3@2 g3 ~]/2", // A5 G5 A5
  V: "~@4 g4 a4 c5 ~ d#5@2 d5@2 c5 ~ d5@2", W: "d5 c5 a4 ~@5",
  X: "[a3@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@6 a3@2 a3 ~ c4@2 d4 ~ d4@2 ~@2, ~@20 e4@11 ~]/2", // A5 G5
  Y: "c4 ~ g3 ~ [g3,c4] ~ [g3,c4] ~ g3 ~ [g3,c4] ~ g3 ~ g3 ~", // C5
  Z: "[g3,c4] ~ [c4,e4]@2 [d4,f4]@2 [c4,e4]@4 [a3,d4]@2 [g3,c4]@4", // C5 C Dm C D5 C5
  AA: "[~@4 [g3,c4]@4 ~@2 [g3,c4]@2 ~@2 a#3@7 ~ [a#3,d4] ~@3 [a#3,f4]@3 ~ a#3@2]/2", AB: "~@2 [g3,c4] ~@5",
  AC: "~@2 [g3,c4]@2 [a3,d4]@2 [g3,c4]@3 ~ e4@4 c4@2, ~@5 g3@3", AD: "~@4 c4 ~ d4@2 d4 ~ d4 ~@3 d4 ~",
  AE: "c4 ~ c4 ~ d4 ~ d4@2 c4@4 a3@4", AF: "~@6 c5 a4 ~@5 d#4@3", AG: "[~@20 a4@19 ~@9, ~ d5@3 ~@2]/3",
  AH: "[~@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@6 g3@4 ~@2 f3 ~ c4@2 a3@6 e4@2 g4@2 g4@2 a4@2 d4@6 e4@2 d4@3 ~ d4@2 c4@2 a3@4, ~@25 e3@2 ~@37]/4", // A5 G5
  AI: "[a3@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@10 e5@4 a4 g4 a4@5 ~ [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@6 g3@4 ~@2 f3 ~ c4@2 a3@6 e4@2 g4@2 a4@2 d5@2 c5@6 e5@3 e5@2 ~ e5@2 d5@2 c5@4, ~@57 e3@2 ~@37]/6", // A5 G5 A5 G5
  AJ: "[a4@2 ~@3 c5@2 ~ c5@2 ~ c5@2 g5@2 a4, ~@8 g5@4 ~@2 g5@5 ~ g5@5 ~@7]/2",
  AK: "[a4@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@6 g3@4 ~@2 f3 ~ c4@2 a3@4 e4@2 g4!4 e4@2 g4!4 e4@2, ~@25 e3@2 ~@21]/3", // A5 G5
  AL: "g4!2 e4@2 g4!2 e4@2 a4@4 c5 a4@3", AM: "a4@4 c5@2 d5 ~ e5@2 c5@2 d5@2 d5@2",
  AN: "~@4 a4 g4 d4 c4 d4!2 c4 d4 c4@2 a3@2, c5@3 ~@5",
  AO: "[~@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@6 ~@2 d4@4 c4@2 a3@4]/2", AP: "~ a4 d5 ~ c5 e4 a4 d4, ~@3 g4@2 ~@3",
  AQ: "g4@2 c4@2 b3@2 c4@2 b3@3 c4@2 b3@2 ~", AR: "b3@5 a3@2 e3", AS: "d3 e3 a2@4 ~@2",
  AT: "[~@4 [e4,a4] ~@7 [e4,a4]@2 [d4,g4]@10 d#4@2 d4@2 c4@2 d4@2]/2", AU: "e4@3 ~",
})).s("gm_electric_guitar_jazz").gain(0.41).pan(0.9)

// chords · electric guitar jazz · "+HAWAIIGT" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@5 A B ~@5 C ~@9 D@2 ~ E ~@22 E ~ F@2 G ~ H@2 ~ I ~ J@2 K L ~@4 D@2 ~ E ~@2 M ~ N O ~@5 P@2 ~@8 D@2 ~ E ~@17 Q R ~@19
>`.pickRestart({
  A: "~@4 c4@10 ~ c4", B: "~@2 c4@3 ~@3", C: "~@6 c4@7 ~@3", D: "[~@3 a4@2 ~ d4 ~@5 d3 ~@3, ~@10 a4@11 ~@11]/2",
  E: "~ a3 ~@2", F: "[~@15 a3@7 ~@10]/2", G: "~@6 g4@2 a4@7 ~", H: "[~@7 c4@2 ~@7]/2", I: "~@2 c4 ~@9 c4 ~@3",
  J: "[g3 ~@13 f3@6 f3 ~@9 f3@2]/2", K: "~@2 g3 ~@5 g3 ~@7", L: "g3 ~@15", M: "~@12 c4 ~@3", N: "~@8 g4@5 ~@3",
  O: "~@3 c4 a3@3 ~", P: "[~@4 e4@19 ~@9]/2", Q: "~@3 a4", R: "~ a4@2 ~ a4@2 c5@2",
})).s("gm_electric_guitar_jazz").gain(0.24).pan(0.9)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@7 A B C D ~@2 E F G ~@14 A H I D ~@2 E F G ~@24 J K L M ~@10 N O C P ~@2 E F G ~@48
>`.pickRestart({
  A: "~@2 a3 ~@3 a3 ~ a3 ~ a3 ~@3 a3 ~", B: "~@2 a3 ~ b3 ~ a3 ~ e4 ~@3 b3 ~ a3 ~",
  C: "~@2 a3 ~ c4 ~ a3 ~ c4 ~ d4 ~ a3 ~ g3 ~", D: "~@2 a3 ~@3 a3 ~@3 c4 ~ d4 ~@3", E: "~@4 a3 ~@3 g3 ~ a3 ~@3 a3 ~",
  F: "~@2 a3 ~ c4 ~ a3 ~ c4 ~ d4 ~@3 a3 ~", G: "~@2 g3 ~ a3 ~ g3 ~ a3 ~ c4 ~ a3 ~ g3 ~",
  H: "~@2 a3 ~ b3 ~ a3 ~ e4 ~ a3 ~ b3 ~ a3 ~", I: "~@2 a3 ~ b3 ~ a3 ~ c4 ~ d4 ~ a3 ~ g3 ~",
  J: "f3 ~@3 c4 ~@3 f3 ~ a3 ~@3 f3 ~", K: "b3 ~ b3 ~ d3 ~ d3 ~@3 d3 ~ g3 ~ b3 ~",
  L: "f3 ~ f3 ~ a3 ~@3 e3 ~ g3 ~ e3 ~ e3 ~", M: "a3 ~ a3 ~ e3 ~ g3 ~ g3 ~ e3 ~ d3 ~ e3 ~", N: "~@14 a3 ~",
  O: "~@2 a3 ~@3 a3 ~ a3 ~ a3 ~@5", P: "~@2 a3 ~ c4 ~ d4 ~@3 c4 ~ d4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.29).pan(0.7)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_3 = note("<~@27 A B C@2 ~@23 D E@2 ~@15 F@2 ~@60>".pickRestart({
  A: "~@4 g4 e4 d4 c4", B: "a3@7 ~@9", C: "[~@5 c4 d4@8 ~@2]/2", D: "~@7 e4",
  E: "[c5@11 ~@5 [f4,a#4]@15 ~, ~@15 d4@15 ~@2]/2", F: "[~@4 c4@2 d4 ~ d4@2 d4@2 c4@2 a3@8 ~@10]/2",
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.1)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C D@7 E@5 F G F H I ~ F J A@2 K D@7 E@5 F G F H I ~ F J A@2 B@2 C L@4 ~@5 F G M H I ~ F J A@2 B@2 C D@7 E@5
  F G F H I ~ F J M H I ~ F J ~ A@2 B@2 C ~ A@2 B@2 C ~ A@2 B@2 C ~ A@2 B@2 C ~ A@2 B@2 ~@3
>`.pickRestart({
  A: "[[e3,a3,c4,e4]@21 ~@11]/2", B: "[[f3,a3,c4,e4]@19 ~@13]/2", C: "[e3,a3,c4,e4]",
  D: "[~@16 [c4,e4]@29 ~@3 [c4,e4]@29 ~@3 [c4,e4]@29 ~@2 [e3,a3], ~@14 a2@29 ~@3 c3@29 ~@3 a2@29 ~@3 a2@2, ~@15 [e3,a3]@29 ~@3 [f3,a3]@29 ~@3 [e3,a3]@29 ~@4]/7", // C A5 F A5
  E: "[[c4,e4]@14 ~@2 [c4,e4]@29 ~@3 [c4,e4]@29 ~@3, ~@14 c3@29 ~@3 a2@29 ~@5, ~@15 [f3,a3]@29 ~@3 [e3,a3]@29 ~@4]/5", // C F A5
  F: "[f3,a3,c4,e4]@15 ~", G: "[f3,g3,b3,d4]@15 ~", H: "[e3,g3,b3,d4]@15 ~", I: "[d3,f3,a3,c4]@15 ~",
  J: "[g3,b3,d4,g4]@15 ~", K: "[f3,a3,c4,e4]",
  L: "[~@16 [c4,e4]@14 ~@2 [d4,f4]@14 ~@2 [c4,e4]@15 ~, ~@14 g2@15 ~ g2@15 ~ g2@15 ~@3, ~@15 [c3,g3]@15 ~ [d3,a#3]@15 ~ [c3,g3]@15 ~@2]/4", // C Dm C C5 Gm C5
  M: "[e3,a3,c4,e4]@15 ~", // Am
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.4)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D A B ~@11 C E C F C G C E A B C D ~@11 C E C F C G C E A B C D A B H I H J H I H J C E A F C G C E A B C D A
  B ~@11 C E C F C G C E A F C G C E K A B C D A B A B C D A B A B C D A B A B C D A B A B ~@5
>`.pickRestart({
  A: "~@2 [e3,a3,c4,e4]!6", B: "[e3,a3,c4,e4]!2 [a3,c4,e4]!2 [c4,e4]!2 [e3,a3,c4,e4]!2, ~ e3 [e3,a3] ~",
  C: "~@2 [f3,a3,c4,e4]!6", D: "[f3,a3,c4,e4]!2 [a3,c4,e4]!2 [c4,e4]!2 [f3,a3,c4,e4]!2, ~ f3 [f3,a3] ~",
  E: "~@2 [g3,b3,d4,g4]!6", F: "~@2 [e3,g3,b3,d4]!6", G: "[f3,a3,c4,e4]!8", H: "~@2 [e3,g3,c4,e4]!6",
  I: "~@2 [a#3,d4,f4]!2 [d4,f4]!2 [g3,a#3,d4,f4]!2, ~ g3 [g3,a#3] ~", // A# Dm Gm7 Gm
  J: "[e3,g3,c4,e4]!2 [g3,c4,e4]!2 [c4,e4]!2 [e3,g3,c4,e4]!2, ~ e3 [e3,g3] ~", // C Em
  K: "[g3,b3,d4,g4]!2 [b3,d4,g4]!2 [d4,g4]!2 [g3,b3,d4,g4]!2, ~ g3 [g3,b3] ~", // G G5 G
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A B@28 C B@46 D B@25 E B@17 E B@5 E B@2 F ~@4>".pickRestart({
  A: "~@7 x", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@3 x", D: "x ~@6 x", E: "x ~@2 x!2 ~@2 x", F: "x",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct("<A B@28 C B@24 D B@21 C B@25 C B@17 D B@5 C B D ~@5>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~ x ~ x", C: "~@4 x ~@6 x!2 ~@3", D: "~ x ~@2",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@2 C B C A B@15 C B D A B@2 E A B@9 C B@5 C B D A B@2 C B F A B@2 C A B G E A B@2 C B@3 C B C B@3 F A B@9 C B@3 C
  B@2 C H A B@2 H A B F A B@2 C B C B@3 C B H A B@2 C B F A B@2 C B I A F ~@5
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!7 ~", D: "x!3 ~@5", E: "x!4 ~@4", F: "x!2 ~@6", G: "x!5 ~ x!2", H: "x!6 ~@2", I: "x",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@128 [~@7 x] ~@5>").gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@28 B ~@24 C ~@21 D ~@25 D ~@17 C ~@7 E ~@5>".pickRestart({
  A: "~ x", B: "~@4 x ~@2 x", C: "~@3 x!5", D: "~@3 x!2 ~@3", E: "~@4 x!3 ~",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~@3 B ~ B ~@16 B ~ C ~@14 B ~@5 B ~ C ~@3 B ~ A ~@3 B ~@2 D E ~@3 B ~@3 B ~ B ~@3 F ~@10 B ~@3 B ~@2 B G ~@3 H ~@2 I
  ~@3 B ~ B ~@3 B ~ H ~@3 B ~ A ~@3 B ~ J ~ A ~@5
>`.pickRestart({
  A: "~ x ~@2", B: "~@7 x", C: "~@3 x!4 ~", D: "~@5 x ~@2", E: "~ x", F: "~@2 x!2 ~@4", G: "~@3 x", H: "~@6 x!2",
  I: "~@2 x!3 ~@2 x", J: "~ x!4 ~@3",
})).gain(0.38)
// … 51 more lines

More by Joe Cocker