Strudelify

The Huckle-Buck

Otis Redding

KeyF majorTempo156 bpm
0:00/0:00
// The Huckle-Buck — REDDING OTIS
// 156 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 58 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(156/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 · tenor sax
const tenor_sax = note("<~ A B C D E@2 F@2 G H I@2 J H K@2 ~@41>".pickRestart({
  A: "~ [c4,e4]@5 [c4,e4] ~@2 [c4,e4]@4 ~@2 [c4,e4]@2 ~ [c4,e4]@2 ~ [b3,eb4]@2 ~", // C B
  B: "~ d4@4 ~ [bb3,d4]@2 ~@2 [bb3,d4]@4 ~ d4@2 ~ [bb3,d4]@2 ~ [ab3,c4]@2 ~, bb3@4 ~@11 bb3 ~@8", // Bb Ab
  C: "f3@4 ~@2 f3@2 ~ f3@2 ~ ab3 ~@2 bb3@4 ~@2 c4@3", D: "~@3 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~",
  E: "[c4@26 ~@4 d4@3 ~@3 c4@3 ~@3 bb3@3 ~@3]/2", F: "[a3@20 ~@2 f4@5 ~@21]/2", G: "d4", H: "~@2 d4 ~ c4 ~ bb3 ~",
  I: "[a3@19 ~@3 f4@4 ~@22]/2", J: "e4", K: "[a3@19 ~@3 f4@5 ~@21]/2",
})).s("gm_tenor_sax").gain(0.32)

// bass · electric bass finger
const bass = note(`<
  ~ A B C D E F G@2 H I J@2 K L M@2 N O N P Q R N S T U V W E F G@2 H I J@2 K L M@2 N O N P Q R N S T U X L Y Z AA AB ~
>`.pickRestart({
  A: "~ c2@5 ~@3 c2@6 ~@4 c2@2 b1 ~@2", B: "~ bb1@5 ~@4 bb1@6 ~@3 bb1@2 ~ ab1 ~",
  C: "f1@4 ~@2 f1 ~@2 f1 ~@2 ab1 ~@2 bb1@4 ~@2 c2@3", D: "~@19 c2@3 ~@2", E: "f1@5 ~ a1@5 ~@2 c2@5 ~ d2@5",
  F: "eb2@5 ~ d2@5 ~ c2@5 ~ a1@4 c2 ~", G: "[f1@5 ~ a1@5 ~ c2@5 ~ d2@3 ~ f2@5 ~@3 f1@5 ~ g1@5 ~ a1@5 ~]/2",
  H: "bb1@5 ~ d2@5 ~ f2@5 ~ g2@5 ~", I: "ab2@5 ~ g2@5 ~ f2@5 ~ d2@5 ~",
  J: "[f1@5 ~ a1@5 ~@2 c2@5 d2@4 f2@5 ~@4 a1@5 bb1@5 ~ b1@5 ~]/2", K: "c2@5 ~ e2@5 ~ g2@5 ~ e2@5 ~",
  L: "c2@5 ~ bb1@5 ~ a1@5 ~ g1@5 ~", M: "[f1@5 ~ a1@5 ~ c2@5 ~ d2@3 ~ f2@5 ~@4 a1@5 ~ c2@5 d2@4 ~@2]/2",
  N: "f1@5 ~ a1@5 ~ c2@5 ~ d2@4 c2 ~", O: "f2@5 ~ d2@5 ~ c2@5 ~ a1@4 c2 ~",
  P: "f1@4 f2 ~ g1@4 g2 ~ ab1@4 ab2@2 a1@4 a2 ~", Q: "bb1@5 ~ d2@5 ~ f2@5 ~ g2@4 f2 ~",
  R: "ab2@5 ~ g2@5 ~ f2@4 d2 ~ eb2@2 e2@2 f2@2", S: "f2@5 ~ a1@5 ~ bb1@5 ~ b1@5 ~", T: "c2@5 ~ e2@5 ~ g2@5 ~ e2@4 ~ g2",
  U: "bb1@5 ~ ab1@5 ~ g1@5 ~ gb1@5 ~, ~@3 a1 ~@8", V: "f1@5 ~ a1@5 ~ bb1@5 ~ b1@5 ~",
  W: "c2@3 ~ c2 ~ d2@3 ~ c2@2 ~@4 c2@5 ~@3", X: "f1@5 ~ a1@5 ~ c2@5 ~ d2@5 ~", Y: "f1@5 ~ f1@5 ~ ab1@5 ~ ab1@5 ~",
  Z: "bb1@5 ~ bb1@5 ~ ab1@5 ~ ab1@4 ~@2", AA: "f1@5 ~ f1@4 ~@2 c2@5 ~ c2@4 ~@2", AB: "f1@2 ~ gb1@3 f1@6",
})).s("gm_electric_bass_finger").gain(0.31)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C@2 D E F@2 G@2 H I J@4 K@2 L@2 M@2 N O P Q R@2 S@2 T@2 U@2 V@2 W@2 X Y Z AA AB@2 AC AD AE AF AG AH AI AJ AK AL
  AM AN@2
