Strudelify
Try a Little Tenderness cover art

1992

Try a Little Tenderness

Otis Redding

KeyG majorTempo102 bpm
0:00/0:00
// Try a Little Tenderness — Otis Redding
// 102 bpm, 4/4, key G 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(102/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@3 A@6 B@5 C D@4 E@6 F G H I@2 J K L M N H O P Q R S P T U J F L V W P X Y L M N Z O F AA AB AC AD AE AF AG AH AI AB
  AJ AK J K AL AM AN AO O AD AP AQ AL AM AN AR O AD F AS AL AM AT AU O AD AV@2
>`.pickRestart({
  A: "[~@14 d2@12 ~ g2@28 ~ e2@29 ~ a1@25 ~@4 d2@29]/6", B: "[~ g2@29 f2@31 e2@24 ~@2 e2@2 ~@2 e2@25 ~@4]/5",
  C: "~ a1@22 ~", D: "[~@3 a1@2 ~@2 a1@18 e2@6 a1@5 d2@22 ~@5 d2 ~@2 d2@30]/4",
  E: "[b1@30 a#1@30 a1@28 ~ d2@26 ~@3 g2@26]/6", F: "e2", G: "a1@5 ~", H: "d2", I: "[g2@23 f2@25]/2",
  J: "e2@19 ~@2 e2@2 ~", K: "e2@5 ~", L: "a1@19 ~@2 a1 ~@2", M: "a1@15 e2@5 a1@4", N: "d2@18 ~@3 d2 ~@2", O: "g2",
  P: "c2", Q: "g2@19 ~@2 g2 ~@2", R: "g2@23 ~", S: "c2@19 ~@2 c2@2 ~", T: "b1@18 ~@3 b1@2 ~", U: "b1@11 ~ f#2@6 b1@5 ~",
  V: "a1@12 a2@6 a1@5 ~", W: "c2@19 ~@2 c2 ~@2", X: "b1@18 ~@3 b1 ~@2", Y: "b1@23 ~", Z: "d2@19 ~@5", AA: "a2@23 ~",
  AB: "d3@23 ~", AC: "g2@20 ~ g2@3", AD: "f2", AE: "e2@19 ~@2 e2@2 ~, f2 ~@23", AF: "e2@17 ~ b2@3 e2@3",
  AG: "a2@13 ~@8 a2@2 ~", AH: "a2@16 ~@2 a2@5 ~", AI: "d3@19 ~@2 d3 ~@2", AJ: "b2@18 ~@3 b2 ~@2",
  AK: "b2@16 ~@2 b2@5 ~", AL: "a1@11 ~ b1@11 ~", AM: "c2@12 c#2@11 ~", AN: "d2@11 ~ d#2@12",
  AO: "e2@11 ~ f2@5 ~ f#2@4 ~@2", AP: "e2@23 ~", AQ: "e2@19 ~@5", AR: "e2@12 f2@6 f#2@5 ~, ~@6 d#2 ~@5",
  AS: "~@3 e2@5 ~ e2@4 ~@2 e2@8 ~", AT: "d2 ~@11", AU: "~@4 f2 ~ f#2 ~", AV: "[~@39 d2@2 ~ e2@2 ~ g2@2 ~, e2@7 ~]/2",
})).s("gm_acoustic_bass").gain(0.48)

// chords · piano · "Keyboard 1"
const piano = note(`<
  ~@4 A@5 B@5 C@5 D E@5 F@5 G@2 H@2 I@2 J K L@2 M@2 N@2 O@2 P@2 Q@4 R@2 S T@2 U V W@3 X@2 Y@2 Z@3 AA AB@2 AC AD AE AF AG
  AH AI@2 AC AJ AE AF AG AK AL AM AC AN AO AP AG AQ AR AS