>`.pickRestart({
  A: "[bb3,c4]@9 ~ bb3@6 ~@2 e3@4 ~@2", B: "~ d4@9 f3@6 [f3,d4,f4]@2 bb3@2 ~@4",
  C: "[~ f4@6 f4@3 ~@3 f4@3 [f3,c4]@6 e4@5 ~@21, [f3,a3] ~@7]/2", D: "[f3,c4,f4]@5 a3@2 f4 ~@3 f3 ~ f4@6 c4 ~@4",
  E: "~@7 a3 ~@5 [a3,f4]@6 a3 ~@4", F: "[~@13 a3@5 [f3,a3,c4] ~@3 [a3,eb4,f4]@6 ~@2 a3@2 ~@2 a3@6 ~ [f3,a3] a3 ~@5]/2",
  G: "[~ f4@6 [ab3,f4]@2 ~@4 [ab3,f4]@6 ~@3 d3@6 ~@2 d4 ~@9 ab3@2 [ab3,d4] f4 ~@4]/2", // Db Abdim
  H: "f3@6 [f3,c4]@2 ~@5 f4@5 f3 ~@5", I: "~@5 f3@2 [a3,c4,f4] ~@2 f3@6 ~@2 a3 ~@5, ~@2 [a3,c4,f4] ~@9",
  J: "[bb3@6 bb3 ~@3 bb3@6 ~@2 c4 ~@3 e3@6 ~@2 [e3,bb3,c4,e4]@2 ~@2 e3@6 ~@2 [e3,c4] e4 ~@3 [e3,bb3]@2 c4@6 c4@2 ~@9 f3@2 ~@3 f3@6 a3@2 f3 ~@2 a3@6 a3@2 ~@6, ~@35 c4@3 ~@10]/4", // C7 C Edim
  K: "[~@7 [f3,a3,c4] ~@11 c4 ~@3 [f3,a3]@5 ~@2 a3 [c4,f4] ~@16, ~@11 c4@4 ~@9]/2", // F F5
  L: "[[f3,a3]@6 a3@2 ~@11 c4@2 ~ a3@6 a3@2 f3 f4 ~@8 eb4@2 eb4 f4 ~@4]/2", // F
  M: "[~ [d4,f4]@6 ~@6 [d3,ab3,d4]@6 ~@3 ab3@6 ~@3 f4 ~@11 f4 ~@4]/2", // Dm Ddim
  N: "~ f4@5 [f3,a3] c4 ~@5 c4@5 [c4,f4] ~@5, a3 ~ f3 ~", O: "~@4 a3@2 f3 f4 ~@2 f3@6 ~ f3@2 f4 ~@4",
  P: "~ c4@5 bb3 e4 ~@10 [c4,e4] ~@5", Q: "[d3,d4]@6 [d3,ab3] [d4,f4] ~@2 d3@6 ~ d3 [ab3,d4] ~@5, ~@8 ab3 ~@3",
  R: "[~ c4@5 [a3,c4,f4]@2 ~@2 [f3,a3]@6 ~@6 [e3,bb3]@9 ~@9 e3@2 ~ c4@4 ~]/2", // F Edim
  S: "[~@6 c4 ~@4 f3 ~ f4@6 a3 ~@3 a3@6 ~@2 [a3,f4] ~@5 a3@6 [f3,f4] ~@4, ~@2 a3 ~@5]/2", // Dm F
  T: "[~ a3@5 f3@2 ~@10 c4 ~@3 a3@6 a3@2 a3@2 ~@16]/2",
  U: "[d3@6 ~@4 f4@2 ~ [ab3,d4]@6 d4@2 ~ ab3@6 ~@2 [d3,f4] ~@9 ab3@2 d4 ~@5]/2", // Abdim Dm
  V: "[~ f4@5 a3@2 ~@4 [f3,a3]@6 a3 ~@3 [f3,c4,f4]@6 [c4,f4]@3 a3 ~@2 f3@6 a3@2 ~@6]/2", // F F5
  W: "[e3@6 [e3,bb3,c4] ~@9 bb3@2 c4 ~@3 e3@6 bb3@2 [e3,bb3,c4,e4]@2 ~@2 e3@6 ~@2 [e3,bb3,c4] ~@5]/2", // C7
  X: "~ [a3,f4]@5 ~ c4@2 ~ f3@6 a3@2 ~@6, ~@3 f3 ~@8", Y: "~@7 [f3,a3,f4] ~@11 c4 ~@4",
  Z: "~ [f3,c4]@6 ~@4 a3@2 f3@6 ~@5", AA: "~@7 c4 ~@2 f3@8 ~@6, ~@5 a3@3 ~@4",
  AB: "[~ f4@6 ~@6 c4@6 ~@3 [a3,c4]@6 ~@2 f3 ~@10 f3 f3@2 ~@4, ~@6 f3@3 ~@11 a3 ~@3]/2", // Am
  AC: "~ ab3@5 d3 [d4,f4] ~@5 f4@6 [d3,ab3]@2 ~@3", AD: "~@7 d4 ~@2 d3@6 ~@3 d4 ~@4", AE: "~@6 [f3,a3] ~@5 a3@6 f4 ~@5",
  AF: "~@6 [f3,a3] ~@3 a3@6 ~@2 a3 f4 ~@4", AG: "~ c4@5 [e3,bb3] ~@3 bb3@8 [e3,bb3] ~@5",
  AH: "~@6 [d3,ab3] ~@11 d4 ~@5", AI: "[f3,a3]@4 ~@9 f4@6 ~@3 f3@2",
  AJ: "~ e4@5 [c4,e4] ~@11 bb3 ~@3 bb3@2, [e3,bb3] ~@3", // C Edim
  AK: "~ f4@5 ~ [a3,c4,f4] ~@5 c4@6 ab4 ~@4, [f3,a3]@3 f3 ~@2 eb3@3 ~@3", AL: "~ [d4,f4]@6 ~@6 ab4@6 ab4 ~@4",
  AM: "~ [a3,f4]@6 c4 ~@5 e4@6 e4 ~@4, f3@3 ~@2 f4 e3@3 ~@3, ~@11 f3@2 ~@11", // Dm
  AN: "[a3@4 ~@3 db4@6 f4@25 ~@10, ~ gb3 ~@6]/2",
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(1)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B ~@4 C ~@4 D ~@2 E ~ F G@2 ~@5 H I ~ J ~@3 K L ~ I ~ M ~ N O P G@2 ~@3 Q ~ R ~@3 S T U ~
>`.pickRestart({
  A: "~ f4@9 ~@14", B: "~@3 f3@2 ~@7", C: "~@2 eb4 ~@9", D: "~@10 e4@9 ~@5", E: "~@2 c4 ~@5 c4 ~@3", F: "~@2 a3 ~@9",
  G: "[~@14 eb4 ~@9, ~@22 f4@9 ~@17]/2", H: "~@8 d4 ~@3", I: "~@8 f3 ~@3", J: "~@11 a3 ~@12", K: "~@11 d3@10 ~@3",
  L: "~@4 d3@2 ~@10 f4@3 ~@5", M: "~@2 e3 ~@8 c4", N: "~@8 f4 ~@3", O: "~@11 f3@2 ~@11", P: "~@2 f3 ~@9",
  Q: "~@8 c4 ~@3", R: "~@5 ab3@3 ~@4", S: "~@11 f3@2 ~@11, ~@5 d4 ~@6", T: "~@10 c4@3 ~@9 e3@2", U: "~@5 f3 ~@18",
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(1)

// chords · acoustic guitar steel
const acoustic_guitar_steel_3 = note(`<
  ~ A B C@2 D@2 E@2 F@2 G@2 H I J@2 K L M N O@2 P Q R S T@2 U@2 V@2 W X Y Z AA@2 AB@2 AC@2 AD AE AF@2 AG@2 AH AI AJ AK
  AL AM AN AO@2
>`.pickRestart({
  A: "e3@9 e4@9 [bb3,c4]@4 ~@2", B: "~ bb3@9 f4@6 ~@3 f4 ~@4, f3@5 ~@7",
  C: "[~@6 [a3,c4]@3 ~ a3@2 [f3,c4]@4 f4@6 e3@5 ~@21]/2", // Am F5
  D: "[~@6 f3@2 ~@5 c4@6 f3 ~@3 a3@6 ~ f3@2 ~@5 c4@6 ~@5, ~@6 f3 ~]/2",
  E: "[~ [a3,c4,f4]@6 [a3,f4]@2 ~@3 f3@6 ~ f4 ~@2 f3@6 ~@3 eb4@2 ~ f3@6 ~@2 [f3,eb4] ~@5, ~@15 f3 ~@8]/2", // F Dm F7
  F: "[d3@6 ~@5 ab3@2 ~@6 [ab3,d4,f4]@2 ~ ab3@6 ab3@2 [d3,ab3] ~@3 [d3,ab3]@6 d3@2 d3 ~@5]/2", // Ddim
  G: "[~ f4@5 f4 ~@5 a3@6 c4 ~@3 a3@6 ~@6 a3@6 ~@2 c4 ~@5, [a3,c4] ~@7]/2", H: "~ e4@6 ~@9 bb3@2 bb3 ~@5",
  I: "~@10 bb3@6 ~ e3@2 ~@5, ~@8 bb3 ~@3",
  J: "[~ a3@5 f3@2 ~@8 a3@2 ~@5 a3@6 ~@6 f3@6 ~ f3 [c4,f4] ~@4, ~@17 f4@3 ~@4]/2", // F5
  K: "~ [a3,c4]@6 ~@6 [a3,c4]@6 f4 ~@4", L: "~@6 f3 ~@3 a3@6 ~@2 [f3,a3,c4] f4 ~@4",
  M: "~ [c4,f4]@5 f3@2 ~@10 f3@2 ~@4", N: "~@6 [a3,eb4] ~@3 a3@6 a3@2 f3@2 ~@4",
  O: "[~ ab3@5 d3 ~@12 [ab3,d4,f4] ~@3 d3@7 d3 [ab3,d4] ~@2 [d3,ab3]@6 ~ d3 ab3 ~@5, d3 ~@7]/2", P: "~ c4@6 ~@17",
  Q: "~@10 a3@6 a3@2 ~ c4 ~@4", R: "~ e4@5 e3 c4 ~@10 bb3 ~@5, bb3 ~@3", S: "ab3@6 ~@13 f4 ~@4",
  T: "[f3@6 f3@2 ~@10 [f3,c4] f4 ~@2 c4@9 [e3,bb3,c4]@3 c4@6 [bb3,e4]@2 ~ e4@4 ~, ~@42 [e3,bb3]@5 ~]/2", // F5 C7 Bbdim Edim
  U: "[[f3,c4,f4]@6 ~ f4 ~@4 f3@6 ~ [f3,c4] ~@3 f3@6 a3@2 c4 ~@4 f3@6 ~ c4 ~@4, ~@3 f3 ~@20]/2", // F5
  V: "[~ [c4,f4]@6 ~@6 a3@6 ~@3 [f3,f4]@6 f4@3 eb4@2 ~ [f3,a3]@6 ~ f3 eb4 f4 ~@4]/2", W: "~ d4@6 ~@6 f4@6 ~@5",
  X: "~@4 ab3@2 d4 ~@9 d3@2 d3 ~@5", Y: "[f3,a3]@6 f4 ~@6 f4@5 f3 ~@5",
  Z: "~@5 f3!2 f4 ~@10 [f3,a3,c4] ~@5, ~@2 a3 ~@9", // F
  AA: "[~@7 e4 ~@2 bb3@6 ~@2 [bb3,e4] ~@3 bb3@6 ~@13 e3@2 e4 ~@3 e3]/2", // Bbdim
  AB: "[~@10 a3@6 ~@3 [a3,c4,f4]@2 ~@2 [f3,a3]@6 ~@5 c4@6 ~@2 [f3,a3] ~@5, ~@22 f4@9 ~@17, ~@11 c4@3 ~@10]/2", // F
  AC: "[~ f4@6 f4 ~@5 [a3,f4]@6 f4 ~@3 f3@5 ~@2 a3 ~@11 f3 ~@5]/2", AD: "~ c4@5 f3@2 ~@5 a3@6 [a3,c4,f4]@2 ~@3, f3 ~@3",
  AE: "~@4 a3@2 ~ f4 ~@2 a3@6 ~@2 eb4 ~@5",
  AF: "[~ [d4,f4]@6 ab3 ~@5 [d3,d4]@6 ~@4 d3@7 d3 [ab3,f4] ~@2 ab3@6 ~ d3!2 ~@5, d3 ~@7]/2", // Dm D Db
  AG: "[~ [c4,f4]@6 [c4,f4] ~@4 f3@6 ~@4 a3@6 a3@2 ~@4 f3@6 ~ f3@2 ~@5, f3 ~@7]/2", AH: "e3@6 ~ c4 ~@10 c4 ~@5",
  AI: "[d3,ab3,d4,f4]@6 ~@12 d3 f4 ~@4", AJ: "~@6 [f3,a3] ~@6 c4@5 [c4,f4] ~@5, ~@2 f3 ~",
  AK: "~@6 e3 ~@6 e4@5 [e3,c4] ~@5, ~@2 [bb3,c4] ~", AL: "~@13 ab4@5 ab3 ~@5",
  AM: "~@6 f3 f4 ~@5 [ab3,c4]@5 ab3 ~@5, ~@2 eb3 ~", AN: "~@6 [f3,a3]@2 ~@5 c4@5 bb3 c4 ~@2 bb3@2, ~@2 bb3 ~",
  AO: "[~ c4@3 ~@8 a3@26 ~@10, f3 ~@11]/2",
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.4)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_4 = note(`<
  ~@5 A B ~@2 C D ~ E ~@3 F G H ~@5 I J ~@4 B ~ K ~ L ~ M N ~@2 O P@2 ~@2 Q@2 R@2 J L S T ~ U@2 V ~
>`.pickRestart({
  A: "~@5 f3 ~@18", B: "~@2 f4 ~@9", C: "~@11 d3@10 ~@3, ~@11 d4@2 ~@11", D: "~@2 d3 ~@9", E: "~@8 f3 ~@3",
  F: "~@17 f3 ~@6", G: "~@11 f3@2 ~@11", H: "~@2 f3 ~@5 a3 ~@3", I: "~@16 c4@2 f3 ~@5", J: "~@10 e3@7 ~@7",
  K: "~@4 eb4@3 ~@17", L: "~@8 d4 ~@3", M: "~@8 c4 ~@3", N: "~@8 e3 ~@3, ~@5 c4@4 ~@3", O: "~@4 c4@2 ~@11 f3 ~@6",
  P: "[~@11 f4@4 ~@9]/2", Q: "[~@14 ab3 ~@9, ~@11 d4@4 ~@9]/2", R: "[~@14 f3 ~@9, ~@22 c4@9 ~@17]/2",
  S: "~@2 a3 ~@2 [f3,a3] ~@6", T: "~@11 e3", U: "[~@10 bb3@2 ~@11 eb3@2 ~@21 c4@2]/2", V: "~@4 c4 ~@5 bb3@2 ~@12",
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel_5 = note(`<
  ~ A B C@2 D@2 E F G H I@2 J@2 K@2 L M N@2 O P Q@2 R S T@2 U V W@2 X@2 Y@2 Z AA@2 AB AC@2 AD@2 AE@2 AF@2 AG AH AI AJ
  AK@2 AL AM@2
>`.pickRestart({
  A: "e4@9 ~ e3@8 e4@4 ~@2, ~@3 c4@3 ~@2", B: "~@5 [bb3,d4]@3 bb3 [f3,d4] ~@2",
  C: "[c4@6 ~@4 [f3,c4]@2 ab3@3 ~ bb3@6 [bb3,c4]@5 ~@21, ~@3 f4 ~@12]/2", // F5 Bbsus2
  D: "[a3@4 ~@2 [a3,c4] ~@5 [f3,a3]@6 ~ [a3,f4] ~@3 f3@5 ~ [f3,a3]@2 [c4,f4] ~@11 [f3,c4,f4] ~@4, ~@14 c4 ~@9]/2", // Am F Dm F F5
  E: "f3@6 ~ c4@2 ~@4 [c4,f4]@6 ~@5, ~@3 f3 ~@8", F: "~@4 [a3,f4]@2 ~ f4@2 ~@10 f4 ~@4",
  G: "~ [ab3,d4]@5 ~ d4@2 ~ f4@2 ~ d4@6 ~@5, ~@3 d3 ~@8", H: "~@6 f4 ~@17",
  I: "[~@6 a3@2 ~@4 [f3,c4]@6 a3 f4 ~@2 [f3,c4,f4]@6 ~@2 f3 ~@9 [a3,f4]@2 [f3,f4] ~@5]/2", // F5 Dm F
  J: "[[e3,c4]@6 [e3,c4] e4 ~@2 e3@6 ~@2 [e3,e4] ~@3 bb3@6 bb3@2 ~@12 bb3 ~@5]/2", // C E
  K: "[~ f4@6 [a3,f4]@2 ~ [f3,a3]@6 ~@3 [a3,c4,f4]@2 ~ f4@9 [a3,c4,f4] ~@2 c4@6 ~@2 a3 ~@5, f3 ~@7]/2", // Dm F
  L: "~ [f3,f4]@6 f4 ~@3 a3@2 [f3,f4]@6 [f3,a3] ~@4", M: "~@5 f3@4 ~@3",
  N: "[~@7 [c4,f4] ~@5 [a3,c4,f4]@6 [a3,f4]@2 ~ [f3,c4]@6 f3@2 ~@4 f3@6 ~ f3 a3 ~@5, ~@6 f3@3 ~@11 f4 ~@3]/2", // F5 F Dm F5
  O: "~@7 [ab3,d4,f4] ~@5 f4@6 d3@2 ~@3", P: "~@16 ab3@2 d3 d4 ~@4",
  Q: "[f3@6 ~ f4 ~@5 f4@5 [f3,a3] ~@3 [f3,a3]@6 ~@2 [a3,c4] ~@11 a3 ~@5, ~@2 a3 ~@5]/2", R: "e3@6 ~@4 bb3@8 e3 ~@5",
  S: "f4@6 ~@12 d3 ~@5", T: "[~ f4@6 ~@9 a3@2 a3 ~@3 e4@9 e4@2 ~ [e3,bb3]@6 c4@2 ~@6, a3 ~@7]/2",
  U: "a3@4 ~ a3!2 ~@6 c4@6 f4 ~@4", V: "~@5 f3 f3@2 ~@5 [c4,f4]@6 a3 ~@4, ~@2 c4 ~@9",
  W: "[f3@6 ~ [a3,c4,f4]@2 ~@4 [c4,f4]@5 [f3,a3] f4 ~@2 eb4@6 ~@3 f4@2 ~@8 a3 [f3,a3] ~@5, ~@6 f3@3 ~@6 f3 ~@8]/2", // F F5 F
  X: "[~ [ab3,f4]@5 ~ [ab3,d4,f4]@2 ~@2 ab3@2 ~@6 [ab3,f4]@2 ~ d3@6 ~@2 ab3 ~@3 [d3,ab3]@6 ~@2 ab3 f4 ~@4, ~@3 d3 ~@20]/2", // Db Ddim Db Ddim
  Y: "[c4@6 [f3,c4]@2 ~@4 c4@6 c4 f4 ~@2 a3@6 ~@3 c4 ~@2 a3@6 f4@2 f4 ~@5]/2", Z: "~ e4@6 ~@3 e3@6 ~@8, [bb3,c4] ~@3",
  AA: "[~@10 bb3@6 bb3@2 ~@7 c4@6 [a3,f4]@2 ~@9 f3@2 ~@4, ~@23 bb3@2 ~@23, ~@4 f3 ~@3]/2", // Dm
  AB: "~@5 a3@2 c4 ~@3 f3@5 a3@2 ~@6, ~@5 [a3,f4]@3 ~@4", // Dm
  AC: "[~ a3@6 [f3,a3,c4] ~@5 c4@6 [f3,a3,c4] ~@3 a3@5 ~@2 f3 f4 ~@10 a3 f4 ~@4, ~@11 c4@4 ~@9]/2", // F
  AD: "[a3@6 ~ [c4,f4] ~@5 f4@5 f3@2 ~@2 f3@6 f3@2 [a3,eb4] ~@3 f3@6 [eb4,f4]@2 a3 f4 ~@4, ~@3 a3 ~@20]/2", // F5 Adim Ebsus2
  AE: "[~@13 ab3@6 [d4,f4] ~@2 ab3@6 ~@12 ab3@2 ab3 f4 ~@4]/2", // Dm
  AF: "[a3@6 ~@7 [c4,f4]@5 [f3,a3,c4] ~@3 f3@6 ~@2 c4 f4 ~@8 a3@2 ~ c4 ~@4]/2", AG: "~ e4@6 ~@11 e4 ~@5",
  AH: "~@7 [d4,f4] ~@2 d3@6 ~ d3 ab3 ~@5, ~@8 ab3 ~@3", AI: "~ f4@6 [c4,f4]@5 a3@6 [f3,a3] ~@3 a3@2, c4 ~@3",
  AJ: "c4@6 bb3 ~@3 bb3@2 e3@6 ~ e4 ~@4",
  AK: "[~ c4@6 ~@6 ab3@5 ~ c4 ~@5 bb3@6 [bb3,d4] ~@10 eb3 c4 ~@2 ab3@2, ~@18 eb3@2 ~@3 [eb3,ab3]@2 ~@23, ~@4 f3 ~@3]/2", // Bb Ab5
  AL: "~ c4@6 f4 ~@2 a3@2 ~@6 e3 ~@5", AM: "[~@4 a3 ~@2 gb4@5 f3 c4@25 ~@10, ~ f4@5 bb3@4 ~@38]/2",
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.1)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_6 = note(`<
  ~ A ~@3 B ~@2 C ~ D E F G H I J K@2 ~@2 L@2 M@2 N O P Q R ~@2 C S ~ E ~ T ~ I U ~ V ~@5 W N ~ C X ~ Y ~@3
>`.pickRestart({
  A: "~@8 bb3 ~@3", B: "~@11 a3 ~@12", C: "~@2 f3 ~@9", D: "~@16 [d4,f4]@3 ~@5", E: "~@5 f3 ~@6", F: "~@8 c4 ~@3",
  G: "~@5 c4@4 ~@3", H: "~@2 e3 ~@8 c4", I: "~@8 f3 ~@3", J: "~@5 f3@2 ~@9 f4@2 ~@6", K: "[~@11 f4@4 ~@9]/2",
  L: "[~@14 ab3 ~@9, ~@11 d4@4 ~@9]/2", M: "[~@14 f3 ~@9, ~@11 c4@4 ~@9]/2", N: "~@5 [c4,e4]@4 ~@3", O: "~@5 ab3@3 ~@4",
  P: "~@16 [c4,f4]@3 ~@5", Q: "~@5 e4@3 ~@4", R: "~@5 f3 ~@18", S: "~@11 d4@2 ~@11", T: "~@10 e4@9 ~@5",
  U: "~@5 f3@2 ~@9 c4@2 ~@6", V: "~@2 a3 ~@5 a3 ~@3", W: "~@18 f3 ~@5", X: "~@5 e3 ~@6", Y: "~@11 c4",
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.1)

// chords · french horn
const french_horn = note(`<
  ~@17 A B C D E F A G H I J K L@2 M@2 N O P@2 Q@2 R@2 A B C D E F A G H I S T U@2 V W ~
>`.pickRestart({
  A: "~@4 [a3,c4] ~@7 [a3,c4]@2 ~@10", B: "~ [a3,c4] ~@8 a3@2 ~@12, ~@10 c4 ~@13", C: "~@4 [a3,c4] ~@7 [a3,c4] ~@11",
  D: "[a3,c4] ~@9 [a3,c4] ~@13", E: "~@2 c4 ~@3 ab3 ~@5, ~@4 ab3 ~@7 c4 ~@11",
  F: "~ ab3@2 ~@7 ab3@2 ~@12, ~ c4 ~@8 c4 ~@13", G: "~ eb4@2 ~@3 [a3,c4]@2 ~@2 [c4,eb4]@3 ~@11, c4 ~@11",
  H: "~@2 c4 ~@3 c4 ~@5", I: "~@2 d4 ~@3 d4 ~@5", J: "~@2 a3 ~@3 a3 ~@5, ~@4 c4 ~@7 c4 ~@11", K: "~@8 c4 ~@3",
  L: "[c4@27 ~ c4@2 ~@7 c4@2 ~@9]/2", M: "[c4@19 ~@3 a3@9 ~@17]/2", N: "ab3", O: "~@2 ab3 ~@3 ab3 ~@5",
  P: "[c4@19 ~@3 a3@7 ~@19]/2", Q: "[c4@26 ~@4 bb3@3 ~@3 a3@2 ~@4 g3@3 ~@3]/2", R: "[f3@19 ~@3 a3@7 ~@19]/2",
  S: "f4@23 ~", T: "g4@11 ~", U: "[a4@6 ab4@7 ~@5 ab4@6]/2", V: "a4@11 ~ bb4@11 ~", W: "a4@3 ~@3 bb4@2 ~@4 a4@3 ~@9",
})).s("gm_french_horn").gain(0.3).pan(0.8)

// chords · french horn · soft notes
const french_horn_soft = note("<~@36 [~@5 g3 ~ f3 e3 d3 ~@14] ~@17 [~@2 bb4@9 ~@13, ~@2 g4 ~@21] ~@3>")
  .s("gm_french_horn").gain(0.05).pan(0.8)

// bass · baritone sax
const bass_2 = note(`<
  ~@17 A B A C A D A B E F A G A H I@2 J K L@2 M N O@2 A B A C A D A B E F P E Q R S T ~
>`.pickRestart({
  A: "~@2 f2 ~@3 f2 ~@5", B: "f2 ~@4 f2 ~@6", C: "f2 ~@4 f2@5 ~@2", D: "f2@2 ~@8 f2@3 ~@11", E: "~@2 c3 ~@3 c3 ~@5",
  F: "~@2 bb2 ~@3 bb2 ~@5", G: "~@8 c3 ~@3", H: "ab2@3 ~ a2@2 c3@3 ~ f2@2 ~@12",
  I: "[~@4 [f2,g2]@2 ~@6 f2@2 ~@8 f3@6 ~@12 f2 ~ ab2@3 ~ f2 ~]/2", J: "bb2@3 ~ bb2@2 ~@16 f2 ~",
  K: "ab2@3 ~ ab2 ~ bb2@3 ~@3 ab2@3 ~ f2@2 ~@6", L: "[~@4 f2@2 ~@7 f2@2 ~@7 f3@6 ~@12 a2 ~ bb2@3 ~ b2 ~]/2",
  M: "c3@3 ~ c3@2 ~@18", N: "~@4 c3@2 ~@6 c3@3 ~@9", O: "[~@4 f2@2 ~@6 f2@3 ~@7 f3@6 ~@20]/2",
  P: "~@4 f2@2 ~@6 f2@3 ~@9", Q: "f2@11 ~ ab2@11 ~", R: "bb2@11 ~ ab2@9 ~@3", S: "~@6 f2@3 ~@3 ab2@3 ~ bb2@2 ~@4 f2@2",
  T: "~@2 gb2 ~ f2 ~@3",
})).s("gm_baritone_sax").gain(0.4).pan(0.2)
// … 143 more lines

More by Otis Redding