>`.pickRestart({
  A: "[~@4 g2@27 ~ e4@23 ~@7 a4@22 ~@7 d3@19 ~@6 e4@3 g3, ~@3 [g3,b3,d4]@23 ~@5 [g3,b3]@23 ~@6 a3@23 ~@8 [f#4,a4]@22 ~@7, ~@4 g4@23 ~@4 e3@16 ~@14 a2@30 ~@19 [d3,d4]@10, ~@32 e2@29 [c4,e4]@22 ~@7 d4@20 ~@5 e3@5]/5", // G F#m D C
  B: "[~ g3@24 ~@6 f4@22 ~@8 [g#3,b3]@52 ~@4 c5@2 b4, g2@29 ~ f2@30 ~ e2@59, [b3,d4]@25 ~@4 f3@24 ~@8 e3@47 ~@7 d5@5, ~ g4@22 ~@7 [a3,c4]@24 ~@59 e5@7]/5", // G#m Bm Am
  C: "[a4 [e4,a4]@50 ~@9 [d4,f#4,a4,c5]@51 ~@9, a2@60 d3@59 ~, [a3,c4]@5 ~@7]/5", D: "[b2,b3,d4,f#4,b4]",
  E: "[~@5 [a#3,d4,f4]@24 ~@6 [c4,e4,a4]@23 ~@8 c5@24 ~@4 [g3,b3,d4,g4]@22 ~@3 e3, ~@5 a#2@29 a3@23 ~@63, ~@5 g#4@22 ~@8 a2@30 [d3,d4,f#4,a4]@25 ~@4 g2@25 ~]/5", // A# Am G D
  F: "[[g3,b3,e4]@19 ~@5 [c4,e4,a4]@18 ~@29 g4 [g3,g4]@19 ~@5 f4@18 ~@6, e2@23 a3@18 ~@6 f#4@18 ~@2 e3@4 g2@24 f2@24 ~, ~@24 a2@23 [d3,d4]@16 [d3,d4]@8 [b3,d4]@20 ~@29, ~@48 a4@17 ~@3 e4@4 ~@48, ~@70 g3@2 ~@23 [f3,a3,c4]@19 ~@6]/5", // Em Am G D Bm F
  G: "[e3@38 ~@8 b4 ~, [e2,g#3,b3], ~@42 e5@5 ~, ~@11 d5, ~@15 c5]/2", H: "[[a3,c4,e4,a4]@5 ~, a2]/2",
  I: "[[d4,f#4,a4,c5]@41 ~@7, d3@47 ~]/2", J: "[g3,d4,g4]@11 ~, [g2,b3]", K: "[g3,c4,e4]@7 ~, c3",
  L: "[[g3,b3,d4]@22 ~@2 [g3,b3,d4,f4]@19 ~@5, g2]/2", // G G7
  M: "[g4@39 [g3,c4,g4]@5 [c3,a3,a4]@4, [e4,c5]@15 ~, c3@7 ~, c4@37 ~@11]/2", // C5 F C
  N: "[~ d#4@40 ~ b4@6, [b3,f#4,b4]@40 ~ b3@6 ~, ~ b2@47]/2", O: "[[e4,g4,b4,e5]@41 ~@7, e3]/2",
  P: "[~@9 [f#4,c#5,f#5] ~@2 [c#5,e5]@12 ~@8 e5 f#5 ~@2 [c#5,e5]@3 [f#4,f#5] ~@8, a2@47 ~, [c#4,g4]@41 ~@7, a3@19 ~@5, e4@12 e4@20 [f#4,c#5]@2 ~@2 e4@5 ~@7]/2", // F#5 C#m F# C#dim F#5
  Q: "[g4@39 g4@5 [a4,a5]@3 ~ [b3,d#4,f#4,b4]@42 ~@6, c3@47 ~ b2@47 ~, [c4,e4,c5]@43 ~@5 b5@21 ~@27, ~@39 g5@7 ~ g5@21 ~@28, ~@48 a5 ~@47]/4", // A B C
  R: "[[a3,c#4,e4]@14 ~ [e4,d5,e5], [a2,g4]@11 ~]/2", S: "[e4,d5,e5], [a3,c4,g4]@11 ~",
  T: "[[d4,f#4,a4]@10 ~@2 [d4,f#4,a#4]@11 d4 [d4,g4]@14 ~ [g3,b3,d4,g4] ~@5 [g2,b3,g4]@3, ~@23 [g3,b3]@14 ~@8 d4 ~@2, ~@24 g2@17 ~@7]/2", // D Daug G5 G
  U: "~@6 [e4,g4,b4] ~@2 [e3,g3,b3] ~@5 [e4,g4,b4]@6 [e4,g4,b4]@2 ~, e2, [e3,g3,b3,d4]@8 ~@7 [g3,b3,d4,d5]@8 ~", // Em Em7 G
  V: "~@6 a4@2 ~ [a4,c5,g5] ~@2 [a4,c5]@8 a4 [a4,c5,e5,g5] ~@2, a2, [a3,c4,e4]@8 ~ g4@2 ~ [e4,e5]@9 g4@2 ~", // Am7 Am Am7 Am E
  W: "[[a4,c5,e5]@7 ~@2 [g4,a4,c5,g5] ~@2 [a4,c5,e5]@6 [a4,c5,e5,g5]@3 [d3,a4]@2 g3 g4@6 ~@6 g3@3 g3@4 g3@2 [g4,b4,d5,g5]@2 f3 f4@6 [a4,c5,f5] ~@8 [f4,a4,c5]@6 [f4,a4,c5]@2 ~, d3@7 ~ g2@8 [f2,c4]@8, e4@9 ~@3 e4@11 b3@15 ~ [b3,d4]@8 a3@23 ~@2, ~@24 d4@15 ~@9 f3@15 [f3,f5]@8 ~, ~@8 g3@2 [g4,b4,d5,g5]@3 [g4,b4,d5,g5]@2 ~@3 f4@3 ~@3]/3", // Am Am7 Am Am7 D5 G F F5 …
  X: "[e3@6 [e4,g#4,b4] ~@2 [f#3,g#3,b3,e4] ~@5 [f#4,g#4,b4] ~@5 e3@2 ~ [e3,g#3,b3]@6 [f#4,g#4,b4] ~@2 [e3,g#3,b3] ~@12 b4 ~, e2, [g#3,b3]@8 ~@7 [g#3,b3]@8 ~@16 [e3,g#3,b3,g#4,b4]@6 [e4,c5]@2 ~, ~@15 e3@6 g#4@8 ~@13 e5@5 ~, ~@21 [e4,b4]@6 ~@12 e4@4 d5@4 ~]/2", // E G#m7 E G#m7 E G#m E C …
  Y: "[[a3,c4,e4]@6 [a3,c4,e4]@3 [a3,e4,g4] ~@5 [a3,c4,e4]@6 [a3,c4,e4]@3 [a3,c4,e4]@6 [a3,c4,e4,g4]@3 ~@12 [c4,e4,g4]@2 ~, a2@6 a2!2, a4@16 ~@23 [c4,e4,g4]@6 ~@3, ~@6 g4 ~@2 c4@2 ~@4 g4 ~@5 g4@9 ~@3 [a3,c4,e4,g4]@6 a3@8 ~]/2", // Am A7 Am Am7 C Am7
  Z: "[[d4,f#4,a4]@6 [d4,f#4,a4] ~@2 [d4,f#4,a4,c5] ~@5 [d4,f#4,a4]@6 [d4,f#4,a4,c5]@3 [d4,f#4,a4,c5]@6 [d4,f#4,a4]@3 ~@12 [d4,f#4,a4,c5] ~@2 [g3,d4,g4]@6 [g3,b3,d4,g4] ~@2 [g3,b3,d4,g4] ~@5 [g3,b3,d4,g4]@6 [b2,g3,b3,d4,g4]@3, d3@36 d3@5 ~ d3@5 ~ b2@16 ~@8, ~@30 c5@9 ~@5 g3@2 ~@26, ~@33 [d4,f#4,a4]@6 [d4,f#4,a4,c5]@6 ~@2 b3@6 ~@19]/3", // D D7 D D7 D D7 G5 G …
  AA: "[g3,b3,d4,g4]@6 [b3,d4]@2 ~ [g3,b3,d4,g4] ~@5 [g3,b3,d4,g4]@6 [b2,g3,b3,d4,g4]@3, b2@4 b2@3 ~, ~@6 [g3,g4] ~@17", // G Bm G
  AB: "[[e3,e4,g#4,b4]@6 [e4,g#4,b4] ~@2 [e4,g#4,b4] ~@2 e3 ~@5 e3 ~@2 [e4,g#4,b4]@3 ~@3 e3 ~@2 [f#4,g#4,b4] ~@2 [e4,g#4,b4] ~@5 [e4,g#4,b4]@4 ~@5, e2@15 [e4,g#4,b4]@6 e2@23 ~@4, ~@24 [e4,g#4,b4]@7 ~@17]/2", // E G#m7 E
  AC: "[a3,c4,e4]@11 ~ [g3,b3,d4]@11 ~", AD: "[c4,e4,g4]@11 ~ [c#4,e4,g4]@11 ~",
  AE: "[d4,f#4,a4]@11 ~ [d#4,f#4,a4]@11 ~", AF: "[e4,g4,b4]@10 ~@2 [f4,a4,c5]@5 ~ [f#4,a4,c5]@5 ~",
  AG: "[g4,b4,d5]@23 ~", AH: "[f4,a4,c5]@23 ~", AI: "[e4,g#4,b4]@11 ~", AJ: "[e4,g4]@12 [c#4,e4,g4]@11 ~, c4@23 ~",
  AK: "[f4,a4,c5]@19 ~@5", AL: "~@3 [e4,g#4,b4]@3 ~@3 [e4,g#4,b4]@2 ~@4 [e4,g#4,b4]@3 ~@3 [e4,g#4,b4]@3",
  AM: "~@3 [e4,g#4,b4]@3 ~@3 [e4,g#4]@6 g#4@3 g#4@5 ~, ~@9 b4@14 ~, ~@15 e4@8 ~", // E
  AN: "[c4,e4,g4]@11 ~ [c#4,e4,g4]@9 ~@3", AO: "[d4,f#4,a4] ~@7", AP: "~@12 [f4,a4,c5]@2 ~@4 [f#4,a4,c5]@5 ~",
  AQ: "[f4,a4,c5]@7 ~", AR: "[e4,g#4,b4]", AS: "~@3 [f#4,g#4,b4]@2 ~@4 [f#4,g#4,b4]@2 ~@4 [f#4,g#4,b4]@3 ~@6",
})).s("gm_piano").gain(0.36)

// chords · drawbar organ · "Keyboard 2"
const drawbar_organ = note(`<
  ~@12 A@2 ~@8 B@3 ~@5 C@2 ~@3 D@2 E F@2 G@2 H@2 I@2 G@4 J@2 K@3 L@2 M N O@2 P Q@2 R@4 S@4 T U V W X Y Z@2 T AA AB AC X
  AD AE@2 AF AG AH AI X AJ AK@2
>`.pickRestart({
  A: "[~@3 e6@19 d6@6 e6@6 d6@5 ~@9, ~ d6 ~@22]/2", B: "[~@21 d6@6 e6@4 ~ g6@4 ~ a6@5 g6@3 ~ g6@21 ~@5]/3",
  C: "[~@11 e6@16 d6@5 e6@4 d6@4 ~@8, ~@11 d6 ~@36]/2", D: "[~@24 g5@23 ~, ~@23 b4@24 ~]/2", E: "c5@7 ~",
  F: "[d5@47 ~]/2", G: "g5/2", H: "[d#5@47 ~]/2", I: "[g5,b5]/2",
  J: "[~@12 b6@11 ~ b6@3 ~ b6@3 ~ b6@4 b6@12, d#5@47 ~, ~ f#5@47, ~@28 a6 ~@19]/2",
  K: "[c#5@47 ~ [c5,c6]@23 ~, e6, a5@31 ~@5, c#6@11 ~@7]/3", // C
  L: "[a5@11 ~ a#5@8 ~@4 d5@23 ~, [f#5,f#6]@20 ~@3 [g4,b4]@24 ~]/2", M: "[g4,b4]@23 ~",
  N: "~@6 [e6,a6] ~@8 [a5,e6,a6] ~@5 [e6,a6]@2 ~, [c5,e5]@23 ~", // A5 C
  O: "[[d5,f#5,a5]@23 ~ g5@6 [d6,g6] ~@8 [d6,g6]@8 ~, ~@23 [g4,b4]@24 ~, ~@30 g5@17 ~]/2", P: "[a4,c5,f5]@23 ~",
  Q: "[~@15 [f#5,b5,e6]@14 c4 [e5,b5,e6]@5 ~ e6@6 e5@6, [g#4,b4], ~@3 [f#5,b5]]/2", // Esus2 E5 G#m B5
  R: "[~@24 g5@23 [d5,f#5]@48 ~, [c5,e5] ~]/4", // D C
  S: "[[b3,b4,d5,g5]@47 ~@10 [b5,e6]@2 ~ [b5,e6]@2 ~ [b5,e6]@3 ~@3 [b5,e6]@2 ~ [b5,e6]@2 ~ [b5,e6]@2 ~@4 [b5,e6]@2 ~ [b5,e6]@2 ~ [b5,e6]@2 ~ [b5,e6]@2 c6 [f5,g5,a5,b5] [b4,c5,d5,e5] a4, ~@47 b4@45 ~@4, ~@16 [g#4,e5]@15 ~, ~@75 f6 ~@20]/4", // G E5 G7 Cmaj7 C#m
  T: "[a5,c6,e6]@11 ~ [g5,b5,d6]@11 ~", U: "[c6,g6]@11 ~ [c#6,g6]@10 ~@2, f6 ~@23", V: "[d6,f#6]@11 ~ [d#6,f#6]@11 ~",
  W: "g6@10 ~@2 [c6,f6]@3 ~@3 [c6,f#6]@3 ~@3, e6 ~@2", X: "[d6,g6]@23 ~", Y: "[c6,f6]@14 ~ [c6,g6]@4 ~ [c6,f6]@3 ~",
  Z: "[~@9 g#6@18 g#6@5 ~ [f#6,g#6]@4 ~ [e6,g#6]@5 ~@5, e6@25 ~@2 e6@2 ~@19]/2", AA: "[c6,e6]@11 ~ [c#6,e6]@11 ~",
  AB: "[d6,f#6]@10 ~@2 f#6@11 ~, ~@4 d#6@3 ~", AC: "[e6,g6]@8 ~@4 [f6,a6]@3 ~@3 [f#6,a6]@3 ~@3",
  AD: "f6@14 ~ g6@4 ~ f6@3 ~, c6@12 ~@3 f#6 ~@8", AE: "[~@18 g#6@11 ~ [e6,g#6]@5 ~ [e6,g#6]@8 ~@4, e6@29 ~@19]/2",
  AF: "[a5,c6]@11 ~ [g5,b5,d6]@10 ~@2", AG: "[c6,e6,g6]@5 ~ [c#6,e6]@5 ~",
  AH: "[d6,f#6]@3 [a#5,c6,d6,d#6] [f5,g5,g#5] [a#4,c5,d5,d#5] ~@18", AI: "~@12 [f6,a6]@2 ~@4 [f#6,a6]@3 ~@3",
  AJ: "f6@14 ~ [f6,f#6] ~@4 f6@3 ~, c6@12 ~@3 g6@7 ~@2", // F#maj7
  AK: "[e6@18 g#6@9 [e6,g#6]@2 ~@4 [e6,g#6]@3 ~@3 [e6,g#6]@2 f#6 e6 [b5,c#6] [f#5,a5] [b4,c#5,e5] ~@2]/2", // E Bsus2 F#m C#m7
})).s("gm_drawbar_organ").gain(0.22)

// chords · drawbar organ · "Keyboard 2" · soft notes
const drawbar_organ_soft = note(`<
  ~@13 A ~@17 B ~@3 C@7 D@2 E@4 F@7 G ~ H I J@2 ~ K@2 L@2 M@2 ~@2 N@2 ~ O ~@5 P ~@5 Q ~@4 R ~@2 Q S@2
>`.pickRestart({
  A: "~@5 e6@2 ~", B: "~@4 e6 ~",
  C: "[~@24 d5@22 ~@2 e5@22 ~@26 f5@23 [c5,e5]@48 ~, ~@23 g4@90 ~@55, ~@72 b4@47 ~@49]/7", D: "[~ a5@47, [b4,f#5]]/2",
  E: "[e5@47 ~ [c#5,e5]@48, ~@47 a4@48 ~]/4", // C#m
  F: "[[c5,e5]@47 ~@24 a6 ~@7 a6 ~@16 [e5,g5]@64 ~@8, ~@47 b4@48 a4@65 ~@8]/7", G: "[d5,d6]@19 ~@5", H: "e4@23 ~",
  I: "~@12 a5 ~@8 a5@2 ~, a4@23 ~", J: "[~@23 d5@24 ~]/2", K: "[~@7 e6, e4]/2", L: "a4/2", M: "[a5@47 ~]/2",
  N: "[~@12 [d6,f6] ~@31 d6 ~@2 g4, e4@15 ~]/2", O: "~@10 e6 ~@13", P: "~@21 [d5,d#5,f5,b5] [g#4,a#4,c5] g4",
  Q: "~@14 c6@9 ~", R: "~@3 f6 ~@20", S: "[~@9 e6@4 ~@11]/2",
})).s("gm_drawbar_organ").gain(0.1)

// other · brass section · "Brass 1"
const brass_section = note(`<
  ~@55 A@3 B@2 C D E@2 ~@4 F@2 G@2 H I J K L M N O P I J K Q R N O S T U V Q W N X
>`.pickRestart({
  A: "[~@23 [b3,d4]@46 ~@3]/3", B: "[[c4,e4]@35 ~@13]/2", C: "[d4,g4]@23 ~", D: "c4@11 ~, f4@3 ~",
  E: "[[b3,d4]@43 ~@5]/2", F: "[[g4,g5]@47 ~]/2", G: "[[g#4,g#5]@23 ~]/2", H: "~@4 [a3,a4]@7 ~@4 [b3,b4]@8 ~",
  I: "~@3 [c4,c5]@8 ~@4 [c#4,c#5]@8 ~", J: "~@3 [d4,d5]@8 ~@4 [d#4,d#5]@8 ~",
  K: "~@3 [e4,e5]@7 ~@2 [f4,f5]@2 ~@4 [f#4,f#5]@3 ~@3", L: "[g4,g5]@20 ~ [g4,g5]@2 ~",
  M: "[f4,f5]@14 ~ g4@4 ~ f5@3 ~, ~@5 g5@2 ~, ~@15 f4 ~@3 f4@4 ~", N: "[e4,e5]",
  O: "~@3 [e4,e5]@3 ~@3 [e4,e5]@3 ~@3 [e4,e5]@3 ~@3 [e4,e5]@2 ~", P: "~@3 [a3,a4]@8 ~@4 [b3,b4]@8 ~", Q: "[g4,g5]@23 ~",
  R: "f4@15 [g4,g5]@5 [f4,f5]@3 ~, f5@7 ~@5", S: "~@3 [a3,a4]@9 ~@3 [b3,b4]@8 ~",
  T: "~@3 [c4,c5]@8 ~@4 [c#4,c#5]@7 ~@2", U: "[d4,d5] ~@7", V: "~@6 [f4,f5] ~@2 [f#4,f#5] ~@2",
  W: "[f4,f5]@15 f5 f4 ~@3 [f4,f5]@3 ~, ~@15 [g4,g5]@5 ~@4", // F G
  X: "~@3 [e4,e5]@2 ~@4 [e4,e5]@2 ~@4 [d3,e4,e5]@3 [e3,e4]@3 [g3,g4]@2 ~, ~@5 d4@2 ~", // E Dsus2 E G
})).s("gm_brass_section").gain(0.43)

// other · trombone
const trombone = note("<A@2 B C@2 ~@91>".pickRestart({
  A: "[~ d4@11 [b3,b4]@6 [e4,e5]@5 ~ d4@11 [b3,b4]@6 [a3,a4]@7, d5@12 ~@11 d5@13 ~@12]/2", // B E B A
  B: "[g3,g4]@12 [g3,g4]@5 ~@2 g3@5, ~@3 g4", C: "[~ [e3,e4]@12 ~ d4@14 ~@20]/2",
})).s("gm_trombone").gain(0.45).pan(1)

// other · alto sax · "Sax 1"
const alto_sax = note("<A B C@3 ~@91>".pickRestart({
  A: "d4 c4 b3 a3", B: "g3 a3 g3 d#3", C: "[e3@6 f#3@6 e3@7 d3@6 c#3@13 a3@13 ~@21]/3",
})).s("gm_alto_sax").gain(0.48)

// other · alto sax · "Sax 2"
const alto_sax_2 = note("<~ A B C@2 ~@91>".pickRestart({
  A: "~@6 c4 ~", B: "c4@6 b3@6 c4@6 ~ b3@3 a3@2", C: "[~ g3@13 f#3@14 ~@20]/2",
})).s("gm_alto_sax").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~@68 A B@3 C@3 D A B@3 C@3 D A B@2 E C@3 D C B@2 D>".pickRestart({
  A: "~ x ~@5 x", B: "~@7 x", C: "~@3 x ~@3 x", D: "~@3 x ~@4", E: "~@3 x ~ x ~ x",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct("<~@23 [~@11 x] [~@5 x ~@5 x ~@6 x ~@5] [x!4]!43 ~@28>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@23 [~@11 x] [~@7 x] [x ~@6 x]!2 x [x ~@6 x]!8 ~@60>").gain(0.2)

// drums · clap
const clap = s("cp").struct("<~@67 [~@15 x ~ x!2 ~@2 x ~@2] [x!4]!28>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B ~ C D E F ~ C G H I ~ C J K I ~ L ~@45 M@8 N M@2 N O P N M Q M@4 P@2 R M@3 S
>`.pickRestart({
  A: "~@17 x ~@6", B: "~@11 x", C: "~ x ~@6", D: "~@5 x ~@6", E: "~@2 x", F: "~@7 x", G: "~@3 x ~@4", H: "~@5 x ~@2",
  I: "~@5 x", J: "~ x ~", K: "~@7 x ~@4", L: "~ x ~@22", M: "x!4", N: "x ~ x ~ x!3 ~", O: "x ~ x!5 ~",
  P: "x!3 ~ x ~ x ~", Q: "x ~ x ~ x ~ x!2", R: "x ~ x!3 ~ x ~", S: "x!5 ~ x ~",
})).gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@24 A ~ A ~ A ~ A@6 ~@38 B C D E C D C F G D H E I J I C ~@3 D K L>".pickRestart({
  A: "~@3 x", B: "~@3 x ~@3 x", C: "~@7 x", D: "~ x ~ x ~@4", E: "~@3 x ~ x ~@2", F: "~@5 x ~ x", G: "~ x ~ x ~@3 x",
  H: "~ x ~@3 x ~@2", I: "~ x ~ x ~ x ~ x", J: "~@3 x ~@4", K: "~@3 x ~ x ~ x", L: "~@5 x ~@2",
})).gain(0.1)

// drums · open hat
const open_hat = s("oh").struct("<~@68 A@2 ~ A B ~@2 C A@2 ~ A D ~@2 E ~ A ~ E ~@2 A D A@2 ~@2>".pickRestart({
  A: "~@7 x", B: "~ x ~@3 x ~ x", C: "~ x ~ x ~@4", D: "~ x ~@6", E: "~@5 x ~ x",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@95 [~ x ~ x ~ x ~@2]>").gain(0.35)

stack(
  bass, piano, drawbar_organ, drawbar_organ_soft, brass_section, trombone, alto_sax, alto_sax_2, kick, rim, snare, clap,
  hihat, hihat_soft, open_hat, crash
)

More by Otis Redding